Поиск по словосочетанию


(Max) #1

пытаюсь вспомнить как искать по четкому вхождению словосочетания "Star Wars"

надо найти эту запись - Star Wars is an American epic space opera franchise, centered on a film series created by George Lucas.

и пропустить Star word Wars is an American epic space opera franchise, centered on a film series created by George Lucas.


(Eugene) #2

Попробуйте match_phrase.
https://www.elastic.co/guide/en/elasticsearch/reference/2.3/query-dsl-match-query.html


(Max) #3

да, спасибо. вчера остановился на таком виде запроса

                {
                    "match": {
                        "title": {
                            "query": "Star wars",
                            "type":  "phrase"
                        }
                    }
                }

(Max) #4

если мне надо сделать по двум разным словосочетаниям как на пример "Star wars" и "Starwars" (два слова вместе и раздельно но искать все это как фразы) как мне надо поменять запрос?

я составил такой запрос, правильный ли он составлен?

  {
      "query": {
          "bool" : {
              "should" : [
                  {
                      "match": {
                          "title": {
                              "query": "Star wars",
                              "type":  "phrase"
                          }
                      }
                  },
                  {
                      "match": {
                          "title": {
                              "query": "Starwars",
                              "type":  "phrase"
                          }
                      }
                  }
              ],
              "filter" : {
                  "term" : {
                      "college" : "1"
                  }
              }
          }
      },
      "sort": {
          "date": "desc"
      }
  }

(Eugene) #5

Да. Но у match_phrase есть более простая форма.
"match_phrase":{
"title": "Star wars"
}


(system) #6