Elasticsearch: документ имеет равное количество совпадений в поле

Используя elasticsearch, я просматриваю индекс в поле, которое обычно содержит большой объем текста, и мне просто нужно знать, сколько раз запрос был сопоставлен для каждого документа. Кто-нибудь знает хороший способ сделать это? Я бы хотел сделать это через значение оценки, если это возможно. Так, например, если я введу слово «лиса» по запросу «быстрая коричневая лиса перепрыгнула через ленивого лиса», я бы получил что-то, что включает:

"_score": 2.0


person Cam S    schedule 31.01.2015    source источник
comment
Похоже, об этом позаботится опция запроса объяснения. {объяснение: правда, запрос: {термин: {пользователь: кимчы}}}. Термин "частота" в результате даст вам количество обращений к документу. Вот ссылка: elasticsearch.org/guide/ ru / elasticsearch / reference / current /   -  person Cam S    schedule 01.02.2015


Ответы (1)


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

Теперь, возвращаясь к вашему требованию, вы можете использовать модуль сценариев и запрос оценки функции

{
  "query": {
    "function_score": {
      "query": {
        "match": {
          "field": "fox"
        }
      },
      "boost_mode": "replace",
      "functions": [
        {
          "script_score": {
            "script": "_index['field']['fox'].tf()"
          }
        }
      ]
    }
  }
}
person Vineeth Mohan    schedule 01.02.2015