0

さまざまな e コマース ストアが提供するオートコンプリート機能を実装したいと考えています。機能は非常にシンプルです。いくつかの文字を入力すると、関連する候補が表示され始めます。
haystack.query.SearchQuerySet で提供されている autocomplete メソッドを使用して、solr (django-haystack) を使用して実装しました。基本的に、スコアでソートされた結果のリストを取得します。上位 n 件の結果を提案として表示しています。
Solr ドキュメントには、$product_name、$category_name およびその他のフィールドが含まれています。したがって、私が生成した結果は、「 in 」のリストのようになります。
カテゴリ名を変更すると問題が発生します。カテゴリ名を変更した場合、その特定のカテゴリに属する​​すべての製品を更新して、これらの変更をオートコンプリートに反映する必要があります (このカテゴリの製品の solr 内のすべてのドキュメントを更新します)。
これを行う別の方法は、solr ドキュメントに製品のカテゴリの ID だけを入れることです。その場合、毎回カテゴリ名を検索する必要があり、これは効率的ではありません。これを行う他の効率的な方法はありますか?

4

1 に答える 1

0

基になるデータを変更しているため、同じデータを SOLR に伝達する必要があります。

これを行うには、さまざまなアプローチがあります。

  1. データベースを更新し、インデックスを再作成します - 長所: 十分に単純ですが、短所: インデックス作成に時間がかかる場合があります。
  2. データベースと Solr を連携して更新 - 長所: 迅速な更新、ほとんど瞬時に実行、短所: データの不一致につながる可能性あり (1 つの更新が失敗した場合)
  3. データベースを更新し、Solr でデルタ インポートをスケジュールします。これは、上記の 2 つの中間点のようなものです。

3 番目のアプローチをお勧めしますが、これには事前のスキーマ設計が必要になります。デルタ インポートの詳細については、DataImportHandler のコンテキストでこちらを参照してください。

于 2013-08-13T13:31:02.373 に答える