Elasticsearch: попытка найти подходящий алгоритм поискового запроса - PullRequest
0 голосов
/ 06 мая 2020

Я хочу получить результат поиска elasti c таким образом, чтобы введенная строка поиска соответствовала нескольким полям документов и выводила результат из индексов: максимальное количество записей сопоставления полей показывает первое и наименьшее количество записей сопоставления полей последний в списке.

Например: если я ищу ключевое слово «тест» и у меня более 12 полей в одной записи индекса.

Теперь, если тест соответствует в 10 полях в 1 записи, тогда совпадение в 6 полях в других записях и затем 2 поля в других записях.

Я хочу показать первую запись в листинге с совпадением строки поиска с максимальным количеством совпадений полей с минимальным количеством совпадений полей.

В соответствии с этим примером первая запись показывает с совпадением 10 полей со строкой поиска, вторая с совпадением 6 полей и третья с совпадением 2 полей и go по ...

Хорошо, если возможно чтобы получить хорошее предложение или пример того же.

1 Ответ

1 голос
/ 06 мая 2020

Это поведение по умолчанию elasticsearch. Документы с большим количеством совпадений оцениваются выше

Запрос:

{
  "query": {
    "query_string": {
      "default_field": "*", -->search in all fields
      "query": "test"
    }
  }
}

Результат:

{
        "_index" : "index18",
        "_type" : "_doc",
        "_id" : "iSCe6nEB8J88APx3YBGn",
        "_score" : 0.9808291,  --> scored higher as two fields match
        "_source" : {
          "field1" : "test",
          "field2" : "test"
        }
      },
      {
        "_index" : "index18",
        "_type" : "_doc",
        "_id" : "iiCe6nEB8J88APx3ghF-",
        "_score" : 0.4700036,
        "_source" : {
          "field1" : "test",
          "field2" : "abc"
        }
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...