如何进行多字段 – 在Lucene中进行短语搜索?

标题要求一切……我想在Lucene做一个多字段 – 短语搜索..怎么做?

例如:我有String s[] = {"title","author","content"};作为String s[] = {"title","author","content"};
我想在所有领域搜索harry potter ..我该怎么办?

有人可以提供一个示例代码段吗?

  1. 使用MultiFieldQueryParser ,它是一个QueryParser,它构造查询以搜索多个字段。

  2. 其他方法是使用由TermQurey组成的Create a BooleanQuery(在您的案例中为短语查询)。

  3. 第三种方法是将其他字段的内容包含在default内容字段中。


一般来说,查询多个字段不是用户输入查询的最佳做法。 更常见的是,通过组合各种字段,您要搜索的所有单词都会被索引到内容或关键字字段中。


更新

用法:

 Query query = MultiFieldQueryParser.parse(Version.LUCENE_30, new String[] {"harry potter","harry potter","harry potter"}, new String[] {"title","author","content"},new SimpleAnalyzer()); IndexSearcher searcher = new IndexSearcher(...); Hits hits = searcher.search(query); 

MultiFieldQueryParser将以这种方式解析查询:(请参阅javadoc)

解析在指定字段上搜索的查询。 如果指定了x字段,这有效地构造了:

(field1:query1)(field2:query2)(field3:query3)…(fieldx:queryx)

希望这可以帮助。

强化的谷歌搜索显示:
http://lucene.472066.n3.nabble.com/Phrase-query-on-multiple-fields-td2292312.html
由于它是最新的和最好的,我会按照他的方法去做。不过,它可能会帮助那些正在寻找像我这样的人…