标题问了这一切…我想在Lucene中进行多字段词组搜索.
例如 :
我的字段为String s [] = {“ title”,“ author”,“ content”};
我想搜索所有领域的哈利波特.我该怎么办?
有人可以提供示例片段吗?
解决方法:
>使用MultiFieldQueryParser,它是一个QueryParser,它构造查询以搜索多个字段.
>其他方法是使用创建由TermQurey组成的布尔查询(在您的情况下为短语查询).
>第三种方法是将其他字段的内容包含到默认内容字段中.
加
一般来说,在多个字段中进行查询并不是用户输入查询的最佳做法.更常见的是,通过组合各种字段,将要搜索的所有单词编入内容或关键字字段.
更新资料
用法:
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)
Parses a query which searches on the
fields specified. If x fields are
specified, this effectively
constructs:(field1:query1) (field2:query2)
(field3:query3)…(fieldx:queryx)
希望这可以帮助.