将CharField添加到haystack中的搜索索引

时间:2017-02-14 09:50:48

标签: python django search django-haystack

我在我的django app(1.8),haystack(2.4.1)中搜索。并且我希望能够使用自动完成(EdgeNgramField)和单词来搜索单词,当我只放置名称的一部分时,例如' zo-zo on' (这不适用于EdgeNgramField)

下面我累了补充说: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')

1 个答案:

答案 0 :(得分: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上的autosuggest。

您应该阅读文档http://haystacksearch.org/了解更多信息,