def _processSearchValue(self, search_value, logical_operator, comparison_operator): """ Special SearchValue processor for FullText queries: if a searched value from 'match' operator group contains an operator recognised in boolean mode, make the operator for that value be 'match_boolean'. """ operator_value_dict, logical_operator, parsed = \ super(FullTextKey, self)._processSearchValue( search_value, logical_operator, comparison_operator) new_value_list = [] append = new_value_list.append for value in operator_value_dict.pop('match', []): if isinstance(value, basestring) and \ FULLTEXT_BOOLEAN_DETECTOR.match(value) is not None: operator_value_dict.setdefault('match_boolean', []).append(value) else: append(value) if len(new_value_list): if 'match_boolean' in operator_value_dict: # use boolean mode for all expressions operator_value_dict['match_boolean'].extend(new_value_list) else: operator_value_dict['match'] = new_value_list # Dequote for non full-text queries. for comparison_operator, value_list in operator_value_dict.iteritems(): if comparison_operator not in ('match', 'match_boolean'): operator_value_dict[comparison_operator] = [ isinstance(value, basestring) and dequote(value) or value for value in value_list ] return operator_value_dict, logical_operator, parsed
def _processSearchValue(self, search_value, logical_operator, comparison_operator): operator_value_dict, logical_operator, parsed = \ super(MroongaFullTextKey, self)._processSearchValue( search_value, logical_operator, comparison_operator) # Dequote for non full-text queries. for comparison_operator, value_list in operator_value_dict.iteritems(): if comparison_operator not in ('mroonga', 'mroonga_boolean'): operator_value_dict[comparison_operator] = [ isinstance(value, basestring) and dequote(value) or value for value in value_list ] return operator_value_dict, logical_operator, parsed