我想写一个Lucene查询,它等同于以下SQL
where age = 25
and name in ("tom", "dick", "harry")
到目前为止,我提出的最好的是:
(age:25 name:tom) OR
(age:25 name:dick) OR
(age:25 name:harry)
有没有更简洁的方式来写这个?
谢谢, 唐
答案 0 :(得分:9)
age:25 AND name:(tom OR dick OR harry)
替代地
+age:25 +name:(tom OR dick OR harry)
答案 1 :(得分:4)
这有用吗?
age:25 AND (name:tom OR name:dick OR name:harry)
我知道这可能不是你想要的。我不知道你的问题的目的是分解age:25
条款还是消除name:
前缀。
如果您将name
设置为QueryParser
的默认字段,则可以将其降低为:
age:25 AND (tom OR dick OR harry)
答案 2 :(得分:1)
它不是更简洁,但你可以尝试:
(age:25) AND (name:tom OR name:dick OR name:harry)