This is an automated email from the ASF dual-hosted git repository. twice pushed a commit to branch twice/search-readme in repository https://gitbox.apache.org/repos/asf/kvrocks.git
commit 9cc28148b43c693a6efe1fbcc63d6d6985ba9de6 Author: Twice <[email protected]> AuthorDate: Sat Oct 5 22:58:27 2024 +0800 chore(search): update README to add some references for KQIR --- src/search/README.md | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/search/README.md b/src/search/README.md index 65c2bacc..022ec750 100644 --- a/src/search/README.md +++ b/src/search/README.md @@ -1,27 +1,34 @@ -## KQIR: Kvrocks Query Intermediate Representation +## KQIR (a.k.a. Kvrocks Search): Kvrocks Query Intermediate Representation Here, *KQIR* refers to both - the multiple-level *query intermediate representation* for Apache Kvrocks, and - the *architecture and toolset* for the query optimization and execution. +Note that when interacting with users, we also refer to KQIR as *Kvrocks Search* to prevent overwhelming with excessive technical information. + ### Architecture  ### Components -- User Interface: both SQL and Redis Query syntax is supported to be the frontend language of KQIR +- User Interface: both SQL and RediSearch Query syntax is supported to be the frontend language of KQIR - SQL Parser: A parser that accepts an extended subset of MySQL syntax - - Redis Query Parser: A parser that accepts [Redis query syntax](https://redis.io/docs/latest/develop/interact/search-and-query/advanced-concepts/query_syntax/) (only DIALECT 2 or greater is planned to be supported) + - Redis Query Parser: A parser that accepts [RediSearch query syntax](https://redis.io/docs/latest/develop/interact/search-and-query/advanced-concepts/query_syntax/) (only DIALECT 2 or greater is planned to be supported) - KQIR: a multiple level query intermediate representation, currently including two levels (syntactical IR and planning IR) - Syntactical IR: A high level IR that syntactically represents the query language - Planning IR: A low level IR that represents plan operators for query execution - KQIR passes: analysis and transformation procedures on KQIR - Semantic Checker: to check if there is any semantic errors in the IR - - Expression Passes: passes for query expressions, especially for logical expressions - - Numeric Passes: passes for numeric & arithmetic properties - - Plan Passes: passes on the plan operators + - Expression Passes: passes for query expressions, especially for logical/boolean expressions + - Numeric Passes: passes for numeric & arithmetic expressions utilizing math properties + - Planning Passes: passes on the plan operators for scheduling a better execution plan - Pass Manager: to manage the pass execution sequence and order - - Cost Model: to analyze the cost for the current plan, used by some plan passes -- Plan Executor: a component for query execution via iterator model + - Cost Model: to analyze the cost for the current plan, used by some planning passes +- Plan Executor: a component for query execution via the iterator model - Indexer: to perform the indexing for various types of fields during data changes + +### References + +- [KQIR: a query engine for Apache Kvrocks that supports both SQL and RediSearch queries](https://kvrocks.apache.org/blog/kqir-query-engine) +- [Index encoding format for Kvrocks Search](https://kvrocks.apache.org/community/kvrocks-search-index-encoding)
