如何使用两个或更多“in”子句构建lucene查询

时间:2011-07-08 17:47:49

标签: lucene

我在Lucene的文档(solr,真的)有几个字段,我们称之为textField1,numField1,numField2。

我的应用程序将包含word1 textField需要查询的搜索字词列表,numField1的数字列表list1和numField2的另一个数字list2列表。

我想创建一个执行此操作的Lucene查询:

textField matches one or more words in words1
AND either (
    numfield1 is one of the values in list1 OR
    numfield2 is one of the values in list2)

我正在尝试使用BooleanQuery来构建查询,但我不确定如何做到这一点。似乎AND和OR布尔操作映射到BooleanClause.Occurs中的不同枚举,但我无法从文档中收集它们如何相互映射。

2 个答案:

答案 0 :(得分:2)

我建议您获取Luke并使用它,直到您确定您的查询正确并带回您想要的内容。

完成后,您可以查看parsed query(提示:点击解释结构),它将显示BooleanQueries的堆叠方式。

请确保使用的是与用于索引文档相同的分析器。

答案 1 :(得分:0)

你应该使用

  

textfieldl1:words1 AND(list1:numfield1 OR list1:numfield2)