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