@@ -280,43 +280,37 @@ def _parse_tree(self, tree: luqum.tree) -> FilterExpression:
280280 self ._last_search_field = None
281281 return parsed
282282 return self ._create_field (tree )
283- if isinstance (tree , Word ):
284- if self ._last_search_field :
285- return self ._create_field_group_expression (tree )
286- return self ._create_value_expression (tree )
287- if isinstance (tree , Phrase ):
288- if self ._last_search_field :
289- return self ._create_field_group_expression (tree )
290- return self ._create_value_expression (tree )
291- if isinstance (tree , Regex ):
292- if self ._last_search_field :
293- return self ._create_field_group_expression (tree )
283+ if isinstance (tree , (Word , Phrase , Regex )):
284+ if self ._last_search_field is not None :
285+ return self ._create_field_group_expression (tree , self ._last_search_field )
294286 return self ._create_value_expression (tree )
295287 raise LuceneFilterError (f'The expression "{ str (tree )} " is invalid!' )
296288
297- def _create_field_group_expression (self , tree : luqum .tree ) -> FilterExpression :
289+ def _create_field_group_expression (
290+ self , tree : luqum .tree , dotted_field : str
291+ ) -> FilterExpression :
298292 """Creates filter expression that is resulting from a field group.
299293
300294 Parameters
301295 ----------
302296 tree : luqum.tree
303297 luqum.tree to create field group expression from.
298+ dotted_field: str
299+ dotted_field which is treated as the key for the expression.
304300
305301 Returns
306302 -------
307303 FilterExpression
308304 Parsed filter expression.
309305
310306 """
311- assert self ._last_search_field is not None
312- key = self ._last_search_field .split ("." )
307+ key = dotted_field .split ("." )
313308 value = self ._strip_quote_from_string (tree .value )
314309 value = self ._remove_lucene_escaping (value )
315310
316311 if isinstance (tree , Regex ):
317312 return self ._get_filter_expression_regex (key , value )
318- else :
319- return self ._get_filter_expression (key , value )
313+ return self ._get_filter_expression (key , value )
320314
321315 def _collect_children (self , tree : luqum .tree ) -> list [FilterExpression ]:
322316 expressions = []
0 commit comments