I'm trying out the python Solr interface Sunburnt , and I've come across a little problem I can't seem to figure out. From my search field, I want to accept an arbitrary number of words which I put in an array (e.g. "Music 'Iron Maiden'" -> ['Music', 'Iron Maiden']. This I've figured out (using shlex).
The problem is that Sunburnt syntax for ORing terms is
response = si.query(si.Q(tag = 'Music') | si.Q(tag = 'Iron Maiden'))
How can I iterate over my searchword list and end up with something like the above? Or is there any other way of doing it that I'm not aware of?
What you really want to do is this:
query = si.query()
for word in words:
query |= si.Q(word)
or, as a one-liner
query = reduce(operator.or_, [si.Q(word) for word in words])