Search

Project

PlusNexus

Enterprise-grade intelligent search framework with LLM-powered query planning, multi-source data federation, and zero-hardcoding extensibility.

Statusproduction

PlusNexus is an enterprise-level intelligent search framework that accepts natural language queries and returns structured, explainable results through a full pipeline of LLM-powered planning, dual-engine parsing, multi-source federation, and dynamic query execution.

Query Planning

  • LLM-driven plan decomposition: Complex queries are decomposed into AND/OR/NOT logic plan trees, with each SEARCH leaf representing an independently executable sub-query
  • PlanCache: Identical query plans are cached, eliminating redundant LLM calls and reducing latency
  • Generalized tree semantics: Supports arbitrary nesting — AND of ORs, NOT subtrees, and hybrid combinations — all executed concurrently

Structured Extraction

  • Dual-engine parsing: LLM NER (primary) combined with regex (fallback) for extracting structured filters — enumerations, cities, numeric ranges, date intervals, and full-text tokens
  • Graceful degradation: When the LLM is unreachable, the regex engine takes over automatically, ensuring the search pipeline remains available
  • Field metadata-driven prompts: Extraction prompts are dynamically assembled from database field definitions, so new search dimensions are automatically recognized without code changes

Multi-Source Federation

  • Multi-index architecture: PRIMARY indexes for final result retrieval and ANCILLARY indexes for pre-filtering candidate sets, joined by configurable association keys
  • Intelligent pre-filtering: Only indexes with relevant conditions are activated; time-range filters do not spuriously trigger unrelated index queries
  • Short-circuit optimization: If an ancillary index returns zero candidates, the corresponding search branch is immediately terminated, avoiding wasteful full-table scans on the primary index

Dynamic Query Engine

  • Zero-hardcoding philosophy: Adding a new search dimension requires just inserting one row into the field definition table — field key, ES field name, and query type. The QueryParser and DynamicQueryBuilder pick it up automatically
  • DynamicQueryBuilder: Reads index and field metadata from the database at runtime and assembles Elasticsearch BoolQuery clauses (TERM, PREFIX, MATCH, RANGE) without any hardcoded field mappings
  • Score normalization: Min-Max normalization across multi-index results for consistent relevance ranking

Concurrent Execution

  • 4-thread pool plan executor: Logic tree nodes are evaluated concurrently — AND nodes compute intersection, OR nodes compute union, NOT nodes compute set difference
  • Early termination: AND nodes cancel remaining children as soon as one branch returns empty; OR nodes skip remaining branches once sufficient results are collected
  • Fetch optimization: Detail enrichment queries run with empty parsed conditions to avoid redundant filtering, since the plan phase has already narrowed the candidate set

Tech Stack

  • Backend: Spring Boot 2.7 + Spring Cloud Alibaba + Nacos + MyBatis-Plus + MySQL
  • Search Engine: Elasticsearch 7.17 with dynamic multi-index BoolQuery assembly
  • Inference Service: Python FastAPI providing LLM plan decomposition, entity extraction, and streaming response endpoints
  • Caching: Redis for PlanCache, ParseCache, and distributed coordination
  • Frontend: Vue 3 + TypeScript + Vite management console

Want to see more?

Check out my other projects or get in touch for collaboration.

PLUSZZZ*ZHANGJIA*