こんにちは、私はそのようなコードを持っています
IndexSearcher iSearcher = new IndexSearcher(dir);
TopDocs docs = iSearcher.search(parsedQuery,filter, 9);
私はいつも 20 件のスコアドキュメントを受け取ります。誰でも助けてもらえますか?
こんにちは、私はそのようなコードを持っています
IndexSearcher iSearcher = new IndexSearcher(dir);
TopDocs docs = iSearcher.search(parsedQuery,filter, 9);
私はいつも 20 件のスコアドキュメントを受け取ります。誰でも助けてもらえますか?
ご回答ありがとうございます。問題は実際にはビルドパスにありました。既存のライブラリがない可能性があり、プロジェクトをビルドできませんでした。そのため、コードを変更してデバッグしようとするたびに、以前にビルドされたバージョンが使用されました。
誤解を招く恐れがあります。
1) いつも正確に 20 個の ScoreDoc を返しますか? 検索結果が 9 件の ScoreDocs に制限されているため、「20 件の ScoreDocs」が気になります。
2) 20 を超える ScoreDocs になるような Lucene 用語がインデックスに含まれていることを確認しましたか? インデックス作成戦略を変更した後、他のテストを実行する前に Luke でインデックスをテストすることが役立つことがわかりました。
doc.scoreDocs.length == 20 だからといって、20 件の結果を受け取ったことにはなりません。個々の結果のドキュメント ID が と等しくないことを確認する必要がありますInteger.MAX_VALUE
。これは、「ここに結果がありません」というセンチネル値として使用されます。このすべてのポイントは、Lucene の典型です。この場合、既に割り当てられている結果配列を再利用することで、メモリ割り当てを最小限に抑えます。