Tôi đang cố gắng thực hiện một phần từ phù hợp và tôi đã xem related question nhưng vì một số lý do thiết lập của tôi không hoạt động. Tôi đang sử dụng haystack với elasticsearch. Ai đó có thể cho tôi biết tôi đang làm gì sai không?không thể tìm kiếm từ một phần để làm việc với 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()
EDIT: Tôi đã thực hiện công việc này bằng cách sử dụng tính năng tự động hoàn tất. Tuy nhiên, tôi cảm thấy như đây là một hack. Nhưng ở đây là mã của tôi:
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()
sau đó trong Xem:
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
Bạn có biết điều này sẽ hoạt động trên 'elasticsearch 1.x' không? –
Nathan, không, tôi không bao giờ sử dụng elasticsearch v.1. – valex