使用Sunburnt + Solr创建动态大小的OR查询

oyb*_*lix 4 python solr sunburnt

我正在尝试python Solr接口Sunburnt,我遇到了一个我似乎无法弄清楚的问题.从我的搜索领域,我想接受任意数量的单词,我把它放在一个数组中(例如"Music'Iron Maiden'" - > ['Music','Iron Maiden'].我已经想到了(使用shlex).

问题是ORing术语的Sunburnt语法是

    response = si.query(si.Q(tag = 'Music') | si.Q(tag = 'Iron Maiden'))
Run Code Online (Sandbox Code Playgroud)

如何迭代我的搜索词列表并最终得到类似上面的内容?或者还有其他任何我不知道的方式吗?

小智 6

你真正想做的是:

query = si.query()

for word in words:
    query |= si.Q(word)
Run Code Online (Sandbox Code Playgroud)

或者,作为一个班轮

query = reduce(operator.or_, [si.Q(word) for word in words])
Run Code Online (Sandbox Code Playgroud)