Source code for pandagg.node.query.compound

from pandagg.node.query.abstract import QueryClause


[docs]class CompoundClause(QueryClause): """ Compound clauses can encapsulate other query clauses: .. code-block:: { "<query_type>" : { <query_body> <children_clauses> } } """ _default_operator = None # key -> multiple / single _parent_params = {} def __init__(self, _name=None, **body): b = body.copy() children = {} for param in self._parent_params: v = b.pop(param, None) if not v: continue children[param] = v if isinstance(v, list) else [v] super(CompoundClause, self).__init__( _name=_name, accept_children=True, keyed=True, _children=children, **b )
[docs]class Bool(CompoundClause): """ >>> Bool(must=[], should=[], filter=[], must_not=[], boost=1.2) """ _default_operator = "must" _parent_params = {"should": True, "must": True, "must_not": True, "filter": True} KEY = "bool"
[docs]class Boosting(CompoundClause): _default_operator = "positive" _parent_params = ["positive", "negative"] KEY = "boosting"
[docs]class ConstantScore(CompoundClause): _default_operator = "filter" _parent_params = ["filter", "boost"] KEY = "constant_score"
[docs]class DisMax(CompoundClause): _default_operator = "queries" _parent_params = ["queries"] KEY = "dis_max"
[docs]class FunctionScore(CompoundClause): _default_operator = "query" _parent_params = ["query"] KEY = "function_score"