В Elasticsearch отсутствуют результаты и неправильная сортировка

#elasticsearch

Вопрос:

У меня есть настройка Elasticsearch для поиска содержимого книг. По большей части он работает, однако часто пропускает отдельные поисковые запросы, особенно в «Заголовке». Например, в одной книге есть раздел под названием «Парки и зоны отдыха», однако с помощью поискового термина «парки» он его не находит.

Это также для моего варианта использования в идеале должно определять приоритет результатов «entryTitle» над результатами «entryContent».

Текущий запрос является:

  $params = [
                'index' => 'toc_entries',
                'type' => '_doc',
                'body' => [
                    'min_score' => '0.1',
                    'sort' => [
                        '_score'
                    ],
                    '_source' => [
                        'entryTitle',
                        'entryId'
                    ],
                    'query' => [
                        'bool' => [
                            'filter' => [
                                'term' => [
                                    'bookSku.raw' => $sku
                                ]
                            ],
                            'should' => [
                                [
                                    'match' => [
                                        'entryTitle' => [
                                            'query' => $search_term,
                                            '_name' => 'title'
                                        ]
                                    ]
                                ],
                                [
                                    'match' => [
                                        'entryContent' => [
                                            'query' => $search_term,
                                            '_name' => 'body'
                                        ]
                                    ]
                                ]
                            ]
                        ]
                    ],
                    'highlight' => [
                        'pre_tags' => [''],
                        'post_tags' => [''],
                        'fields' => [
                            'entryContent' => new stdClass(),
                            'entryTitle' => new stdClass()
                        ]
                    ]
                ]
            ];
 

Могут ли какие-либо эксперты по эластичным исследованиям увидеть, где я здесь ошибся?

Заранее спасибо

Редактировать:

Вот структура настройки:

 {
   "analysis":{
      "analyzer":{
         "default":{
            "type":"english"
         }
      }
   },
   "settings":{
      "number_of_shards":1,
      "number_of_replicas":1
   },
   "mappings":{
      "_default_":{
         "dynamic":"strict"
      },
      "_doc":{
         "properties":{
            "bookSku":{
               "type":"text",
               "fields":{
                  "raw":{
                     "type":"keyword"
                  }
               }
            },
            "entryId":{
               "type":"text",
               "fields":{
                  "raw":{
                     "type":"keyword"
                  }
               }
            },
            "entryTitle":{
               "type":"text"
            },
            "entryContent":{
               "type":"text"
            }
         }
      }
   }
}

 

Комментарии:

1. Когда вы говорите, что он не находит его, вы имеете в виду, что он не найден в первых результатах или вообще не найден? Я использую повышение баллов для определения приоритетов полей в поиске, которые аналогичны тому, что вы пытаетесь сделать. Это хорошо работает.