如何进行多字段 – 在Lucene中进行短语搜索?
标题要求一切……我想在Lucene做一个多字段 – 短语搜索..怎么做?
例如:我有String s[] = {"title","author","content"};
作为String s[] = {"title","author","content"};
我想在所有领域搜索harry potter
..我该怎么办?
有人可以提供一个示例代码段吗?
-
使用
MultiFieldQueryParser
,它是一个QueryParser,它构造查询以搜索多个字段。 。 -
其他方法是使用由TermQurey组成的Create a BooleanQuery(在您的案例中为短语查询)。
-
第三种方法是将其他字段的内容包含在
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 。
由于它是最新的和最好的,我会按照他的方法去做。不过,它可能会帮助那些正在寻找像我这样的人…