Ich versuche, teilweise Wort Übereinstimmung arbeiten zu bekommen, und ich habe bereits auf related question geschaut, aber aus irgendeinem Grund funktioniert mein Setup nicht. Ich benutze Heuhaufen mit elasticsearch. Kann mir bitte jemand sagen, was ich falsch mache?kann nicht partielle Wortsuche mit Heuhaufen/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: Ich habe diese Arbeit gemacht, indem Sie Autocomplete verwenden. Ich habe jedoch das Gefühl, dass dies ein Hack ist. Aber hier ist mein Code:
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()
dann in der Ansicht:
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
Wissen Sie, ob dies auf 'elasticsearch 1.x' funktioniert? –
Nathan, Nö, ich benutze nie Elasticsearch v.1. – valex