4

たとえば、次のファセットがあるとします。

  • 赤 (7825)
  • オレンジ (2343)
  • グリーン (843)
  • ブルー (5412)

私のデータベースでは、色はテーブルで、各色には主キーと名前/値があります。

Solr/Lucene を使用してインデックスを作成する場合、私が見たすべての例で、主キーではなく値にインデックスが作成されます。したがって、赤色でフィルタリングすると、次のような結果が得られます。

http://www.example.com/search?color=赤

代わりに主キーにインデックスを付けて、ファセット値を表示するときにデータベースから値を取得するのが賢明でしょうか? したがって、代わりに次のようなものを取得します。

http://www.example.com/search?color=1

赤の主キーを表す「1」。多くのファセットの値が頻繁に変更されるため、このアプローチを採用する必要があるかどうか疑問に思っていますが、主キーは同じままです。また、インデックスはデータベースと同期している必要があります。

これについての経験はもうありますか?これはパフォーマンスにどのように影響すると思いますか?

前もって感謝します!

4

1 に答える 1

1

エンティティが頻繁に変更されることが予想される場合は、ID のインデックスを作成する方が簡単です。ファセットの結果を取得したら、データベースでルックアップを実行して色の名前を取得します。そうすれば、色を変更しても、影響を受けるドキュメントをインデックスで更新する必要はありません。

私たちのシステムでは、エンティティの名前ではなく、ID の Lucene をインデックスに登録しています。これは、まさにあなたが述べた理由によるものです。また、私たちのエンティティには、それらに関連付けられた一連のプロパティがありますが、これらはインデックスが作成されていないため、とにかくそれらを取得するにはデータベースにアクセスする必要があります。

パフォーマンスに関する限り、ID のファセット処理が目に見えて遅くなったり速くなったりすることはありません。データベース ルックアップに関する限り、特に一度に数十のファセットしか取得しない場合は、大した問題にはなりません。問題が発生した場合は、いつでもキャッシングを使用して高速化できます。

于 2010-02-23T21:10:43.847 に答える