Муниципальное образовательное учреждение дополнительного Методический центр «Раменский дом учителя»



  • Как научиться
  • Уроки начинающим
  • _empty_
  • Новости
  • Статьи

    Функция Оценка Запрос | Elasticsearch Reference [7.1] | Эластичный

    1. Поддерживаемые функции затухания редактировать
    2. Нормальный распад, ключевое слово Гаусс редактировать
    3. Экспоненциальный спад, ключевое слово exp редактировать
    4. Линейный распад, ключевое слово linear редактировать
    5. Поддерживаемые поля для функций распада редактировать
    6. Что если поле отсутствует? редактировать

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

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

    function_score может использоваться только с одной функцией, подобной этой:

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

    GET / _search {"query": {"function_score": {"query": {"match_all": {}}, "boost": "5", GET / _search {query: {function_score: {query: {match_all: {}}, boost: 5,   functions: [{filter: {match: {test: bar}}, random_score: {},   weight: 23}, {filter: {match: {test: cat}}, weight: 42}], max_boost: 42, score_mode: max, boost_mode: multiply, min_score: 42}}} "functions": [{"filter": {"match": {"test": "bar"}}, "random_score": {}, "weight": 23}, {"filter": {"match": {"test": "cat"}}, "weight": 42}], "max_boost": 42, "score_mode": "max", "boost_mode": "multiply", "min_score": 42}}}

    Оценки, произведенные фильтрующим запросом каждой функции, не имеют значения.

    Если с функцией не указан фильтр, это эквивалентно указанию «match_all»: {}

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

    Поскольку оценки могут быть в разных масштабах (например, между 0 и 1 для функций затухания, но произвольными для field_value_factor), а также из-за того, что иногда желательно различное влияние функций на оценку, оценка каждой функции может быть скорректирована с помощью определенного пользователем вес. Вес может быть определен для каждой функции в массиве функций (пример выше) и умножен на результат, вычисленный соответствующей функцией. Если вес указан без какого-либо другого объявления функции, вес действует как функция, которая просто возвращает вес.

    В случае, если для параметра Score_mode задано значение avg, отдельные результаты будут объединены в средневзвешенное значение. Например, если две функции возвращают оценку 1 и 2 и их соответствующие веса равны 3 и 4, то их оценки будут объединены как (1 * 3 + 2 * 4) / (3 + 4), а не (1 * 3 + 2) * 4) / 2.

    Новый счет может быть ограничен, чтобы не превышать определенный предел, установив параметр max_boost. Значением по умолчанию для max_boost является FLT_MAX.

    Вновь вычисленная оценка комбинируется с оценкой запроса. Параметр boost_mode определяет как:

    По умолчанию изменение счета не меняет, какие документы соответствуют. Чтобы исключить документы, которые не соответствуют определенному пороговому значению, для параметра min_score можно установить желаемое пороговое значение для оценки.

    Чтобы min_score работал, все документы, возвращаемые запросом, должны быть оценены, а затем отфильтрованы по одному.

    Запрос function_score предоставляет несколько типов функций оценки.

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

    GET / _search {"query": {"function_score": {"query": {"match": {"message": "asticsearch "}}," script_score ": {" script ": {" source ":" Math .log (2 + doc ['likes']. value) "}}}}}

    Результаты, полученные функцией script_score, должны быть неотрицательными, в противном случае будет выдана ошибка.

    Помимо различных значений и выражений поля сценария, параметр сценария _score можно использовать для получения оценки на основе упакованного запроса.

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

    GET / _search {"query": {"function_score": {"query": {"match": {"message": "asticsearch "}}," script_score ": {" script ": {" params ": {" a ": 5," b ": 1.2}," source ":" params.a / Math.pow (params.b, doc ['likes']. value) "}}}}}

    Обратите внимание, что в отличие от запроса custom_score, оценка запроса умножается на результат оценки скрипта. Если вы хотите запретить это, установите «boost_mode»: «replace»

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

    Random_score генерирует оценки, которые равномерно распределены от 0 до, но не включая 1. По умолчанию он использует внутренние идентификаторы документов Lucene в качестве источника случайности, что очень эффективно, но, к сожалению, не воспроизводимо, поскольку документы могут быть перенумерованы слияниями.

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

    Было возможно установить начальное число без установки поля, но это устарело, поскольку это требует загрузки полевых данных в поле _id, которое потребляет много памяти.

    GET / _search {"query": {"function_score": {"random_score": {"seed": 10, "field": "_seq_no"}}}}}

    Функция field_value_factor позволяет вам использовать поле из документа, чтобы влиять на оценку. Это похоже на использование функции script_score, однако позволяет избежать накладных расходов при написании сценариев. Если используется многозначное поле, в вычислениях используется только первое значение поля.

    В качестве примера представьте, что у вас есть документ, проиндексированный с помощью числового поля «Нравится», и вы хотите повлиять на оценку документа с помощью этого поля, например, пример будет выглядеть так:

    GET / _search {"query": {"function_score": {"field_value_factor": {"field": "likes", "factor": 1.2, "модификатор": "sqrt", "отсутствующий": 1}}}}

    Что будет переводить в следующую формулу для оценки:

    sqrt (1.2 * doc ['likes']. value)

    Есть несколько опций для функции field_value_factor:

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

    Результаты, полученные с помощью функции field_value_score, должны быть неотрицательными, в противном случае будет выдана ошибка. Модификаторы log и ln будут давать отрицательные значения, если используются значения от 0 до 1. Обязательно ограничьте значения поля с помощью фильтра диапазона, чтобы избежать этого, или используйте log1p и ln1p.

    Имейте в виду, что получение log () 0 или квадратного корня из отрицательного числа является недопустимой операцией, и будет выдано исключение. Обязательно ограничьте значения поля с помощью фильтра диапазона, чтобы избежать этого, или используйте log1p и ln1p.

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

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

    DECAY_FUNCTION должен быть линейным, exp или gauss.

    Указанное поле должно быть числовым, датовым или географическим полем.

    В приведенном выше примере поле является geo_point и происхождение может быть предоставлено в географическом формате. масштаб и смещение должны быть указаны с единицей измерения в этом случае. Если ваше поле является полем даты, вы можете установить масштаб и смещение в виде дней, недель и т. Д. Пример:

    Пример:

    Формат даты происхождения зависит от формат определены в вашем отображении. Если вы не определили источник, используется текущее время.

    Если вы не определили источник, используется текущее время

    Параметры смещения и затухания являются необязательными.

    В первом примере ваши документы могут представлять отели и содержать поле географического местоположения. Вы хотите вычислить функцию затухания в зависимости от того, как далеко находится отель от заданного местоположения. Вы можете не сразу увидеть, какой масштаб выбрать для функции Гаусса, но вы можете сказать что-то вроде: «На расстоянии 2 км от желаемого места счет должен быть уменьшен до одной трети». Параметр «масштаб» будет затем автоматически настроен, чтобы гарантировать, что функция оценки вычислит оценку 0,33 для отелей, которые находятся на расстоянии 2 км от желаемого местоположения.

    Во втором примере документы со значением поля между 2013-09-12 и 2013-09-22 будут иметь вес 1,0, а документы с 15-дневным сроком с этой даты - 0,5.

    Поддерживаемые функции затухания редактировать

    DECAY_FUNCTION определяет форму распада:

    гаусс

    Нормальный распад, рассчитывается как:

    где где   вычисляется, чтобы гарантировать, что оценка принимает значение затухания на шкале расстояний от начала координат + -смещение вычисляется, чтобы гарантировать, что оценка принимает значение затухания на шкале расстояний от начала координат + -смещение

    Увидеть Нормальный распад, ключевое слово Гаусс для графиков, демонстрирующих кривую, сгенерированную функцией Гаусса.

    ехр

    Экспоненциальный спад, рассчитывается как:

    где опять параметр где опять параметр   вычисляется, чтобы гарантировать, что оценка принимает значение затухания на шкале расстояний от начала координат + -смещение вычисляется, чтобы гарантировать, что оценка принимает значение затухания на шкале расстояний от начала координат + -смещение

    Увидеть Экспоненциальный спад, ключевое слово exp для графиков, демонстрирующих кривую, сгенерированную функцией exp.

    линейный

    Линейный распад, рассчитывается как:

    , ,

    где снова параметр s вычисляется, чтобы гарантировать, что оценка принимает затухание значения на шкале расстояний от начала координат + -смещение

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

    Для отдельных функций три функции распада вместе с их параметрами можно визуализировать следующим образом (поле в этом примере называется «возраст»):

    Для отдельных функций три функции распада вместе с их параметрами можно визуализировать следующим образом (поле в этом примере называется «возраст»):

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

    Пример:

    "DECAY_FUNCTION": {"FIELD_NAME": {"origin": ..., "scale": ...}, "multi_value_mode": "avg"}

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

    Вы хотите, чтобы результаты запроса, соответствующие вашему критерию (например, «гостиница, Нанси, некурящий»), оценивались с учетом расстояния до центра города и цены.

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

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

    В этом примере поля могут называться «цена» для цены отеля и «местоположение» для координат этого отеля.

    Функция цены в этом случае будет

    Функция цены в этом случае будет

    Эта функция затухания также может быть линейной или эксп.

    и для местоположения:

    Эта функция затухания также может быть линейной или эксп.

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

    GET / _search {"query": {"function_score": {"functions": [{"gauss": {"price": {"origin": "0", "scale": "20"}}}, { "gauss": {"location": {"origin": "11, 12", "scale": "2km"}}}], "query": {"match": {"properties": "Балкон"} }, "score_mode": "multiply"}}}

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

    Нормальный распад, ключевое слово Гаусс редактировать

    При выборе гаусса в качестве функции затухания в вышеприведенном примере контур и график поверхности множителя выглядит следующим образом:

    Предположим, что ваши оригинальные результаты поиска соответствуют трем отелям:

    • "Backback Nap"
    • "Drink n Drive"
    • "BnB Bellevue".

    «Drink n Drive» довольно далеко от вашего определенного местоположения (около 2 км) и не слишком дешев (около 13 евро), поэтому он получает низкий коэффициент в 0,56 раза. «BnB Bellevue» и «Backback Nap» довольно близки к определенному местоположению, но «BnB Bellevue» дешевле, поэтому он получает множитель 0,86, тогда как «Backpack Nap» получает значение 0,66.

    Экспоненциальный спад, ключевое слово exp редактировать

    При выборе exp в качестве функции затухания в вышеприведенном примере контур и график поверхности множителя выглядит следующим образом:

    Линейный распад, ключевое слово linear редактировать

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

    Поддерживаемые поля для функций распада редактировать

    Поддерживаются только числовые поля, поля даты и географической точки.

    Что если поле отсутствует? редактировать

    Если числовое поле отсутствует в документе, функция вернет 1.

    Что если поле отсутствует?

    Новости

    Где купить жд билеты онлайн

    Если вы решили своевременно придбати залізничні квитки, рекомендую воспользоваться услугами сервиса proizd.ua. Настоящий сервис

    Жд билеты в Украине

    Хочешь приобрести жд билеты Украина очень быстро и в комфортных условиях? Воспользуйся услугами настоящего интернет-сервиса. Он поможет тебе

    Где купить объектив на iphone 5

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

    Как научиться играть на гитаре
    Гитара – универсальный музыкальный инструмент, прекрасно звучащий, как в качестве аккомпанемента, так и виде соло. Мягкий и глубокий тембр классики, звонкий и громкий акустики заставляют влюбляться людей

    Здесь
    Из года в год с наступлением лета все больше и больше жителей России занимаются сбором дикорастущих трав и лекарственных растений. Забота о собственном здоровье здесь ни при чем. Для многих жителей провинции