Использование django-elasticsearch-dsl-drf, как реализовать автозаполнение и сопоставление терминов
Я очень новичок в elasticsearch, поэтому некоторая терминология может быть неправильной.
Я хочу реализовать автозаполнение, а также сопоставление терминов.
Допустим, у меня есть объект с именем "Foo Bar". Если я запрошу "fo", это сработает. Однако я также хочу иметь возможность найти этот объект по запросу "bar"
Это мой документ:
@registry.register_document
class ReviewableDocument(Document):
id = fields.TextField()
name = fields.TextField(
fields={
"raw": fields.TextField(analyzer=html_strip),
"suggest": fields.CompletionField(),
}
)
class Index:
name = "reviewables"
settings = {"number_of_shards": 1, "number_of_replicas": 0}
class Django:
model = Reviewable
fields = [
"url_name",
"profile_picture",
]
Это мой сериализатор:
class ReviewableAutocompleteSerializer(DocumentSerializer):
class Meta(object):
fields = ("id", "name", "url_name")
document = ReviewableDocument
А вот мое мнение:
class SuggestReviewableByName(DocumentViewSet):
serializer_class = ReviewableAutocompleteSerializer
permission_classes = (AllowAny,)
document = ReviewableDocument
filter_backends = [
SuggesterFilterBackend,
]
suggester_fields = {
"name_suggest": {"field": "name.suggest", "suggesters": [SUGGESTER_COMPLETION]}
}