У меня есть следующий документ:
@brand.doc_type
class BrandDocument(DocType):
class Meta:
model = Brand
id = IntegerField()
name = StringField(
fields={
'raw': {
'type': 'keyword',
'fielddata': True,
}
},
)
lookup_name = StringField(
fields={
'raw': {
'type': 'string',
}
},
)
, и я пытаюсь сделать поиск, используя это:
BrandDocument.search().sort({
'name.keyword': order,
})
Проблема в том, что я получаю результаты, отсортированные в случаечувствительный способ, который означает, что вместо 'a', 'A', 'ab', 'AB'
я получаю 'A', 'AB', 'a', 'ab'
.Как это можно исправить?
РЕДАКТИРОВАТЬ После некоторого дополнительного поиска я обнаружил что-то вроде этого:
lowercase_normalizer = normalizer(
'lowercase_normalizer',
filter=['lowercase']
)
lowercase_analyzer = analyzer(
'lowercase_analyzer',
tokenizer="keyword",
filter=['lowercase'],
)
@brand.doc_type
class BrandDocument(DocType):
class Meta:
model = Brand
id = IntegerField()
name = StringField(
analyzer=lowercase_analyzer,
fields={
'raw': Keyword(normalizer=lowercase_normalizer, fielddata=True),
},
)
Однако проблема сохраняется, и яне могу найти в документах, как использовать этот нормализатор.