Exemple #1
0
 def _luceneQuery(self, prefix, sets=None, setsMask=None, partition=None):
     query = BooleanQuery()
     if prefix:
         query.add(TermQuery(Term(PREFIX_FIELD, prefix)), BooleanClause.Occur.MUST)
     if sets:
         setQuery = BooleanQuery()
         for setSpec in sets:
             setQuery.add(TermQuery(Term(SETS_FIELD, setSpec)), BooleanClause.Occur.SHOULD)
         query.add(setQuery, BooleanClause.Occur.MUST)
     for set_ in setsMask or []:
         query.add(TermQuery(Term(SETS_FIELD, set_)), BooleanClause.Occur.MUST)
     if partition:
         partitionQueries = []
         for start, stop in partition.ranges():
             partitionQueries.append(NumericRangeQuery.newIntRange(HASH_FIELD, start, stop, True, False))
         if len(partitionQueries) == 1:
             pQuery = partitionQueries[0]
         else:
             pQuery = BooleanQuery()
             for q in partitionQueries:
                 pQuery.add(q, BooleanClause.Occur.SHOULD)
         query.add(pQuery, BooleanClause.Occur.MUST)
     if query.clauses().size() == 0:
         query.add(MatchAllDocsQuery(), BooleanClause.Occur.MUST)
     return query