さまざまな e コマース ストアが提供するオートコンプリート機能を実装したいと考えています。機能は非常にシンプルです。いくつかの文字を入力すると、関連する候補が表示され始めます。
haystack.query.SearchQuerySet で提供されている autocomplete メソッドを使用して、solr (django-haystack) を使用して実装しました。基本的に、スコアでソートされた結果のリストを取得します。上位 n 件の結果を提案として表示しています。
Solr ドキュメントには、$product_name、$category_name およびその他のフィールドが含まれています。したがって、私が生成した結果は、「 in 」のリストのようになります。
カテゴリ名を変更すると問題が発生します。カテゴリ名を変更した場合、その特定のカテゴリに属するすべての製品を更新して、これらの変更をオートコンプリートに反映する必要があります (このカテゴリの製品の solr 内のすべてのドキュメントを更新します)。
これを行う別の方法は、solr ドキュメントに製品のカテゴリの ID だけを入れることです。その場合、毎回カテゴリ名を検索する必要があり、これは効率的ではありません。これを行う他の効率的な方法はありますか?
質問する
60 次
1 に答える
0
基になるデータを変更しているため、同じデータを SOLR に伝達する必要があります。
これを行うには、さまざまなアプローチがあります。
- データベースを更新し、インデックスを再作成します - 長所: 十分に単純ですが、短所: インデックス作成に時間がかかる場合があります。
- データベースと Solr を連携して更新 - 長所: 迅速な更新、ほとんど瞬時に実行、短所: データの不一致につながる可能性あり (1 つの更新が失敗した場合)
- データベースを更新し、Solr でデルタ インポートをスケジュールします。これは、上記の 2 つの中間点のようなものです。
3 番目のアプローチをお勧めしますが、これには事前のスキーマ設計が必要になります。デルタ インポートの詳細については、DataImportHandler のコンテキストでこちらを参照してください。
于 2013-08-13T13:31:02.373 に答える