私はLuceneにほとんど慣れておらず、いくつかのクエリをANDして表示しようとしています。私はウェブ全体をググってみましたが、この問題の正しい解決策を見つけることができませんでした。ブールクエリ検索のソリューションには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);
...
あなたのbooleanQuery
オブジェクトは、実際のインスタンスであるBooleanQuery.Builder
、ではありませんBooleanQuery
。
すべてのクエリをビルダーに追加したら、build
メソッドを呼び出す必要があります。
例
TopDocs hits = is.search(booleanQuery.build(),10);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加