【发布时间】:2012-01-08 03:26:03
【问题描述】:
我正在搜索 lucene 索引,并且正在构建类似的搜索查询
field1:"hello" AND field2:"world"
但我想搜索任何字段中的值以及同一查询中特定字段中的值,即
field1:"hello" AND anyField:"world"
谁能告诉我如何以这种方式搜索所有索引字段?
【问题讨论】:
我正在搜索 lucene 索引,并且正在构建类似的搜索查询
field1:"hello" AND field2:"world"
但我想搜索任何字段中的值以及同一查询中特定字段中的值,即
field1:"hello" AND anyField:"world"
谁能告诉我如何以这种方式搜索所有索引字段?
【问题讨论】:
根据我对这个问题的回答:Impact of repeat value across multiple fields in Lucene...
我可以将相同的搜索词放入多个字段中,因此创建一个“全部”字段,我将所有内容都放入其中。这样我可以创建一个查询,例如...
field1:"hello" AND all:"world"
这似乎工作得非常好,避免了对大量搜索查询的需求,而且显然对性能的影响很小。
【讨论】:
每个字段都有一个子句的布尔 (OR) 查询用于搜索多个字段。 MultiFieldQueryParser 也会这样做,但仍需要枚举字段。没有隐含的“所有”字段;但IndexReader.getFieldNames 可以获取它们。
【讨论】:
这可能不适用于你,但在基于 Lucene 的 Azure 搜索中,使用 Lucene 语法,我使用这个:
name:plywood^100 OR plywood
“名称”字段中包含“胶合板”的结果会得到提升。
【讨论】: