.
This commit is contained in:
+15
-10
@@ -4,8 +4,8 @@ use crate::schema::Schema;
|
||||
use std::path::PathBuf;
|
||||
use tantivy::collector::TopDocs;
|
||||
use tantivy::directory::{ManagedDirectory, MmapDirectory};
|
||||
use tantivy::query::{BooleanQuery, Occur, QueryParser};
|
||||
use tantivy::schema::{Field, Value};
|
||||
use tantivy::query::{BooleanQuery, Occur, QueryParser, TermQuery};
|
||||
use tantivy::schema::{Field, IndexRecordOption, Value};
|
||||
use tantivy::tokenizer::{NgramTokenizer, TokenizerManager};
|
||||
use tantivy::{Index, IndexReader, IndexWriter, ReloadPolicy, TantivyDocument, Term};
|
||||
|
||||
@@ -79,19 +79,24 @@ impl SearchIndex {
|
||||
|
||||
pub fn query(
|
||||
&self,
|
||||
_type_: u64,
|
||||
type_: Option<u64>,
|
||||
user_query: &str,
|
||||
default_fields: Vec<Field>,
|
||||
) -> error::Result<Vec<String>> {
|
||||
//let doc_type_term = Term::from_field_u64(Schema::type_field(), type_);
|
||||
//let doc_type_query = Box::new(TermQuery::new(doc_type_term, IndexRecordOption::Basic));
|
||||
|
||||
let parser = QueryParser::for_index(&self.index, default_fields);
|
||||
let (user_query, _) = parser.parse_query_lenient(user_query);
|
||||
let query = BooleanQuery::new(vec![
|
||||
//(Occur::Must, doc_type_query),
|
||||
(Occur::Must, user_query),
|
||||
]);
|
||||
|
||||
let mut subqueries = vec![
|
||||
(Occur::Must, user_query)
|
||||
];
|
||||
|
||||
if let Some(type_) = type_ {
|
||||
let doc_type_term = Term::from_field_u64(Schema::type_field(), type_);
|
||||
let doc_type_query = Box::new(TermQuery::new(doc_type_term, IndexRecordOption::Basic));
|
||||
subqueries.push((Occur::Must, doc_type_query));
|
||||
}
|
||||
|
||||
let query = BooleanQuery::new(subqueries);
|
||||
let searcher = self.reader.searcher();
|
||||
let results = searcher.search(&query, &TopDocs::with_limit(10000).order_by_score())?;
|
||||
let mut iris = vec![];
|
||||
|
||||
Reference in New Issue
Block a user