Skip to content

Commit

Permalink
Simplify parse query facets format
Browse files Browse the repository at this point in the history
  • Loading branch information
bloodbare committed May 26, 2020
1 parent 79e661c commit 5a1af80
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 45 deletions.
43 changes: 0 additions & 43 deletions src/index.rs
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,6 @@ impl Index {
&self,
query: &str,
default_field_names: Option<Vec<String>>,
filters: Option<&PyDict>,
) -> PyResult<Query> {
let mut default_fields = vec![];
let schema = self.index.schema();
Expand Down Expand Up @@ -338,48 +337,6 @@ impl Index {
tv::query::QueryParser::for_index(&self.index, default_fields);
let query = parser.parse_query(query).map_err(to_pyerr)?;

if let Some(filters_dict) = filters {
let mut query_vec = Vec::new();
query_vec.push((tv::query::Occur::Must, query));
for key_value_any in filters_dict.items() {
if let Ok(key_value) = key_value_any.downcast::<PyTuple>() {
if key_value.len() != 2 {
continue;
}
let key: String = key_value.get_item(0).extract()?;
let field = schema.get_field(&key).ok_or_else(|| {
exceptions::ValueError::py_err(format!(
"Field `{}` is not defined in the schema.",
key
))
})?;

if let Ok(value_list) =
key_value.get_item(1).downcast::<PyList>()
{
for value_element in value_list {
if let Ok(s) = value_element.extract::<String>() {
let facet = tv::schema::Facet::from_text(&s);
let term =
tv::schema::Term::from_facet(field, &facet);
let term_query = tv::query::TermQuery::new(
term,
tv::schema::IndexRecordOption::Basic,
);
let query: Box<dyn tv::query::Query> =
Box::new(term_query);
query_vec.push((tv::query::Occur::Must, query));
}
}
}
}
}
let boolean_query = tv::query::BooleanQuery::from(query_vec);
return Ok(Query {
inner: Box::new(boolean_query),
});
}

Ok(Query { inner: query })
}
}
4 changes: 2 additions & 2 deletions tests/tantivy_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,13 +129,13 @@ def test_and_query_parser_default_fields_undefined(self, ram_index):

def test_and_query_parser_default_fields_facets(self, ram_index):
index = ram_index
query = index.parse_query("old", default_field_names=["title", "body"], filters={"facet": ["/mytag"]})
query = index.parse_query("old +facet:/mytag", default_field_names=["title", "body"])
# look for an intersection of documents
searcher = index.searcher()
result = searcher.search(query, 10)
assert result.count == 1

query = index.parse_query("old", default_field_names=["title", "body"], filters={"facet": ["/wrongtag"]})
query = index.parse_query("old +facet:/wrong", default_field_names=["title", "body"])
# look for an intersection of documents
searcher = index.searcher()
result = searcher.search(query, 10)
Expand Down

0 comments on commit 5a1af80

Please sign in to comment.