Как сопоставить абзац с фразами в ElasticSearch? - PullRequest
0 голосов
/ 21 января 2019

Моя цель - использовать ElasticSearch, чтобы найти, какие проиндексированные фразы можно найти внутри запрашиваемого абзаца.

Я пытался использовать percolate search, но не смог уточнить его, чтобы он соответствовал 100%. К сожалению, документы ElasticSearch недостаточно ясны.

Мои проиндексированные документы:

  • должно быть быстрее, чем 50 миль в час
  • должен прыгнуть выше дерева
  • сможет стоять на двух ногах

Мой запрос:

«Мы ищем животное, которое должно быть в состоянии стоять на двух ногах, также должно прыгать выше дерева, и должно быть быстрее 40 миль в час, с белыми и красными полосами с крыльями»

Каких результатов я ожидаю (точное совпадение, без учета регистра):

  • сможет стоять на двух ногах
  • должен прыгнуть выше дерева

Какие результаты я получаю (частичные совпадения):

  • сможет стоять на двух ногах
  • должен прыгнуть выше дерева
  • должен быть быстрее, чем 50mph

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Как уже предлагалось, вы должны попробовать match_phrase .

Ваш запрос должен выглядеть примерно так:

GET <indexname>/_search
{

  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "Sentence": "be able to stand on two feet"
          }
        },
        {
          "match_phrase": {
            "Sentence": "must jump higher than a tree"
          }
        }
      ]
    }
  }
}

PS: Вы должны бытьпредоставление match_phrases в последовательности, как она есть в поле.

0 голосов
/ 25 января 2019

, но я не смог уточнить его, чтобы он соответствовал 100%

Кажется, вам нужно использовать полнотекстовый запрос как Совпадение по фразе .Из документов :

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

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