Pārlūkot izejas kodu

[webgraph] apply column filters in HostGroupSketchQuery

Mikkel Denker 9 mēneši atpakaļ
vecāks
revīzija
444ef9fdce

+ 6 - 0
crates/core/src/webgraph/query/filter/rel_flag.rs

@@ -26,6 +26,12 @@ use super::{ColumnFieldFilter, Filter, FilterEnum, InvertedIndexFilter, SegmentC
 #[derive(Debug, Clone, bincode::Encode, bincode::Decode)]
 #[derive(Debug, Clone, bincode::Encode, bincode::Decode)]
 pub struct RelFlagsFilter(RelFlags);
 pub struct RelFlagsFilter(RelFlags);
 
 
+impl From<RelFlags> for RelFlagsFilter {
+    fn from(rel_flags: RelFlags) -> Self {
+        RelFlagsFilter(rel_flags)
+    }
+}
+
 impl Filter for RelFlagsFilter {
 impl Filter for RelFlagsFilter {
     fn column_field_filter(&self) -> Option<Box<dyn ColumnFieldFilter>> {
     fn column_field_filter(&self) -> Option<Box<dyn ColumnFieldFilter>> {
         Some(Box::new(RelFlagsColumnFieldFilter(self.0)))
         Some(Box::new(RelFlagsColumnFieldFilter(self.0)))

+ 8 - 2
crates/core/src/webgraph/query/group_by.rs

@@ -123,8 +123,14 @@ impl Query for HostGroupSketchQuery {
     }
     }
 
 
     fn collector(&self, searcher: &crate::webgraph::searcher::Searcher) -> Self::Collector {
     fn collector(&self, searcher: &crate::webgraph::searcher::Searcher) -> Self::Collector {
-        GroupSketchCollector::new(self.group, self.value)
-            .with_column_fields(searcher.warmed_column_fields().clone())
+        let mut collector = GroupSketchCollector::new(self.group, self.value)
+            .with_column_fields(searcher.warmed_column_fields().clone());
+
+        if let Some(filter) = self.filter_as_and().and_then(|f| f.column_field_filter()) {
+            collector = collector.with_filter(filter);
+        }
+
+        collector
     }
     }
 
 
     fn remote_collector(&self) -> Self::Collector {
     fn remote_collector(&self) -> Self::Collector {