2011-11-28 102 views
5

我在寻找一个Lucene索引和我建立的搜索查询像如何使用查询语法搜索Lucene中的多个字段?

field1:"hello" AND field2:"world" 

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

field1:"hello" AND anyField:"world" 

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

回答

6

基于我对这个问题的答案:Impact of repeat value across multiple fields in Lucene ...

我可以把同样的搜索词到多个领域,并从而创造一个“全”字段,我把一切都放在这样我可以。创建一个查询,如...

field1:"hello" AND all:"world" 

这似乎工作得很好,防止需要巨大的搜索查询,显然对性能的影响是最小的。

+0

嗨,你可以发布上述语法的一些示例代码.... –

2

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

+0

我创建了一个明确的“all”字段......它看起来并不理想,但每次创建字段时我都会添加到“all”字段。它的作品,但似乎有点垃圾。真的,我想要做的是为每个索引字段定义多个名称,以便我可以创建类别或能够在字段名称中使用通配符来搜索字段,以便我可以在“name *”中搜索“name.firstname:bob” – Edd