我几乎是Lucene的新手,并尝试对一些查询进行AND并显示它们。
我已经搜寻了整个网络,尽管找不到解决此问题的正确方法。 boolean 查询搜索的解决方案包括BooleanQuery Lucene类,但此类为deprecated in 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,因为此类(IndexSearcher)的search方法应该由Query传递给!因此,当我尝试运行以下命令时,它给了我一个错误:
TopDocs hits = is.search(booleanQuery,10);
...

最佳答案

您的booleanQuery对象实际上是BooleanQuery.Builder的实例,而不是BooleanQuery

将所有查询添加到构建器之后,需要调用build方法。

前任。

TopDocs hits = is.search(booleanQuery.build(),10);

10-01 22:29