Можно ли в Elasti c Search 7 использовать подсказку контекста, которая усиливает, а не фильтрует? - PullRequest
0 голосов
/ 12 июля 2020

В Документации предлагающего контекст указано:

Предлагающий завершение рассматривает все документы в индексе, но часто желательно, чтобы предложения были отфильтрованы и / или усилено по некоторым критериям. [выделено мной]

Но я не вижу, как предотвратить фактическую фильтрацию контекста. Единственный способ применения оператора или - это сценарий, в котором предусмотрено несколько контекстов.

Есть ли способ использовать один контекст для повышения, а не фильтр?

Спасибо!

1 Ответ

1 голос
/ 12 июля 2020

Да, это действительно сбивает с толку.

По мере того, как вы читаете документацию, есть одно главное отличие с подсказкой контекста в том, что он избегает полного сканирования Inded. Следовательно, контекст является обязательным параметром в запросе суггестера.

Есть ли способ использовать один контекст для усиления, а не фильтрации?

Нет. Только в качестве ускорения нет способа.

Чтобы достичь того, что нужно, - это один способ, своего рода взлом. Поскольку вы уже знаете список контекстов, вам необходимо предоставить всем контекстам в контекстном запросе различные усиления. Тогда это своего рода усиление всех контекстов.

POST place/_search?pretty
{
    "suggest": {
        "place_suggestion" : {
            "prefix" : "tim",
            "completion" : {
                "field" : "suggest",
                "size": 10,
                "contexts": {
                    "place_type": [ 
                        { "context" : "cafe", boost:1},
                        { "context" : "restaurants", "boost": 2 }
                     ]
                }
            }
        }
    }
}

Здесь я установил усиление для обоих контекстов. Затем он включает все контексты и списки по ускорению.

Опять же, если термин присутствует во многих контекстах, приоритет получает контекст с максимальной оценкой.

Примечание: Примеры взяты из документации.

...