2017-02-14 70 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上的autosuggest。

您应该详细阅读文档http://haystacksearch.org/以了解更多,

相关问题