Как увеличить поиск по типу индекса в elasticsearch или lucene?

У меня есть три индекса продуктов питания "итальянский", "испанский", "американский". Когда пользователь ищет "Сыр", документы с "итальянского" появляются, как наверху. Можно ли "повысить" результаты, если бы я отдавал предпочтение сказать "испанский"? (Я все равно должен получить результаты для итальянского языка, но на основе некоторого числового значения boost для индекса типа "Spanish", упорядочение документов, возвращенных в результатах, отдает предпочтение индексу "Spanish". Возможно ли это при вводе пользователя lucene и/или ES-запрос? Если да, то как?

Ответ 1

Добавьте запрос термина с усилением для поля _type или _index (или обоих).

Ответ 2

Используйте скрипт_score как часть запроса функции:

function_score: {
  script_score: {
    script: "doc['_type'].value == '<your _type>' ? _score * <boost_factor> : _score"
  }
}

Ответ 3

Если вы запрашиваете сразу несколько индексов, можно указать увеличение индексов на верхнем уровне объекта, переданного в Search API:

curl -XGET localhost:9200/italian,spanish,american/_search -d '
{
    "query":{"term":{"food_type":"cheese"}},
    "indices_boost" : {
        "ilalian" : 1.4,
        "spanish" : 1.3,
        "american" : 1.1
    }
}'

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-index-boost.html#search-request-index-boost