Что на самом деле норм хранить в Elasticsearch - PullRequest
1 голос
/ 19 июня 2019

Я наткнулся на отображение, где в некоторых полях, где используются custom analyzer, нормы , отключены.

Затем я прочитал о нормах и https://www.elastic.co/guide/en/elasticsearch/reference/current/norms.html нашел этот официальный документ, но он не дает четкого объяснения что именно он хранит и как на самом деле он полезен для оценки .

Ниже приведен фрагмент ссылки сверху:

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

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

Итак, вкратце у меня ниже сомнения:

  1. Что именно норм хранит?
  2. Что такое относительная длина поля и как это полезно для оценки?
  3. Значение по умолчанию норм?
  4. Можно ли просмотреть содержание норм с помощью какого-либо запроса ES?

1 Ответ

1 голос
/ 19 июня 2019

вот попытка ответа:)

Что конкретно хранится в нормах и какова относительная длина поля и как это полезно для оценки?

хранит информациючто позволяет упругой знать относительную длину поля.Зачем ?

Как долго это поле?Чем короче поле, тем выше вес.Если термин появляется в коротком поле, например в поле заголовка, более вероятно, что содержимое этого поля относится к термину, чем если бы этот термин появился в гораздо большем поле тела

Значение по умолчанию для норм?

Нормы активируются в текстовом поле и отключаются в других полях.

Можно ли просмотреть содержание норм с помощью какого-либо запроса ES?

Нет, нормы хранятся в данных сегмента.Но вы можете увидеть влияние норм, если в своем запросе используете флаг объяснение .Где-то в беспорядке объяснения партитуры вы увидите что-то вроде этого:

{
    "value": 1.4506965,
    "description": "tfNorm, computed as (freq * (k1 + 1)) / (freq + k1 * (1 - b + b * fieldLength / avgFieldLength)) from:",
    "details": [
        {
            "value": 3,
            "description": "termFreq=3.0",
            "details": []
        },
        {
            "value": 1.2,
            "description": "parameter k1",
            "details": []
        },
        {
            "value": 0.75,
            "description": "parameter b",
            "details": []
        },
        {
            "value": 34.572754,
            "description": "avgFieldLength",
            "details": []
        },
        {
            "value": 48,
            "description": "fieldLength",
            "details": []
        }
    ]
}

, где fieldLength и avgFieldLength вычисляются благодаря norms data

Этот ответ является основнымна основе https://www.elastic.co/fr/blog/practical-bm25-part-2-the-bm25-algorithm-and-its-variables и https://www.elastic.co/guide/en/elasticsearch/guide/current/scoring-theory.html#field-norm

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