5
我試圖讓部分詞語匹配工作,並且我已經查看了related question但由於某種原因,我的設置無法正常工作。我正在用elasticsearch使用haystack。有人可以告訴我我做錯了什麼嗎?無法通過haystack/elasticsearch獲得部分詞語搜索
class VendorIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.EdgeNgramField(document=True, use_template=True)
company_name = indexes.CharField(model_attr='company_name', null=True)
def get_model(self):
return Vendor
def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return self.get_model().objects.all()
編輯:我做了這項工作,利用自動完成。但是,我覺得這是一個破解。但這裏是我的代碼:
class VendorIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
company_name = indexes.CharField(model_attr='company_name', null=True)
company_name_auto = indexes.NgramField(model_attr='company_name')
def get_model(self):
return Vendor
def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return self.get_model().objects.all()
然後在視圖:
class SearchVendorView(generics.ListAPIView):
serializer_class = serializers.CustomerVendorSerializer
def get_queryset(self):
results = SearchQuerySet().models(Vendor).autocomplete(company_name_auto=self.request.GET.get('q', ''))
vendors = []
for vendor in [result.object for result in results]:
vendor.is_liked = Vendor.objects.from_request(self.request).get(pk=vendor.id).user_vote
vendors.append(vendor)
return vendors
你知道這是否適用於'elasticsearch 1.x'嗎? – 2016-12-08 17:54:40
彌敦道,不,我從來沒有用elasticsearch v.1。 – valex 2016-12-09 12:12:26