Lucene查询语法

时间:2009-07-24 14:14:31

标签: lucene

我想写一个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) 

有没有更简洁的方式来写这个?

谢谢, 唐

3 个答案:

答案 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)