mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-05-31 20:30:37 +00:00
feat: impl vector index query (#7564)
* feat: impl vector index query Signed-off-by: Dennis Zhuang <killme2008@gmail.com> * feat: remove VectorSearchRule and merge it into scan hint rule Signed-off-by: Dennis Zhuang <killme2008@gmail.com> * refactor: vector search hint Signed-off-by: Dennis Zhuang <killme2008@gmail.com> * test: join and subquery Signed-off-by: Dennis Zhuang <killme2008@gmail.com> * fix: clippy when feature disabled Signed-off-by: Dennis Zhuang <killme2008@gmail.com> * fix: push hint only when column is non-nullable or an explicit IS NOT NULL filter exists Signed-off-by: Dennis Zhuang <killme2008@gmail.com> * fix: transformed = true Co-authored-by: Yingwen <realevenyag@gmail.com> Signed-off-by: Dennis Zhuang <killme2008@gmail.com> * chore: remove adpater vector hint Signed-off-by: Dennis Zhuang <killme2008@gmail.com> * chore: revert transformed Signed-off-by: Dennis Zhuang <killme2008@gmail.com> --------- Signed-off-by: Dennis Zhuang <killme2008@gmail.com> Co-authored-by: Yingwen <realevenyag@gmail.com>
This commit is contained in:
@@ -165,6 +165,8 @@ pub(crate) struct ScanMetricsSet {
|
||||
rows_bloom_filtered: usize,
|
||||
/// Number of rows filtered by vector index.
|
||||
rows_vector_filtered: usize,
|
||||
/// Number of rows selected by vector index.
|
||||
rows_vector_selected: usize,
|
||||
/// Number of rows filtered by precise filter.
|
||||
rows_precise_filtered: usize,
|
||||
/// Number of index result cache hits for fulltext index.
|
||||
@@ -291,6 +293,7 @@ impl fmt::Debug for ScanMetricsSet {
|
||||
rows_inverted_filtered,
|
||||
rows_bloom_filtered,
|
||||
rows_vector_filtered,
|
||||
rows_vector_selected,
|
||||
rows_precise_filtered,
|
||||
fulltext_index_cache_hit,
|
||||
fulltext_index_cache_miss,
|
||||
@@ -384,6 +387,9 @@ impl fmt::Debug for ScanMetricsSet {
|
||||
if *rows_vector_filtered > 0 {
|
||||
write!(f, ", \"rows_vector_filtered\":{rows_vector_filtered}")?;
|
||||
}
|
||||
if *rows_vector_selected > 0 {
|
||||
write!(f, ", \"rows_vector_selected\":{rows_vector_selected}")?;
|
||||
}
|
||||
if *rows_precise_filtered > 0 {
|
||||
write!(f, ", \"rows_precise_filtered\":{rows_precise_filtered}")?;
|
||||
}
|
||||
@@ -600,6 +606,7 @@ impl ScanMetricsSet {
|
||||
rows_inverted_filtered,
|
||||
rows_bloom_filtered,
|
||||
rows_vector_filtered,
|
||||
rows_vector_selected,
|
||||
rows_precise_filtered,
|
||||
fulltext_index_cache_hit,
|
||||
fulltext_index_cache_miss,
|
||||
@@ -636,6 +643,7 @@ impl ScanMetricsSet {
|
||||
self.rows_inverted_filtered += *rows_inverted_filtered;
|
||||
self.rows_bloom_filtered += *rows_bloom_filtered;
|
||||
self.rows_vector_filtered += *rows_vector_filtered;
|
||||
self.rows_vector_selected += *rows_vector_selected;
|
||||
self.rows_precise_filtered += *rows_precise_filtered;
|
||||
|
||||
self.fulltext_index_cache_hit += *fulltext_index_cache_hit;
|
||||
|
||||
@@ -979,6 +979,7 @@ impl ParquetReaderBuilder {
|
||||
return;
|
||||
}
|
||||
};
|
||||
metrics.rows_vector_selected += selection.row_count();
|
||||
apply_selection_and_update_metrics(output, &selection, metrics, INDEX_TYPE_VECTOR);
|
||||
}
|
||||
|
||||
@@ -1229,6 +1230,8 @@ pub(crate) struct ReaderFilterMetrics {
|
||||
pub(crate) rows_bloom_filtered: usize,
|
||||
/// Number of rows filtered by vector index.
|
||||
pub(crate) rows_vector_filtered: usize,
|
||||
/// Number of rows selected by vector index.
|
||||
pub(crate) rows_vector_selected: usize,
|
||||
/// Number of rows filtered by precise filter.
|
||||
pub(crate) rows_precise_filtered: usize,
|
||||
|
||||
@@ -1268,6 +1271,7 @@ impl ReaderFilterMetrics {
|
||||
self.rows_inverted_filtered += other.rows_inverted_filtered;
|
||||
self.rows_bloom_filtered += other.rows_bloom_filtered;
|
||||
self.rows_vector_filtered += other.rows_vector_filtered;
|
||||
self.rows_vector_selected += other.rows_vector_selected;
|
||||
self.rows_precise_filtered += other.rows_precise_filtered;
|
||||
|
||||
self.fulltext_index_cache_hit += other.fulltext_index_cache_hit;
|
||||
|
||||
Reference in New Issue
Block a user