code: def parse_query(self, query_string):
          
          if query_string == '*':
              return xapian.Query('')  # Match everything
          elif query_string == '':
              return xapian.Query()  # Match nothing
  
          qp = xapian.QueryParser()
          qp.set_database(self._database())
          qp.set_stemmer(xapian.Stem(self.language))
          qp.set_stemming_strategy(self.stemming_strategy)
          qp.set_default_op(XAPIAN_OPTS[DEFAULT_OPERATOR])
          qp.add_boolean_prefix(DJANGO_CT, TERM_PREFIXES[DJANGO_CT])
  
          for field_dict in self.schema:
              # since 'django_ct' has a boolean_prefix,
              # we ignore it here.
              if field_dict['field_name'] == DJANGO_CT:
                  continue
  
              qp.add_prefix(
                  field_dict['field_name'],
                  TERM_PREFIXES['field'] + field_dict['field_name'].upper()
              )
  
          vrp = XHValueRangeProcessor(self)
          qp.add_valuerangeprocessor(vrp)
  
          return qp.parse_query(query_string, self.flags)
docs: Given a `query_string`, will attempt to return a xapian.Query
  
          Required arguments:
              ``query_string`` -- A query string to parse
  
          Returns a xapian.Query