【问题标题】:Add CharField to the search index in haystack将 CharField 添加到 haystack 中的搜索索引
【发布时间】:2017-07-02 13:05:29
【问题描述】:

我在我的 django 应用程序 (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')

【问题讨论】:

    标签: python django search django-haystack


    【解决方案1】:

    您需要设置架构中的不同字段以支持自动完成和正常搜索。 在下文中,我定义了两个字段,即一个是 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/ 以了解更多信息,

    【讨论】:

      猜你喜欢
      • 2014-08-01
      • 1970-01-01
      • 2019-05-05
      • 2011-11-13
      • 1970-01-01
      • 2012-05-30
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多