将查菲尔德添加到大海捞针中的搜索索引中



我在我的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')

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

最新更新