【问题标题】:Django haystack elasticsearch autocomplete don't workDjango haystack elasticsearch自动完成不起作用
【发布时间】:2016-05-02 19:42:04
【问题描述】:

在数据库中,我的产品名称为:“产品 1”、“产品 2”等。搜索“Product”应该返回许多值,但我什么也没得到。 我的索引:

from haystack import indexes

from .models import Product


class ProductIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True)
    id = indexes.IntegerField(model_attr='id')
    title = indexes.CharField(model_attr='title')
    slug = indexes.CharField(model_attr='slug')
    description = indexes.CharField(model_attr='description')
    content_auto = indexes.NgramField(model_attr='title')

    def get_model(self):
        return Product

    def index_queryset(self, using=None):
        return self.get_model().objects.all()

shell 的结果:

In [3]: SearchQuerySet().autocomplete(content_auto='produc')
Out[3]: []

In [4]: SearchQuerySet().autocomplete(content_auto='product')
Out[4]: [<SearchResult: catalogue.product (pk=u'4')>, <SearchResult:      
catalogue.product (pk=u'9')>, <SearchResult: catalogue.product  
(pk=u'11')>,  <SearchResult: catalogue.product (pk=u'16')>,   
<SearchResult: catalogue.product (pk=u'23')>, <SearchResult:  
catalogue.product (pk=u'28')>, <SearchResult: catalogue.product  
(pk=u'30')>, <SearchResult: catalogue.product (pk=u'35')>, <SearchResult: 
catalogue.product (pk=u'42')>, <SearchResult: catalogue.product 
(pk=u'47')>, <SearchResult: catalogue.product (pk=u'54')>, <SearchResult: 
catalogue.product (pk=u'59')>, <SearchResult: catalogue.product 
(pk=u'61')>, <SearchResult: catalogue.product (pk=u'66')>, <SearchResult: 
catalogue.product (pk=u'73')>, <SearchResult: catalogue.product 
(pk=u'78')>, <SearchResult: catalogue.product (pk=u'80')>, <SearchResult: 
catalogue.product (pk=u'85')>, <SearchResult: catalogue.product 
(pk=u'92')>, u'...(remaining elements truncated)...']

【问题讨论】:

  • 如果将EdgeNgramField 也用于content_auto,您是否也有同样的问题?

标签: django elasticsearch autocomplete django-haystack


【解决方案1】:

如果您刚刚添加了content_auto 字段,您可能需要运行manage.py rebuild_index 来创建更新后的索引。

【讨论】:

  • 每次更改后我都会运行rebuild_index。是的,我在使用 EdgeNgramField 时遇到了同样的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-02
  • 2017-06-24
  • 1970-01-01
  • 1970-01-01
  • 2010-10-18
  • 1970-01-01
相关资源
最近更新 更多