-1

DirectoryReader.open を使用して 100G を超えるディレクトリを開くと、長時間開いていました。おそらく、インデックス作成に注意する必要があります。

多分私は十分な説明をしていません。

毎日 7,000 万件以上のデータがインデックスに登録されています。各インデックス データベースのストレージ スペースは 40G です。
検索が 1 か月以内にサポートされる場合 (30*40G、実際にはもっと長くサポートする必要があります)、すべての indexReader を開いて、それらを MultiReader に追加して再利用する必要があります。それらを開くのは非常に遅いです。 . (大きな値はインデックス作成を高速化しますが、同時に開く必要があるファイルの数を増やします。)最適化するために小さな値を設定できます。他のパラメーターまたは解決策はありますか?

4

1 に答える 1

2

を開くことIndexReaderはコストのかかる操作です。通常は、同じ IndexReader を保持して再利用する方が適切です。次のように呼び出すことで、最新の状態に保つことができますDirectoryReader.openIfChanged

IndexReader newReader = DirectoryReader.openIfChanged(oldReader)
if (newReader == null) {
    readerToUse = oldReader;
} else {
    readerToUse = newReader;
    oldReader.close(); //Make sure you close the old one!!

インデックスに変更があり、新しいリーダーが生成された場合でも、これは通常、よりもはるかにコストがかかりませんDirectoryReader.open

于 2013-05-10T16:17:20.610 に答える