私は検索全体に不慣れで、干し草の山を学ぶのに苦労しています.(バックエンドとしてのsolr)
これが私の干し草スタック/solrの理解です。
私の理解が間違っている場合は、コメントしてください。
Solr
solr はドキュメント検索エンジンです。(RDBMS とは対照的に)
ユーザーは、指定された用語でドキュメントをすばやく検索できます。(これには逆インデックスを使用できます)
solr では、ドキュメントが適切に構造化されている場合、ファセット検索も可能です (xml のように)。
Haystack
一部のアプリケーション (e コマース サイトなど) では、製品データを RDBMS に格納することをお勧めします (xml も機能しますが、RDBMS は xml よりも更新に適していると思います)
。製品データを格納する場合RDBMS では、ユーザー クエリに関連するデータを取得するクエリを記述できますが、面倒です。
Haystack は、RDBMS のデータをドキュメントに変換できるため、solr でインデックスを作成できます。solr がデータにインデックスを付けた後、ほとんどの検索を solr に委任できます。
ここで質問です。
必要に応じて DB スキーマを作成し、引き続き haystack/solr を使用できますか?
次のような DB モデルがあるとします。任意のカテゴリのファセット検索を有効にするには、search_indexes.py はどのようになりますか?
...
class Category(models.Model):
name = models.CharField(max_length=200)
parentCategory = models.ForeignKey('self', null=True, blank=True)
class Item(models.Model):
name = models.CharField(max_length=200)
categorys = models.ManyToManyField(Category)
details = models.CharField(max_length=1024)
カテゴリはネストできます (カテゴリは親カテゴリを持つことができます)。