bugfix> sorting > 投稿

インデックスから検索するときに、luceneドキュメントの順序付けの問題に直面しています。最後にインデックス付けされたドキュメントから最初にインデックス付けされたドキュメントまで、ラストインファーストアウトの順にドキュメントを取得する必要があります。インデックスへの9つのコミットまで順序が維持されていることがわかりました。ただし、ワードの10番目のコミットから順序が変更されます。すべてのドキュメントID番号が変更され、挿入順序が維持されないことに注意してください。古いドキュメント番号はすべて、異なる番号に再番号付けされます。

多くのインデックスにコミットした後でも挿入の順序を維持するためのソリューション。

9つのコミットまで、ファイル構造は次のようになります-順序の問題は見つかりませんでした:

10回目のコミット後、構造が変更され、ドキュメントの順序も変更されます

回答 1 件
  • 順序参照としてdocIdを使用しないでください。これはluceneの内部IDであり、luceneによるインデックス作成操作に応じて変わる場合があります。

    例として、ドキュメントをdocId 1で更新すると、luceneは内部で削除と挿入を行います。これは別のdocIdにつながる可能性があります。

    クエリ入力による順序付け/ソートを実現するには、専用フィールドをインデックスに追加する必要があります。フィールドJavadocを参照してください。この目的にはいくつかのフィールドがあります。

    SortedDocValuesField:ソート/ファセット用に列ごとにインデックス付けされたbyte []

    SortedSetDocValuesField:SortedSetは、列ごとにインデックス付けされます ソート/ファセット

    NumericDocValuesField:ソート/ファセット用に列ごとに長いインデックスが作成されます

    SortedNumericDocValuesField:列ごとにインデックス付けされたSortedSet ソート/ファセット

    重要: このフィールドは、スコアリング/ソート/ファセットにのみ使用されます。クエリ結果にもこの値が必要な場合は、この値に追加のStoredFieldを追加する必要があります。

あなたの答え