mirror of
https://gitee.com/milvus-io/milvus.git
synced 2026-01-07 19:31:51 +08:00
issue: #29892 This PR 1. Pass Materialized View (MV) search information obtained from the expression parsing planning procedure to Knowhere. It only performs when MV is enabled and the partition key is involved in the expression. The search information includes: 1. Touched field_id and the count of related categories in the expression. E.g., `color == red && color == blue` yields `field_id -> 2`. 2. Whether the expression only includes AND (&&) logical operator, default `true`. 3. Whether the expression has NOT (!) operator, default `false`. 4. Store if turning on MV on the proxy to eliminate reading from paramtable for every search request. 5. Renames to MV. ## Rebuttals 1. Did not write in `ExtractInfoPlanNodeVisitor` since the new scalar framework was introduced and this part might be removed in the future. 2. Currently only interested in `==` and `in` expression, `string` data type, anything else is a bonus. 3. Leave handling expressions like `F == A || F == A` for future works of the optimizer. ## Detailed MV Info  Signed-off-by: Patrick Weizhi Xu <weizhi.xu@zilliz.com>
41 lines
1.3 KiB
C++
41 lines
1.3 KiB
C++
// Licensed to the LF AI & Data foundation under one
|
|
// or more contributor license agreements. See the NOTICE file
|
|
// distributed with this work for additional information
|
|
// regarding copyright ownership. The ASF licenses this file
|
|
// to you under the Apache License, Version 2.0 (the
|
|
// "License"); you may not use this file except in compliance
|
|
// with the License. You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
#pragma once
|
|
|
|
#include <memory>
|
|
|
|
#include "common/Tracer.h"
|
|
#include "common/Types.h"
|
|
#include "knowhere/config.h"
|
|
|
|
namespace milvus {
|
|
|
|
struct SearchInfo {
|
|
int64_t topk_;
|
|
int64_t round_decimal_;
|
|
FieldId field_id_;
|
|
MetricType metric_type_;
|
|
knowhere::Json search_params_;
|
|
std::optional<FieldId> group_by_field_id_;
|
|
tracer::TraceContext trace_ctx_;
|
|
bool materialized_view_involved = false;
|
|
};
|
|
|
|
using SearchInfoPtr = std::shared_ptr<SearchInfo>;
|
|
|
|
} // namespace milvus
|