标题要求一切......我想在Lucene做一个多字段 - 短语搜索.怎么做?
例如:我有字段,因为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);
Run Code Online (Sandbox Code Playgroud)
该MultiFieldQueryParser
会解决这种方式查询:(见的javadoc)
解析查询指定字段的查询.如果指定了x字段,这有效地构造了:
(field1:query1)(field2:query2)(field3:query3)...(fieldx:queryx)
希望这可以帮助.
归档时间: |
|
查看次数: |
6792 次 |
最近记录: |