如何使用查询语法在Lucene中搜索多个字段?

时间:2011-11-28 17:25:55

标签: java lucene indexing

我正在搜索lucene索引,我正在构建像

这样的搜索查询
field1:"hello" AND field2:"world"

但我想搜索任何字段中的值以及同一查询中特定字段中的值,即

field1:"hello" AND anyField:"world"

有人能告诉我如何以这种方式搜索所有索引字段吗?

3 个答案:

答案 0 :(得分:6)

根据我对此问题的回答:Impact of repeat value across multiple fields in Lucene ...

我可以将相同的搜索词放在多个字段中,因此创建一个“all”字段,我将所有内容放入其中。这样我就可以创建一个类似的查询...

field1:"hello" AND all:"world"

这看起来效果非常好,可以避免对大量搜索查询的需求,显然性能影响很小。

答案 1 :(得分:2)

带有每个字段的子句的布尔(OR)查询用于搜索多个字段。 MultiFieldQueryParser也可以这样做,但仍需要枚举字段。没有隐含的“所有”字段;但是IndexReader.getFieldNames可以获得它们。

答案 2 :(得分:0)

这可能不适用于您,但是在基于Lucene的Azure搜索中,我使用Lucene语法:

name:plywood^100 OR plywood

“名称”字段中包含“胶合板”的结果得到增强。