Запросом функции является запрос, который вызывает функцию для одного (или более) из доступных полей.Вы добавляете запрос функции, если значение, которое у вас есть в поле, должно быть обработано, чтобы получить желаемое значение - точно так же, как в математическом смысле.
Отображение «разницы между запросом с функцией»Запросы и без "на самом деле невозможно, так как они не делают то же самое.Вы выбираете один (или оба) в зависимости от того, что вам нужно.
Принятый пример из справочного руководства. Предположим, у нас есть набор документов, описывающих пользователей, и у этих пользователей есть два поля - mails_read
иmails_received
.Чтобы получить любого, кто прочитал менее 50% своих писем, мы можем применить запрос фильтра как функцию (с парсером запроса frange) (fq
здесь означает запрос фильтра - frange
- это то, что делает его запросом функции):
fq={!frange l=0 u=0.5}div(mails_read,mails_received)
В противном случае мы были бы ограничены в получении тех, кто только что прочитал определенный диапазон электронных писем или получил определенный диапазон электронных писем - или нам пришлось бы индексировать значение, которое сохранялосьобновленное значение для mails_read / mails_received
каждый раз, когда мы обновляем документ (что является совершенно правильной стратегией и, как правило, более эффективной).
Другой пример - использование функционального запроса для ускорения документов и наиболее распространенным является повышение по времени (т. е. более поздний документ получает большее повышение):
bf=recip(ms(NOW/HOUR,mydatefield),3.16e-11,1,1)
Это применяет функцию recip
к разнице (выраженной в миллисекундах) междуmydatefield
поле и текущий час.
rece : выполняет обратную функцию с rec (x, m, a, b), реализующую a / (m * x + b), где m, a, b - константыи x - любая произвольно сложная функция.
Еще одним хорошим вариантом использования является использование специального поля _val_
- если вы выполняете запрос к этому магическому полю с помощью функции, значение, возвращаемое функциейбудет использоваться в качестве оценки документа (вместо того, чтобы воздействовать на нее путем увеличения или ограничения результирующего набора документов в качестве запроса).
_val_:"div(popularity, price)"
.. даст оценку документа на основе результатаделения (что представляют значения, зависит от вас).