1 from lucene import (BooleanQuery, Query, TermQuery, Term, NumberTools,
2 BooleanClause)
3
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