Как получить лучшие составные поисковые термины, используя эластичный поиск? - PullRequest
2 голосов
/ 22 апреля 2019

Мне нужно получить топ искомых терминов отasticsearch.Мы используем значительную функциональность терминов, предоставляемую эластичным поиском, но эта функция позволяет получить только лучшие ключевые слова для поиска.Вместо этого нам нужно в верхней части поиска нескольких слов.

Есть ли в настоящее время способ сделать это вasticsearch?

Ниже приведен соответствующий запрос, который мы используем:

GET /mentions/_search
{
    "size": 0, 
    "query": {
        "match": {
            "snippet": {
                "query": "#Hashtag"
            }
        }
    },
   "aggs": {
        "trends": {
          "significant_terms": {
            "field": "snippet",
            "size": 1000
          }
        }
      }
}

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

У обычной фразы нет «волшебного» решения,

Однако лучший подход к решению этой проблемы, я думаю, заключается в использовании концепции N-грамм .

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

Просто обратите внимание, я не уверен, каков ваш масштаб, но это решение будет использовать намного больше дискового пространства и может повлиять на эффективность других запросов.

0 голосов
/ 13 мая 2019

Я согласен с ответом Тома в том, что нет решения, подходящего для всех случаев использования.Elasticsearch не имеет понятия о том, как сортировать искомые термины, чтобы предоставить вам список лучших.

Например, если вы храните твиты в своем экземпляре Elasticsearch, самые популярные поисковые запросы - это те, у которых больше всего лайков?Самые ретвиты?Используете ли вы комбинацию этих двух метрик и как недавно был сделан твит?Это действительно зависит от вашего варианта использования.

Вы можете получить лучшие поисковые термины по частоте, но, возможно, вы включаете такие слова, как 'и' или 'the', которые не очень полезны.Чтобы защититься от этого, вам следует рассмотреть возможность удаления стоп-слов при хранении поисковых фраз, а не только при поиске (см .: эластичные поисковые слова ).Elasticsearch предоставляет набор языковых анализаторов "из коробки", улучшающих производительность поиска в совокупности документов (см .: с использованием анализаторов языкаasticsearch ).

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