From 3cee29ab3d28f19598d56deae1f80492cd22f044 Mon Sep 17 00:00:00 2001 From: Sascha Silbe Date: Sun, 19 Jul 2009 11:40:32 +0000 Subject: add support for prefixes in Xapian queries --- diff --git a/src/carquinyol/indexstore.py b/src/carquinyol/indexstore.py index 8c3980f..1c1a2a2 100644 --- a/src/carquinyol/indexstore.py +++ b/src/carquinyol/indexstore.py @@ -201,28 +201,33 @@ class IndexStore(object): self._queryValueMap[m_name], str(m_value), str(m_value)) + def _parse_query_xapian(self, query_str) : + # TODO: (re)use long-living instance of QueryParser + query_parser = QueryParser() + query_parser.set_database(self._database) + #query_parser.set_default_op(Query.OP_AND) + + # TODO: we should do stemming, but in which language? + #query_parser.set_stemmer(_xapian.Stem(lang)) + #query_parser.set_stemming_strategy(qp.STEM_SOME) + + for (m_name, prefix) in self._queryTermMap.items() : + query_parser.add_prefix(m_name, prefix) + + return query_parser.parse_query( + query_str, + QueryParser.FLAG_PHRASE | + QueryParser.FLAG_BOOLEAN | + QueryParser.FLAG_LOVEHATE | + QueryParser.FLAG_WILDCARD, + '') + def _parse_query(self, query_dict, query_str): logging.debug('_parse_query %r' % query_dict) queries = [] if query_str: - query_parser = QueryParser() - query_parser.set_database(self._database) - #query_parser.set_default_op(Query.OP_AND) - - # TODO: we should do stemming, but in which language? - #query_parser.set_stemmer(_xapian.Stem(lang)) - #query_parser.set_stemming_strategy(qp.STEM_SOME) - - query = query_parser.parse_query( - query_str, - QueryParser.FLAG_PHRASE | - QueryParser.FLAG_BOOLEAN | - QueryParser.FLAG_LOVEHATE | - QueryParser.FLAG_WILDCARD, - '') - - queries.append(query) + queries.append(self._parse_query_xapian(query_str)) # construct queries for term-stored metadata queries += [ -- cgit v0.9.1