我正在搜索lucene索引,我正在构建像
这样的搜索查询field1:"hello" AND field2:"world"
但我想搜索任何字段中的值以及同一查询中特定字段中的值,即
field1:"hello" AND anyField:"world"
有人能告诉我如何以这种方式搜索所有索引字段吗?
答案 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
“名称”字段中包含“胶合板”的结果得到增强。