我对lucene几乎是新手,我尝试和一些查询并显示它们。我搜索了整个网络,但是找不到解决这个问题的正确方法。布尔查询搜索的解决方案包括BooleanQuery Lucene类,但是这个类是在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);
}更新
问题:我不能将Boolean Query按IndexSearcher对象显示为这个类的search方法(IndexSearcher)应该通过查询传递给它!因此,当我试图运行以下操作时,它会给我一个错误:
TopDocs hits = is.search(booleanQuery,10);
...发布于 2015-10-30 18:12:25
您的booleanQuery对象实际上是BooleanQuery.Builder的实例,而不是BooleanQuery。
在将所有查询添加到构建器之后,需要调用build方法。
例如。
TopDocs hits = is.search(booleanQuery.build(),10);https://stackoverflow.com/questions/33439826
复制相似问题