milvus/docs/design_docs/segcore/visitor.md
Xiaofan 0ab1f597ae
[skip ci] Refine vistor.md (#9176)
Signed-off-by: xiaofan-luan <xiaofan.luan@zilliz.com>
2021-10-04 08:26:32 +08:00

1.1 KiB
Raw Blame History

Visitor Pattern

Visitor Pattern is used in segcore for parse and execute Execution Plan.

  1. Inside ${core}/src/query/PlanNode.h, contains physical plan for vector search
    1. FloatVectorANNS FloatVector search execution node
    2. BinaryVectorANNS BinaryVector search execution node
  2. ${core}/src/query/Expr.h contains physical plan for scalar expression
    1. TermExpr support operation like col in [1, 2, 3]
    2. RangeExpr support constant compare with data column like a >= 5 1 < b < 2
    3. CompareExpr support compare with different columns, like a < b
    4. LogicalBinaryExpr support and/or
    5. LogicalUnaryExpr support not

Currently , under ${core/query/visitors} directory, there are following visitors

  1. ShowPlanNodeVisitor print PlanNode in json
  2. ShowExprVisitor Expr -> json
  3. Verify...Visitor validate ...
  4. ExtractInfo...Visitor extract info from... including involved_fields and else
  5. ExecExprVisitor Generate bitmask according to expression
  6. ExecPlanNodeVistor physical plan executor, for now only support ANNS node.