From f570fe37d491a9c5f669f45316dc8cceeb05bfe4 Mon Sep 17 00:00:00 2001 From: Paul Masurel Date: Fri, 31 Aug 2018 09:03:44 +0900 Subject: [PATCH] small changes --- examples/snippet.rs | 3 +-- src/query/automaton_weight.rs | 1 - src/query/boolean_query/boolean_weight.rs | 9 +++++++++ src/query/phrase_query/phrase_weight.rs | 6 ++++++ src/query/range_query.rs | 6 ++++++ src/snippet/mod.rs | 3 ++- 6 files changed, 24 insertions(+), 4 deletions(-) diff --git a/examples/snippet.rs b/examples/snippet.rs index 35e9e76bd..4efea1e5a 100644 --- a/examples/snippet.rs +++ b/examples/snippet.rs @@ -64,10 +64,9 @@ fn main() -> tantivy::Result<()> { for doc_address in doc_addresses { let retrieved_doc = searcher.doc(&doc_address)?; - generate_snippet(&retrieved_doc, query + // generate_snippet(&retrieved_doc, query } - Ok(()) } diff --git a/src/query/automaton_weight.rs b/src/query/automaton_weight.rs index d1040eb85..54f8c5f8b 100644 --- a/src/query/automaton_weight.rs +++ b/src/query/automaton_weight.rs @@ -41,7 +41,6 @@ impl Weight for AutomatonWeight where A: Automaton, { - fn matching_terms(&self, reader: &SegmentReader, matching_terms: &mut MatchingTerms) -> Result<()> { diff --git a/src/query/boolean_query/boolean_weight.rs b/src/query/boolean_query/boolean_weight.rs index 575bc2991..2b3348a21 100644 --- a/src/query/boolean_query/boolean_weight.rs +++ b/src/query/boolean_query/boolean_weight.rs @@ -13,6 +13,7 @@ use query::Weight; use std::borrow::Borrow; use std::collections::HashMap; use Result; +use query::MatchingTerms; fn scorer_union(scorers: Vec>) -> Box where @@ -107,6 +108,14 @@ impl BooleanWeight { } impl Weight for BooleanWeight { + + fn matching_terms(&self, reader: &SegmentReader, matching_terms: &mut MatchingTerms) -> Result<()> { + for (_, weight) in &self.weights { + weight.matching_terms(reader, matching_terms)?; + } + Ok(()) + } + fn scorer(&self, reader: &SegmentReader) -> Result> { if self.weights.is_empty() { Ok(Box::new(EmptyScorer)) diff --git a/src/query/phrase_query/phrase_weight.rs b/src/query/phrase_query/phrase_weight.rs index de8eeb0d2..fbf43db20 100644 --- a/src/query/phrase_query/phrase_weight.rs +++ b/src/query/phrase_query/phrase_weight.rs @@ -7,6 +7,7 @@ use query::Weight; use schema::IndexRecordOption; use schema::Term; use Result; +use query::MatchingTerms; pub struct PhraseWeight { phrase_terms: Vec<(usize, Term)>, @@ -30,6 +31,11 @@ impl PhraseWeight { } impl Weight for PhraseWeight { + + fn matching_terms(&self, reader: &SegmentReader, matching_terms: &mut MatchingTerms) -> Result<()> { + unimplemented!(); + } + fn scorer(&self, reader: &SegmentReader) -> Result> { let similarity_weight = self.similarity_weight.clone(); let field = self.phrase_terms[0].1.field(); diff --git a/src/query/range_query.rs b/src/query/range_query.rs index 23efe1995..2b22e7cf8 100644 --- a/src/query/range_query.rs +++ b/src/query/range_query.rs @@ -11,6 +11,7 @@ use std::collections::Bound; use std::ops::Range; use termdict::{TermDictionary, TermStreamer}; use Result; +use query::MatchingTerms; fn map_bound TTo>( bound: &Bound, @@ -274,6 +275,11 @@ impl RangeWeight { } impl Weight for RangeWeight { + + fn matching_terms(&self, reader: &SegmentReader, matching_terms: &mut MatchingTerms) -> Result<()> { + unimplemented!(); + } + fn scorer(&self, reader: &SegmentReader) -> Result> { let max_doc = reader.max_doc(); let mut doc_bitset = BitSet::with_max_value(max_doc); diff --git a/src/snippet/mod.rs b/src/snippet/mod.rs index 984c1a589..cd194e0d8 100644 --- a/src/snippet/mod.rs +++ b/src/snippet/mod.rs @@ -200,6 +200,7 @@ fn matching_terms(query: &Query, searcher: &Searcher, doc_addresses: &[DocAddres let segment_reader = searcher.segment_reader(segment_ord); weight.matching_terms(segment_reader, &mut matching_terms)?; } + let terms = HashSet<(DocId, Vec)>; Ok(()) } @@ -209,7 +210,7 @@ pub fn generate_snippet<'a>( query: &Query, terms: Vec, max_num_chars: usize) -> Snippet { - unimplemented!(); + search_fragments(boxed_tokenizer, &text, terms, 3); } #[cfg(test)]