Esempio n. 1
0
 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
Esempio n. 2
0
 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
Esempio n. 3
0
 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
Esempio n. 4
0
 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