2017-02-14 17 views
0

Я использую в своем приложении django (1.8), haystack (2.4.1) для поиска. И я хочу, чтобы иметь возможность загружать слова с автозаполнением (EdgeNgramField) и словами, когда я помещаю только часть имени, например «zo-zo on» (это не работает с EdgeNgramField)Добавить CharField в индекс поиска в стоге сена

Ниже я устал добавлен : text_sec = indexes.CharField(use_template=True), но это не работает для меня.

Вот мой код, но он не работает:

class EventIndex(indexes.SearchIndex, indexes.Indexable): 
    text = indexes.EdgeNgramField(document=True, use_template=True) 
    text_sec = indexes.CharField(use_template=True) 
    id = indexes.CharField(model_attr='id') 
    get_absolute_url = indexes.CharField(model_attr='get_absolute_url') 
    description = indexes.CharField(model_attr='description', null=True) 
    is_past = indexes.CharField(model_attr='is_past', default='false') 
    date_start = indexes.DateTimeField(model_attr='date_start') 

ответ

0

Вам нужно настроить в различных областях в схеме питания для автозаполнения и обычного поиска. В следующем разделе я определил два поля, то есть один - text, а другой - content_auto, который заполнен заголовком из вашей модели.

class EventIndex(indexes.SearchIndex, indexes.Indexable): 
    text = indexes.CharField(document=True, use_template=True) 
    content_auto = indexes.EdgeNgramField(model_attr='title') 
    text_sec = indexes.CharField(use_template=True) 
    id = indexes.CharField(model_attr='id') 
    get_absolute_url = indexes.CharField(model_attr='get_absolute_url') 
    description = indexes.CharField(model_attr='description', null=True) 
    is_past = indexes.CharField(model_attr='is_past', default='false') 
    date_start = indexes.DateTimeField(model_attr='date_start') 

Если вы хотите сделать нормальный поиск, вы должны искать в текстовом поле, для автозаполнения на content_auto.

Чтобы узнать больше об этом, http://haystacksearch.org/,