django を利用した Web サイト用の単純な検索ツールが必要だったので、Haystack と Solr を使用しました。すべてを正しく設定し、正確なフレーズを入力すると正しい検索結果を見つけることができますが、部分的なフレーズを入力すると結果が得られません。
例: "John" は "John Doe" を返しますが、"Joh" は何も返しません。
モデル:
class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
検索インデックス:
class PersonIndex(SearchIndex):
text = CharField(document=True, use_template=True)
first_name = CharField(model_attr = 'first_name')
last_name = CharField(model_attr = 'last_name')
site.register(Person, PersonIndex)
部分的なフィールドの一致を有効にする設定が欠けていると思います。いくつかのフォーラムで人々が話しているのを見EdgeNGramFilterFactory()
たことがあり、Google で検索しましたが、その実装についてはよくわかりません。さらに、検索バックエンドを切り替えた場合に備えて、干し草の山固有の方法があることを望んでいました。