Мне понадобился простой инструмент поиска для моего сайта на платформе django, поэтому я выбрал Haystack и Solr. Я все настроил правильно и могу найти правильные результаты поиска, когда набираю фразу точную , но не могу получить никаких результатов при вводе частичной фразы.
Например: «Джон» возвращает «Джон Доу», но «Джо» ничего не возвращает.
Модель:
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()
на некоторых форумах, и я погуглил их, но я не совсем уверен в их реализации. Кроме того, я надеялся, что найдется способ, специфичный для стога сена, на случай, если я когда-нибудь выключу бэкэнд поиска.