def _makeIndexAndParser(self): from zope.index.text.lexicon import Lexicon from zope.index.text.lexicon import Splitter from zope.index.text.queryparser import QueryParser lexicon = Lexicon(Splitter()) parser = QueryParser(lexicon) index = FauxIndex() return index, parser
def apply(self, querytext, start=0, count=None): parser = QueryParser(self.lexicon) tree = parser.parseQuery(querytext) results = tree.executeQuery(self.index) if results: qw = self.index.query_weight(tree.terms()) # Hack to avoid ZeroDivisionError if qw == 0: qw = 1.0 qw *= 1.0 for docid, score in six.iteritems(results): try: results[docid] = score / qw except TypeError: # We overflowed the score, perhaps wildly unlikely. # Who knows. results[docid] = 2**64 // 10 return results