Подстрока соответствия Elastic Search - PullRequest
0 голосов
/ 26 мая 2019

У меня есть эластичный поисковый узел, содержащий такой индекс:

"_index" : "barivara",
       "_type" : "_doc",
       "_id" : "3",
       "_score" : 1.0,
       "_source" : {
         "area" : "Mirpur",
         "address" : "house:5; MIrpur",
         "description" : "home",
         "price" : 400,
         "number of members" : 5,
         "building amenities" : "5",
         "number of bed" : 7,
         "number of bath" : 2,
         "rentaltype" : "flat",
         "fttext" : "Mirpur 7 bedroom 2 bathroom flat 10 members"
       }
     }

Я добавил текстовое поле для полнотекстового поиска, но при поиске «3 спальни Mirpur»

Появляется указатель, содержащий 7 спален.

Вот мой запрос /

GET /barivara/_search
{
  "query": {
    "bool": {
      "must": {
        "match": { 
          "fttext": {
            "query":                "bedroom:3 Mirpur",
            "minimum_should_match": "100%"
          }
        }
      }
    }
  }
}

Может кто-нибудь мне помочь? Я нуб в упругом поиске.

1 Ответ

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

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

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

Таким образом, в вашем случае ввод "спальня: 3 Мурпур" является проблемойвниз в 3 словах "спальня", "3" и "Mirpur" и выполняет поиск по всем документам внутри поля "fttext" в индексе и возвращает результаты.

Таким образом, в вашем случае "7 спален" документы также будут отображаться как 2 из 3 терминов для этого документа, но такой документ будет размещен ниже "3 спальни" документы

ПРИМЕЧАНИЕ : Предполагается, что fttext имеет тип " text ", а не " ключевое слово "в вашей схеме.Ключевое слово не анализируется во время индексации и сохраняется как "целое слово (а)".Так что «содержит» не работает на них, точный поиск сделать.

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