java-如何执行多字段-Lucene中的词组搜索?

标题问了这一切…我想在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)

希望这可以帮助.

上一篇:java-Hibernate Search 5.X是否可以对@Id字段使用数字编码


下一篇:ElasticSearch(分布式全文搜索引擎)