This is an automated email from the ASF dual-hosted git repository.
twice pushed a commit to branch unstable
in repository https://gitbox.apache.org/repos/asf/kvrocks.git
The following commit(s) were added to refs/heads/unstable by this push:
new b8788bc6 chore(search): update README to add some references for KQIR
(#2581)
b8788bc6 is described below
commit b8788bc693e1ff40a21a16d17fd72a58cb0606d3
Author: Twice <[email protected]>
AuthorDate: Sat Oct 5 23:20:14 2024 +0800
chore(search): update README to add some references for KQIR (#2581)
---
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)