Package grassyknoll :: Package backend :: Package lucene :: Module OneOfQuery
[hide private]

Source Code for Module grassyknoll.backend.lucene.OneOfQuery

 1  from lucene import (BooleanQuery, Query, TermQuery, Term, NumberTools, 
 2                        BooleanClause) 
 3   
4 -def OneOfQuery(field, items):
5 """build an OR query for any of items in field 6 7 @arg field: name of the field to search for literals 8 @type field: string 9 10 @arg items: list of items to include. These can be L{Query}, 11 basestring or integer. 12 @type items: List 13 14 @rtype: L{BooleanQuery} 15 """ 16 q=BooleanQuery() 17 q.setMaxClauseCount(len(items)) 18 for i in items: 19 if Query.instance_(i): 20 pass 21 elif isinstance(i, basestring): 22 i=TermQuery(Term(field, i)) 23 elif isinstance(i, (int, long)): 24 i=TermQuery(Term(field, NumberTools.longToString(i))) 25 else: 26 raise TypeError, i 27 q.add(i, BooleanClause.Occur.SHOULD) 28 return q
29