schon/blog/elasticsearch/documents.py
Egor fureunoir Gorbunov a2f9ae8693 Features: 1) Rename _BaseDoc to BaseDocument for clarity and consistency; 2) Expose _add_multilang_fields as add_multilang_fields for broader use;
Fixes: 1) Correct `name_ngram` search analyzer in `PostDocument` to `icu_query`;

Extra: 1) Update import paths and references following renaming of `BaseDocument` and `add_multilang_fields`.
2025-08-20 06:22:34 +03:00

38 lines
1.1 KiB
Python

from django_elasticsearch_dsl import fields
from django_elasticsearch_dsl.registries import registry
from blog.models import Post
from core.elasticsearch import COMMON_ANALYSIS, ActiveOnlyMixin, add_multilang_fields
from core.elasticsearch.documents import BaseDocument
class PostDocument(ActiveOnlyMixin, BaseDocument):
title = fields.TextField(
attr="title",
analyzer="standard",
fields={
"raw": fields.KeywordField(ignore_above=256),
"ngram": fields.TextField(analyzer="name_ngram", search_analyzer="icu_query"),
"phonetic": fields.TextField(analyzer="name_phonetic"),
},
)
class Index:
name = "posts"
settings = {
"number_of_shards": 1,
"number_of_replicas": 0,
"analysis": COMMON_ANALYSIS,
"index": {"max_ngram_diff": 18},
}
class Django:
model = Post
fields = ["uuid"]
def prepare_title(self, instance):
return getattr(instance, "title", "") or ""
add_multilang_fields(PostDocument)
registry.register_document(PostDocument)