inv*_*dex 10 java lucene information-retrieval
我几乎是lucene的新手,并尝试和一些查询并显示它们.我已经google了整个网络,但无法找到解决此问题的正确方法.布尔查询搜索的解决方案包括BooleanQuerylucene类.但这个类在Lucene的5.3.1(我使用的)不推荐这里
这是我的代码的一部分:
public static void searchBooleanQuery(String indexDir, Query query1,
Query query2, Query query3, Query query4) throws IOException {
IndexReader rdr = DirectoryReader.open(FSDirectory.open(Paths.get(indexDir)));
IndexSearcher is = new IndexSearcher(rdr);
BooleanQuery.Builder booleanQuery = new BooleanQuery.Builder();
booleanQuery.add(query1, BooleanClause.Occur.MUST);
booleanQuery.add(query2, BooleanClause.Occur.MUST);
booleanQuery.add(query3, BooleanClause.Occur.MUST);
booleanQuery.add(query4, BooleanClause.Occur.MUST);
}
Run Code Online (Sandbox Code Playgroud)
更新
问题:我不能显示此Boolean Query通过IndexSearcher对象,因为这个类(IndexSearcher的)的搜索方法应该由查询传递!因此,当我尝试运行此代码时,它会给我一个错误:
TopDocs hits = is.search(booleanQuery,10);
...
Run Code Online (Sandbox Code Playgroud)
你的booleanQuery对象实际上是一个实例BooleanQuery.Builder,而不是BooleanQuery.
将所有查询添加到构建器后,需要调用该build方法.
防爆.
TopDocs hits = is.search(booleanQuery.build(),10);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4594 次 |
| 最近记录: |