1
在數據庫中,我有名稱爲「Product 1」,「Product 2」等的產品。搜索「Produc」應該返回許多值,但我什麼也沒有得到。 我的指數:Django haystack elasticsearch自動完成功能不起作用
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()
結果從外殼:
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)...']
如果爲'content_auto'使用'EdgeNgramField',你也有同樣的問題嗎? –