Увеличение SearchFields не влияет на реализацию Elasticsearch 6 Wagtail
Например, скажем, у меня есть простая модель с CharField
, Я добавляю это к Page.search_fields
с boost
из 200, как описано в документах:
class TestModel(Page):
cool_name = models.CharField(max_length=50)
search_fields = Page.search_fields + [
index.SearchField('cool_name', boost=200),
]
...
Когда я запускаю простой запрос для слова pascal
используя встроенную в ES6 реализацию Wagtail...
backend.search('pascal', Page)
... и просмотреть сгенерированный запрос и ответ от ES, он выглядит как bool
запрос, который не учитывает увеличенное значение поля (оценка слишком низкая):
...
"_id": "100",
"_index": "wagtail__wagtailcore_page",
"_node": "mK2TtTfNRj-Dhw7RV0U49A",
"_score": 8.437754,
"_shard": "[wagtail__wagtailcore_page][1]",
"_source": {
...
},
...
Когда я запускаю простой запрос для pascal
по отношению к ES API напрямую:
http://localhost:9200/wagtail__wagtailcore_page/_search?pretty=true&q=pascal&explain=true
Я получаю следующее:
"total" : 1,
"max_score" : 262.495,
"hits" : [
{
"_index" : "wagtail__wagtailcore_page",
"_type" : "doc",
"_id" : "100",
"_score" : 262.495,
"_source" : {
....
},
"_explanation" : {
"value" : 262.495,
"description" : "max of:",
"details" : [
{
"value" : 262.495,
"description" : "weight(test_testmodel__cool_name:pascal in 60) [PerFieldSimilarity], result of:",
"details" : [
{
"value" : 262.495,
"description" : "score(doc=60,freq=1.0 = termFreq=1.0\n), product of:",
"details" : [
{
"value" : 200.0,
"description" : "boost",
"details" : [ ]
},
]
}
....
Таким образом, значение усиления правильно применяется на term
запрос, но не при использовании встроенной функциональности ES6. Это ожидаемое поведение трясогузки? Я понимаю, что это может быть связано с обработкой Elasticsearch boost
поля на bool
запросы, но документация подразумевает просто добавление boost
к SearchField
будет работать как положено.