Как я могу получить контекст слова для списка поисковых терминов вasticsearch? - PullRequest
0 голосов
/ 04 июля 2018

Я только что установил свой первый кластер эластичного поиска и загрузил несколько тысяч документов. Теперь я хотел бы выполнить относительно простую задачу: у меня есть список поисковых терминов, и для каждого термина я хотел бы получить список документов в моей базе данных, которые содержат этот поисковый термин вместе со словом context (за 5 слов до поисковый термин, 5 слов после поискового запроса).

Есть ли простой способ сделать это? Я уже много искал, но не нашел удовлетворительного ответа.

Пример

  • У меня есть база данных с одним документом (id: 1): «Собака подбегает холм, чтобы летать желтый змей. Он выглядит счастливым. "

  • У меня есть один поисковый термин: "холм".

  • Я хотел бы написать запрос, который возвращает идентификатор 1 вместе с 5 слов до («собака бежит вверх») и 5 ​​слов после («до облететь желтым змеем. ") поисковый термин (" холм ").

1 Ответ

0 голосов
/ 06 июля 2018

Я не думаю, что можно сделатьasticsearch возвращать точно n слов вокруг соответствия, но вы можете использовать функцию выделения, чтобы получить грубый контекст и затем обработать результат в вашем приложении. .

По умолчаниюasticsearch пытается определить, из какого контекста получается хороший фрагмент кода, поэтому вам, возможно, придется увеличить размер этого окна, установив fragment_size (количество символов в возвращаемом фрагменте).

Вот пример запроса:

{
    "query": {
        "match": {
            "yourtextfield": "hill"
        }
    },
    "highlight": {
        "fields": {
            "yourtextfield": {}
        },
        "boundary_scanner": "word",
        "type": "plain",
        "fragment_size": 150,
        "pre_tags": "",
        "post_tags": ""
    }
}

Обычно совпадения заключены в <em> и </em>, но вы можете изменить или удалить их с помощью pre_tags и post_tags. Возможно, было бы полезно использовать их в качестве маркеров, чтобы вы знали, какое слово точно соответствует вашему запросу.

Пожалуйста, посмотрите также документацию , есть много хороших примеров, которые могут вам помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...