You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
You can dynamically load and unload UDFs into `searchd` without having to restart the server, and use them in expressions when searching, ranking, etc. A quick summary of the UDF features is as follows:
10
10
11
11
* UDFs can take integer (both 32-bit and 64-bit), float, string, MVA, or `PACKEDFACTORS()` arguments.
12
-
* UDFs can return integer, float, or string values.
12
+
* UDFs can return integer, float, string, or MVA values (MULTI, MULTI64, FLOAT_VECTOR).
13
13
* UDFs can check the argument number, types, and names during the query setup phase, and raise errors.
14
14
15
15
We do not yet support aggregation functions. In other words, your UDFs will be called for just a single document at a time and are expected to return some value for that document. Writing a function that can compute an aggregate value like AVG() over the entire group of documents that share the same GROUP BY key is not yet possible. However, you can use UDFs within the built-in aggregate functions: that is, even though MYCUSTOMAVG() is not supported yet, AVG(MYCUSTOMFUNC()) should work just fine!
16
16
17
+
## MVA Return Types
18
+
19
+
UDFs can also return Multi-Value Attributes (MVA) in addition to scalar values. The supported MVA return types are:
20
+
21
+
***MULTI**: Arrays of 32-bit unsigned integers
22
+
***MULTI64**: Arrays of 64-bit signed integers
23
+
***FLOAT_VECTOR**: Arrays of floating-point numbers
24
+
25
+
MVA UDFs are created using the same `CREATE FUNCTION` syntax with the appropriate return type, and can be used in SELECT statements just like scalar UDFs.
26
+
17
27
UDFs offer a wide range of applications, such as:
18
28
19
29
* incorporating custom mathematical or string functions;
Вы можете динамически загружать и выгружать UDF в `searchd` без необходимости перезапуска сервера, и использовать их в выражениях при поиске, ранжировании и т.д. Краткое описание возможностей UDF:
10
10
11
11
* UDF могут принимать аргументы типа integer (как 32-битные, так и 64-битные), float, string, MVA или `PACKEDFACTORS()`.
12
-
* UDF могут возвращать значения типа integer, float или string.
12
+
* UDF могут возвращать значения целочисленного, вещественного, строкового или MVA типов (MULTI, MULTI64, FLOAT_VECTOR).
13
13
* UDF могут проверять номер, типы и имена аргументов во время стадии настройки запроса и генерировать ошибки.
14
14
15
15
В настоящее время агрегатные функции не поддерживаются. Другими словами, ваши UDF вызываются только для одного документа за раз и должны возвращать некоторое значение для этого документа. Написать функцию, которая может вычислить агрегатное значение, например AVG() для всей группы документов, имеющих одинаковый ключ GROUP BY, пока невозможно. Однако вы можете использовать UDF внутри встроенных агрегатных функций: другими словами, хотя MYCUSTOMAVG() пока не поддерживается, AVG(MYCUSTOMFUNC()) должна работать без проблем!
16
16
17
+
## Типы возвращаемых MVA
18
+
19
+
UDF также могут возвращать многозначные атрибуты (MVA) в дополнение к скалярным значениям. Поддерживаемые типы возвращаемых MVA:
20
+
21
+
***MULTI**: Массивы 32-битных беззнаковых целых чисел
22
+
***MULTI64**: Массивы 64-битных знаковых целых чисел
23
+
***FLOAT_VECTOR**: Массивы чисел с плавающей запятой
24
+
25
+
MVA UDF создаются с использованием того же синтаксиса `CREATE FUNCTION` с соответствующим типом возвращаемого значения и могут использоваться в предложениях SELECT так же, как и скалярные UDF.
26
+
17
27
UDF предоставляют широкий спектр применений, таких как:
18
28
19
29
* внедрение собственных математических или строковых функций;
0 commit comments