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`.
This commit is contained in:
parent
167dafefb1
commit
a2f9ae8693
3 changed files with 18 additions and 16 deletions
|
|
@ -1,17 +1,18 @@
|
|||
from django_elasticsearch_dsl import Document, fields
|
||||
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
|
||||
from core.elasticsearch import COMMON_ANALYSIS, ActiveOnlyMixin, add_multilang_fields
|
||||
from core.elasticsearch.documents import BaseDocument
|
||||
|
||||
|
||||
class PostDocument(ActiveOnlyMixin, Document):
|
||||
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="query_lc"),
|
||||
"ngram": fields.TextField(analyzer="name_ngram", search_analyzer="icu_query"),
|
||||
"phonetic": fields.TextField(analyzer="name_phonetic"),
|
||||
},
|
||||
)
|
||||
|
|
@ -33,4 +34,5 @@ class PostDocument(ActiveOnlyMixin, Document):
|
|||
return getattr(instance, "title", "") or ""
|
||||
|
||||
|
||||
add_multilang_fields(PostDocument)
|
||||
registry.register_document(PostDocument)
|
||||
|
|
|
|||
|
|
@ -329,7 +329,7 @@ COMMON_ANALYSIS = {
|
|||
}
|
||||
|
||||
|
||||
def _add_multilang_fields(cls):
|
||||
def add_multilang_fields(cls):
|
||||
"""
|
||||
Dynamically add multilingual name/description fields and prepare methods to guard against None.
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@ from django_elasticsearch_dsl import Document, fields
|
|||
from django_elasticsearch_dsl.registries import registry
|
||||
from health_check.db.models import TestModel
|
||||
|
||||
from core.elasticsearch import COMMON_ANALYSIS, ActiveOnlyMixin, _add_multilang_fields
|
||||
from core.elasticsearch import COMMON_ANALYSIS, ActiveOnlyMixin, add_multilang_fields
|
||||
from core.models import Brand, Category, Product
|
||||
|
||||
|
||||
class _BaseDoc(Document):
|
||||
class BaseDocument(Document):
|
||||
name = fields.TextField(
|
||||
attr="name",
|
||||
analyzer="standard",
|
||||
|
|
@ -44,7 +44,7 @@ class _BaseDoc(Document):
|
|||
return getattr(instance, "description", "") or ""
|
||||
|
||||
|
||||
class ProductDocument(ActiveOnlyMixin, _BaseDoc):
|
||||
class ProductDocument(ActiveOnlyMixin, BaseDocument):
|
||||
rating = fields.FloatField(attr="rating")
|
||||
total_orders = fields.IntegerField(attr="total_orders")
|
||||
brand_priority = fields.IntegerField(
|
||||
|
|
@ -79,7 +79,7 @@ class ProductDocument(ActiveOnlyMixin, _BaseDoc):
|
|||
},
|
||||
)
|
||||
|
||||
class Index(_BaseDoc.Index):
|
||||
class Index(BaseDocument.Index):
|
||||
name = "products"
|
||||
|
||||
class Django:
|
||||
|
|
@ -87,14 +87,14 @@ class ProductDocument(ActiveOnlyMixin, _BaseDoc):
|
|||
fields = ["uuid"]
|
||||
|
||||
|
||||
_add_multilang_fields(ProductDocument)
|
||||
add_multilang_fields(ProductDocument)
|
||||
registry.register_document(ProductDocument)
|
||||
|
||||
|
||||
class CategoryDocument(ActiveOnlyMixin, _BaseDoc):
|
||||
class CategoryDocument(ActiveOnlyMixin, BaseDocument):
|
||||
priority = fields.IntegerField(attr="priority")
|
||||
|
||||
class Index(_BaseDoc.Index):
|
||||
class Index(BaseDocument.Index):
|
||||
name = "categories"
|
||||
|
||||
class Django:
|
||||
|
|
@ -102,14 +102,14 @@ class CategoryDocument(ActiveOnlyMixin, _BaseDoc):
|
|||
fields = ["uuid"]
|
||||
|
||||
|
||||
_add_multilang_fields(CategoryDocument)
|
||||
add_multilang_fields(CategoryDocument)
|
||||
registry.register_document(CategoryDocument)
|
||||
|
||||
|
||||
class BrandDocument(ActiveOnlyMixin, _BaseDoc):
|
||||
class BrandDocument(ActiveOnlyMixin, BaseDocument):
|
||||
priority = fields.IntegerField(attr="priority")
|
||||
|
||||
class Index(_BaseDoc.Index):
|
||||
class Index(BaseDocument.Index):
|
||||
name = "brands"
|
||||
|
||||
class Django:
|
||||
|
|
@ -117,7 +117,7 @@ class BrandDocument(ActiveOnlyMixin, _BaseDoc):
|
|||
fields = ["uuid"]
|
||||
|
||||
|
||||
_add_multilang_fields(BrandDocument)
|
||||
add_multilang_fields(BrandDocument)
|
||||
registry.register_document(BrandDocument)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue