fromenumimportEnumfromtypingimportAny,Optionalfrompypika.enumsimportComparatorfrompypika.termsimportBasicCriterionfrompypika.termsimportFunctionasPypikaFunctionfrompypika.termsimportTermclassComp(Comparator):# type: ignoresearch=" "classMode(Enum):NATURAL_LANGUAGE_MODE="IN NATURAL LANGUAGE MODE"NATURAL_LANGUAGE_MODE_WITH_QUERY_EXPRESSION="IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION"BOOL_MODE="IN BOOLEAN MODE"WITH_QUERY_EXPRESSION="WITH QUERY EXPANSION"classMatch(PypikaFunction):# type: ignoredef__init__(self,*columns:Term):super(Match,self).__init__("MATCH",*columns)classAgainst(PypikaFunction):# type: ignoredef__init__(self,expr:Term,mode:Optional[Mode]=None):super(Against,self).__init__("AGAINST",expr)self.mode=modedefget_special_params_sql(self,**kwargs:Any)->Any:ifnotself.mode:return""returnself.mode.value
[docs]classSearchCriterion(BasicCriterion):# type: ignore""" Only support for CharField, TextField with full search indexes. """def__init__(self,*columns:Term,expr:Term,mode:Optional[Mode]=None):super().__init__(Comp.search,Match(*columns),Against(expr,mode))