0

こんにちは、私はそのようなコードを持っています

IndexSearcher iSearcher = new IndexSearcher(dir);
TopDocs docs = iSearcher.search(parsedQuery,filter, 9);

私はいつも 20 件のスコアドキュメントを受け取ります。誰でも助けてもらえますか?

4

3 に答える 3

0

ご回答ありがとうございます。問題は実際にはビルドパスにありました。既存のライブラリがない可能性があり、プロジェクトをビルドできませんでした。そのため、コードを変更してデバッグしようとするたびに、以前にビルドされたバージョンが使用されました。

誤解を招く恐れがあります。

于 2012-04-17T08:01:29.317 に答える
0

1) いつも正確に 20 個の ScoreDoc を返しますか? 検索結果が 9 件の ScoreDocs に制限されているため、「20 件の ScoreDocs」が気になります。

2) 20 を超える ScoreDocs になるような Lucene 用語がインデックスに含まれていることを確認しましたか? インデックス作成戦略を変更した後、他のテストを実行する前に Luke でインデックスをテストすることが役立つことがわかりました。

于 2012-04-13T17:25:32.383 に答える
0

doc.scoreDocs.length == 20 だからといって、20 件の結果を受け取ったことにはなりません。個々の結果のドキュメント ID が と等しくないことを確認する必要がありますInteger.MAX_VALUE。これは、「ここに結果がありません」というセンチネル値として使用されます。このすべてのポイントは、Lucene の典型です。この場合、既に割り当てられている結果配列を再利用することで、メモリ割り当てを最小限に抑えます。

于 2012-04-14T13:42:57.240 に答える