mirror of
https://github.com/quickwit-oss/tantivy.git
synced 2026-05-31 07:30:39 +00:00
Disconnected facet / fast field merges / examples
This commit is contained in:
@@ -15,7 +15,7 @@ mod more_like_this;
|
||||
mod phrase_query;
|
||||
mod query;
|
||||
mod query_parser;
|
||||
mod range_query;
|
||||
// mod range_query;
|
||||
mod regex_query;
|
||||
mod reqopt_scorer;
|
||||
mod scorer;
|
||||
@@ -50,7 +50,7 @@ pub use self::more_like_this::{MoreLikeThisQuery, MoreLikeThisQueryBuilder};
|
||||
pub use self::phrase_query::PhraseQuery;
|
||||
pub use self::query::{EnableScoring, Query, QueryClone};
|
||||
pub use self::query_parser::{QueryParser, QueryParserError};
|
||||
pub use self::range_query::RangeQuery;
|
||||
// pub use self::range_query::RangeQuery;
|
||||
pub use self::regex_query::RegexQuery;
|
||||
pub use self::reqopt_scorer::RequiredOptionalScorer;
|
||||
pub use self::score_combiner::{
|
||||
|
||||
@@ -13,10 +13,11 @@ use crate::core::Index;
|
||||
use crate::indexer::{
|
||||
convert_to_fast_value_and_get_term, set_string_and_get_terms, JsonTermWriter,
|
||||
};
|
||||
use crate::query::range_query::is_type_valid_for_fastfield_range_query;
|
||||
// use crate::query::range_query::is_type_valid_for_fastfield_range_query;
|
||||
use crate::query::{
|
||||
AllQuery, BooleanQuery, BoostQuery, EmptyQuery, FuzzyTermQuery, Occur, PhraseQuery, Query,
|
||||
RangeQuery, TermQuery, TermSetQuery,
|
||||
// RangeQuery,
|
||||
TermQuery, TermSetQuery,
|
||||
};
|
||||
use crate::schema::{
|
||||
Facet, FacetParseError, Field, FieldType, IndexRecordOption, IntoIpv6Addr, JsonObjectOptions,
|
||||
@@ -334,6 +335,8 @@ impl QueryParser {
|
||||
json_path: &str,
|
||||
phrase: &str,
|
||||
) -> Result<Term, QueryParserError> {
|
||||
todo!();
|
||||
/*
|
||||
let field_entry = self.schema.get_field_entry(field);
|
||||
let field_type = field_entry.field_type();
|
||||
let field_supports_ff_range_queries = field_type.is_fast()
|
||||
@@ -417,6 +420,7 @@ impl QueryParser {
|
||||
Ok(Term::from_field_ip_addr(field, ip_v6))
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
fn compute_logical_ast_for_leaf(
|
||||
@@ -740,9 +744,11 @@ fn convert_literal_to_query(
|
||||
value_type,
|
||||
lower,
|
||||
upper,
|
||||
} => Box::new(RangeQuery::new_term_bounds(
|
||||
field, value_type, &lower, &upper,
|
||||
)),
|
||||
} => { todo!();
|
||||
// Box::new(RangeQuery::new_term_bounds(
|
||||
// field, value_type, &lower, &upper,
|
||||
// ))
|
||||
} ,
|
||||
LogicalLiteral::Set { elements, .. } => Box::new(TermSetQuery::new(elements)),
|
||||
LogicalLiteral::All => Box::new(AllQuery),
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ use std::sync::Arc;
|
||||
|
||||
use fastfield_codecs::Column;
|
||||
|
||||
use crate::fastfield::{MakeZero, MultiValuedFastFieldReader};
|
||||
use crate::fastfield::MakeZero;
|
||||
use crate::{DocId, DocSet, TERMINATED};
|
||||
|
||||
/// Helper to have a cursor over a vec of docids
|
||||
|
||||
@@ -8,10 +8,13 @@ use std::ops::{Bound, RangeInclusive};
|
||||
use common::BinarySerializable;
|
||||
use fastfield_codecs::MonotonicallyMappableToU128;
|
||||
|
||||
use super::fast_field_range_query::{FastFieldCardinality, RangeDocSet};
|
||||
use super::range_query::map_bound;
|
||||
use crate::query::{ConstScorer, Explanation, Scorer, Weight};
|
||||
<<<<<<< HEAD
|
||||
use crate::schema::Cardinality;
|
||||
=======
|
||||
use crate::schema::Field;
|
||||
>>>>>>> fd1deefd12 (Disconnected facet / fast field merges / examples)
|
||||
use crate::{DocId, DocSet, Score, SegmentReader, TantivyError};
|
||||
|
||||
/// `IPFastFieldRangeWeight` uses the ip address fast field to execute range queries.
|
||||
@@ -40,6 +43,7 @@ impl IPFastFieldRangeWeight {
|
||||
|
||||
impl Weight for IPFastFieldRangeWeight {
|
||||
fn scorer(&self, reader: &SegmentReader, boost: Score) -> crate::Result<Box<dyn Scorer>> {
|
||||
<<<<<<< HEAD
|
||||
let field_type = reader
|
||||
.schema()
|
||||
.get_field_entry(reader.schema().get_field(&self.field)?)
|
||||
@@ -74,6 +78,40 @@ impl Weight for IPFastFieldRangeWeight {
|
||||
Ok(Box::new(ConstScorer::new(docset, boost)))
|
||||
}
|
||||
}
|
||||
=======
|
||||
todo!();
|
||||
// let field_type = reader.schema().get_field_entry(self.field).field_type();
|
||||
// match field_type.fastfield_cardinality().unwrap() {
|
||||
// Cardinality::SingleValue => {
|
||||
// let ip_addr_fast_field = reader.fast_fields().ip_addr(self.field)?;
|
||||
// let value_range = bound_to_value_range(
|
||||
// &self.left_bound,
|
||||
// &self.right_bound,
|
||||
// ip_addr_fast_field.min_value(),
|
||||
// ip_addr_fast_field.max_value(),
|
||||
// );
|
||||
// let docset = RangeDocSet::new(
|
||||
// value_range,
|
||||
// FastFieldCardinality::SingleValue(ip_addr_fast_field),
|
||||
// );
|
||||
// Ok(Box::new(ConstScorer::new(docset, boost)))
|
||||
// }
|
||||
// Cardinality::MultiValues => {
|
||||
// let ip_addr_fast_field = reader.fast_fields().ip_addrs(self.field)?;
|
||||
// let value_range = bound_to_value_range(
|
||||
// &self.left_bound,
|
||||
// &self.right_bound,
|
||||
// ip_addr_fast_field.min_value(),
|
||||
// ip_addr_fast_field.max_value(),
|
||||
// );
|
||||
// let docset = RangeDocSet::new(
|
||||
// value_range,
|
||||
// FastFieldCardinality::MultiValue(ip_addr_fast_field),
|
||||
// );
|
||||
// Ok(Box::new(ConstScorer::new(docset, boost)))
|
||||
// }
|
||||
// }
|
||||
>>>>>>> fd1deefd12 (Disconnected facet / fast field merges / examples)
|
||||
}
|
||||
|
||||
fn explain(&self, reader: &SegmentReader, doc: DocId) -> crate::Result<Explanation> {
|
||||
|
||||
@@ -6,10 +6,14 @@ use std::ops::{Bound, RangeInclusive};
|
||||
|
||||
use fastfield_codecs::MonotonicallyMappableToU64;
|
||||
|
||||
use super::fast_field_range_query::{FastFieldCardinality, RangeDocSet};
|
||||
use super::fast_field_range_query::RangeDocSet;
|
||||
use super::range_query::map_bound;
|
||||
use crate::query::{ConstScorer, Explanation, Scorer, Weight};
|
||||
<<<<<<< HEAD
|
||||
use crate::schema::Cardinality;
|
||||
=======
|
||||
use crate::schema::Field;
|
||||
>>>>>>> fd1deefd12 (Disconnected facet / fast field merges / examples)
|
||||
use crate::{DocId, DocSet, Score, SegmentReader, TantivyError};
|
||||
|
||||
/// `FastFieldRangeWeight` uses the fast field to execute range queries.
|
||||
@@ -33,6 +37,7 @@ impl FastFieldRangeWeight {
|
||||
|
||||
impl Weight for FastFieldRangeWeight {
|
||||
fn scorer(&self, reader: &SegmentReader, boost: Score) -> crate::Result<Box<dyn Scorer>> {
|
||||
<<<<<<< HEAD
|
||||
let field_type = reader
|
||||
.schema()
|
||||
.get_field_entry(reader.schema().get_field(&self.field)?)
|
||||
@@ -63,6 +68,36 @@ impl Weight for FastFieldRangeWeight {
|
||||
Ok(Box::new(ConstScorer::new(docset, boost)))
|
||||
}
|
||||
}
|
||||
=======
|
||||
todo!();
|
||||
// let field_type = reader.schema().get_field_entry(self.field).field_type();
|
||||
// match field_type.fastfield_cardinality().unwrap() {
|
||||
// Cardinality::SingleValue => {
|
||||
// let fast_field = reader.fast_fields().u64_lenient(self.field)?;
|
||||
// let value_range = bound_to_value_range(
|
||||
// &self.left_bound,
|
||||
// &self.right_bound,
|
||||
// fast_field.min_value(),
|
||||
// fast_field.max_value(),
|
||||
// );
|
||||
// let docset =
|
||||
// RangeDocSet::new(value_range, FastFieldCardinality::SingleValue(fast_field));
|
||||
// Ok(Box::new(ConstScorer::new(docset, boost)))
|
||||
// }
|
||||
// Cardinality::MultiValues => {
|
||||
// let fast_field = reader.fast_fields().u64s_lenient(self.field)?;
|
||||
// let value_range = bound_to_value_range(
|
||||
// &self.left_bound,
|
||||
// &self.right_bound,
|
||||
// fast_field.min_value(),
|
||||
// fast_field.max_value(),
|
||||
// );
|
||||
// let docset =
|
||||
// RangeDocSet::new(value_range, FastFieldCardinality::MultiValue(fast_field));
|
||||
// Ok(Box::new(ConstScorer::new(docset, boost)))
|
||||
// }
|
||||
// }
|
||||
>>>>>>> fd1deefd12 (Disconnected facet / fast field merges / examples)
|
||||
}
|
||||
|
||||
fn explain(&self, reader: &SegmentReader, doc: DocId) -> crate::Result<Explanation> {
|
||||
|
||||
Reference in New Issue
Block a user