ElasticSearch соответствие поля слов - PullRequest
0 голосов
/ 18 сентября 2018

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

  1. условия запроса являются подмножеством поля
  2. условия поля являются подмножеством запроса

1)удовлетворен использованием оператора and в запросе на совпадение.Но я не смог найти способ для 2).

Пока мне удалось достичь этого, только используя highlight и требуя, чтобы вся строка была выделена (в моей логике приложения))

Есть ли другой способ?

Пример:

PUT bananas/banana/1
{ "name" : "banana"}

PUT bananas/banana/2
{ "name" : "ripe banana"}


PUT bananas/banana/3
{ "name" : "not so ripe banana"}

GET bananas/_search
{
  "query" : {
    "match": { "_all": { "query": "ripe banana", "operator": "and" } }
  },
  "highlight" : {
    "fields" : { "*" : { } },
    "require_field_match": false
  }
}

# Result (hits only):

  "hits" : {
    "hits" : [
      {
        "_index" : "bananas",
        "_type" : "banana",
        "_id" : "3",
        "_score" : 0.5753642,
        "_source" : {
          "name" : "not so ripe banana"
        },
        "highlight" : {
          "name" : [
            "not so <em>ripe</em> <em>banana</em>"
          ]
        }
      },
      {
        "_index" : "bananas",
        "_type" : "banana",
        "_id" : "2",
        "_score" : 0.51623213,
        "_source" : {
          "name" : "ripe banana"
        },
        "highlight" : {
          "name" : [
            "<em>ripe</em> <em>banana</em>"
          ]
        }
      }
    ]
  }

Так что в этом случае я бы хотел исключить результат для "не очень спелых бананов" (он даже возвращается по какой-то причине первым!).Мой обходной путь - проверка части ответа highlight, чтобы увидеть, есть ли что-то невыделенное

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