我在我的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')
答案 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/了解更多信息,