Todos los productos
Search
Centro de documentos

OpenSearch:Introduction to UDFs

Última actualización: Sep 04, 2026

OpenSearch proporciona funciones definidas por el usuario (UDF) integradas para la coincidencia de campos, recuperación de índices, mapeo de valores, comprobación de rangos y normalización de puntuaciones.

Lista de UDF

Nombre de la función

Descripción

contain

Comprueba si el valor de un campo se encuentra en una colección determinada. Admite valores únicos y múltiples.

notcontain

Comprueba si el valor de un campo no se encuentra en una colección determinada. Admite valores únicos y múltiples.

MATCHINDEX

Consulta el índice invertido de un campo especificado mediante una condición dada.

QUERY

Consulta el índice invertido mediante una condición dada. Utiliza la sintaxis de consulta original de HA3.

hashcombine

Combina varios valores int64 en un único valor int64.

rangevalue

Asigna un valor continuo a un valor discreto.

range

Comprueba si el valor de un campo se encuentra dentro de un intervalo determinado.

normalizescore

Normaliza el valor de un campo.

Ejemplos de recuperación

Recuperar todo el contenido de la tabla

SELECT nid, price, brand, size FROM phone ORDER BY nid LIMIT 1000 
USE_TIME: 0.881, ROW_COUNT: 10

------------------------------- TABLE INFO ---------------------------
                 nid |               price |               brand |                size |
                   1 |                3599 |              Huawei |                 5.9 |
                   2 |                4388 |              Huawei |                 5.5 |
                   3 |                 899 |              Xiaomi |                   5 |
                   4 |                2999 |                OPPO |                 5.5 |
                   5 |                1299 |               Meizu |                 5.5 |
                   6 |                 169 |               Nokia |                 1.4 |
                   7 |                3599 |               Apple |                 4.7 |
                   8 |                5998 |               Apple |                 5.5 |
                   9 |                4298 |               Apple |                 4.7 |
                  10 |                5688 |             Samsung |                 5.6 |

contain

  • Prototipo

    boolean contain(INT a, const string b)
    boolean contain(LITERAL a, const string b)
    boolean contain(INT_ARRAY a, const string b)
    boolean contain(LITERAL_ARRAY a, const string b)
  • Descripción

Comprueba si el parámetro a contiene el contenido especificado en el parámetro b.

  • Parámetros

    Parámetro a: parámetro de entrada. Los tipos de datos compatibles son INT, LITERAL, INT_ARRAY y LITERAL_ARRAY.

    Parámetro b: expresión de cadena constante. Puede usar una barra vertical (|) para separar varios valores. La función devuelve true si alguno de los valores coincide.

  • Valor de retorno

    Devuelve un valor booleano que indica si el parámetro a contiene la colección especificada en el parámetro b.

  • Ejemplo

SELECT nid, price, brand, size FROM phone WHERE contain(nid, '1|2|3') ORDER BY nid LIMIT 100
USE_TIME: 0.059, ROW_COUNT: 3

------------------------------- TABLE INFO ---------------------------
                 nid |               price |               brand |                size |
                   1 |                3599 |              Huawei |                 5.9 |
                   2 |                4388 |              Huawei |                 5.5 |
                   3 |                 899 |              Xiaomi |                   5 |

notcontain

  • Prototipo

    boolean notcontain(INT a, const string b)
    boolean notcontain(LITERAL a, const string b)
    boolean notcontain(INT_ARRAY a, const string b)
    boolean notcontain(LITERAL_ARRAY a, const string b)
  • Descripción

    Comprueba si el parámetro a no contiene el contenido especificado en el parámetro b.

  • Parámetros

    Parámetro a: parámetro de entrada. Los tipos de datos compatibles son INT, LITERAL, INT_ARRAY y LITERAL_ARRAY.

    Parámetro b: expresión de cadena constante. Puede usar una barra vertical (|) para separar varios valores. La función devuelve true si ninguno de los valores coincide.

  • Valor de retorno

    Devuelve un valor booleano que indica si el parámetro a no se encuentra en la colección especificada por el parámetro b.

  • Ejemplo

    Utilice la función notcontain para recuperar todos los registros donde el valor del campo nid no se encuentre en el rango [1, 2, 3].

    SELECT nid, price, brand, size FROM phone WHERE notcontain(nid, '1|2|3') ORDER BY nid LIMIT 100
    USE_TIME: 0.092, ROW_COUNT: 7
    
    ------------------------------- TABLE INFO ---------------------------
                     nid |               price |               brand |                size |
                       4 |                2999 |                OPPO |                 5.5 |
                       5 |                1299 |               Meizu |                 5.5 |
                       6 |                 169 |               Nokia |                 1.4 |
                       7 |                3599 |               Apple |                 4.7 |
                       8 |                5998 |               Apple |                 5.5 |
                       9 |                4298 |               Apple |                 4.7 |
                      10 |                5688 |             Samsung |                 5.6 |

MATCHINDEX

  • Prototipo

    boolean MATCHINDEX(const string a, const string b)
  • Descripción

    Comprueba si el campo a contiene el contenido especificado en b. Esta función se utiliza para la recuperación de índices de un solo campo.

    Se usa exclusivamente para la aceleración y optimización del índice invertido durante la fase de recuperación de una tabla de índices. Se puede utilizar en la cláusula WHERE.

  • Parámetros

    Parámetro a: cadena constante que especifica el campo para el cual se creó un índice invertido con fines de optimización.

    Parámetro b: cadena constante que especifica el contenido que se debe buscar.

El valor del parámetro b se busca como una sola cadena.

  • Valor de retorno

    Devuelve un valor booleano que indica si el campo a contiene el contenido especificado en el parámetro b.

  • Ejemplo

    Utilice la función MATCHINDEX para recuperar registros donde el campo de índice invertido title contenga la palabra clave "camera".

    SELECT nid, brand FROM phone WHERE MATCHINDEX('title', 'camera')
    ------------------------------- TABLE INFO ---------------------------
                     nid |               brand |
                       1 |              Huawei |

QUERY

  • Prototipo

    boolean QUERY(const string a, const string b)
  • Descripción

    Comprueba si el campo a contiene el contenido especificado en b. Esta función ofrece capacidades automáticas de tokenización y recuperación.

    Esta función permite utilizar la sintaxis de consulta nativa de HA3 en modo SQL.

    Se usa exclusivamente para la aceleración y optimización del índice invertido durante la fase de recuperación de una tabla de índices. Se puede utilizar en la cláusula WHERE.

  • Parámetros

    Parámetro a: cadena constante que especifica el campo de índice predeterminado.

    Parámetro b: constante de cadena que proporciona la expresión de consulta.

Este parámetro es analizado por el analizador sintáctico de consultas y admite índices de rango.

  • Valor de retorno

    Devuelve un valor booleano que indica si el campo a contiene el contenido especificado en el parámetro b.

  • Ejemplo

    Utilice la función QUERY para consultar elementos donde el campo title contenga "Huawei phone".

  • SELECT nid, price, brand, size FROM phone WHERE QUERY(title, 'Huawei phone')
    USE_TIME: 0.034, ROW_COUNT: 1
    
    ------------------------------- TABLE INFO ---------------------------
                     nid |               price |               brand |                size |
                       2 |                4388 |              Huawei |                 5.5 |
  • Utilice condiciones combinadas para recuperar elementos donde el campo title contenga "Huawei phone" u "OPPO phone".

  • SELECT nid, price, brand, size FROM phone 
       WHERE QUERY(title, 'Huawei phone OR OPPO phone')
    USE_TIME: 0.03, ROW_COUNT: 2
    
    ------------------------------- TABLE INFO ---------------------------
                     nid |               price |               brand |                size |
                       2 |                4388 |              Huawei |                 5.5 |
                       4 |                2999 |                OPPO |                 5.5 |
  • Nota:

    El segundo parámetro de la UDF QUERY es procesado por el analizador sintáctico de consultas de HA3. Si el segundo parámetro es una cadena constante, las comillas simples circundantes se eliminan antes de pasar la cadena al analizador de consultas de HA3. Por ejemplo, QUERY(title, 'Huawei phone OPPO phone') equivale a la consulta de HA3 query=Huawei phone OPPO phone. Para incluir comillas en la consulta, como en la cadena de consulta de HA3 query='Huawei phone' AND 'OPPO phone', utilice la expresión QUERY(title, '''Huawei phone'' AND ''OPPO phone'''). Para obtener más información sobre las cadenas constantes en instrucciones SQL, consulte la sección 'Constant strings' en Límites.

  • Errores comunes:

  • Tipo de error

    Formato incorrecto

    Formato correcto

    Error de sintaxis. La consulta no devuelve resultados.

    QUERY('pidvid','123:456')

    QUERY('pidvid','"123:456"')

rangevalue

  • Prototipo

    float rangevalue(float v, string desc)
  • Descripción

Asigna un valor continuo a un valor discreto.

  • Parámetros

    Parámetro v: columna que contiene los valores continuos.

    Parámetro desc: regla de asignación.

  • Valor de retorno

    El valor discreto asignado.

  • Ejemplo

    Utilice la función rangevalue para asignar los valores del campo price. Los valores menores o iguales a 1000 se asignan a 1.0. Los valores mayores que 1000 y menores o iguales a 5000 se asignan a 2.0. El resto de los valores no se asignan y conservan su valor original.

    SELECT rangevalue(price,'(,1000]:1.0;(1000,5000]:2.0') FROM phone;

range

  • Prototipo:

    boolean range(INT v, const string rangeDesc)
    boolean range(FLOAT v, const string rangeDesc)
    boolean range(DOUBLE v, const string rangeDesc)
  • Descripción

Comprueba si el valor de un campo de índice directo se encuentra dentro de un intervalo especificado.

  • Parámetros

    Parámetro v: campo, que admite tipos numéricos de un solo valor.

    Parámetro rangeDesc: constante que especifica el rango numérico. Se admiten intervalos abiertos, cerrados y semiabiertos.

  • Valor de retorno

    Devuelve un valor booleano que indica si v se encuentra dentro del rango especificado por rangeDesc. La siguiente tabla muestra las expresiones admitidas y sus valores de retorno.

Ejemplo de llamada

Valor de retorno

range(v, "[0, 100]")

0<=v<=100

range(v, "(0, 100)")

0<v<100

range(v, "[0, 100)")

0<=v<100

range(v, "(0, 100]")

0<v<=100

range(v, "(0,)")

range(v, "(0,]")

0<v

range(v, "[0,)")

range(v, "[0,]")

0<=v

range(v, "(,100)")

range(v, "[,100)")

v<100

range(v, "(,100]")

range(v, "[,100]")

v<=100

range(v, "(,)")

range(v, "[,]")

range(v, "[,)")

range(v, "(,]")

true

Nota: El parámetro rangeDesc también admite el uso de un signo de exclamación (!) al inicio de la cadena para negar el intervalo especificado.

  • Ejemplo

    Utilice la función range:

    SELECT nid FROM phone where range(price,"(127.0,30.0)")
    SELECT nid FROM phone where range(price,"!(127.0,30.0)")

    Nota: range es una palabra clave reservada de SQL y debe escaparse.

normalizescore

  • Prototipo

    double normalizescore(INT v, const double defaultScore)
    double normalizescore(FLOAT v, const double defaultScore)
    double normalizescore(DOUBLE v, const double defaultScore)
  • Descripción

Normaliza el valor del campo de entrada v al tipo de datos double. Si el campo no está inicializado, se utiliza la puntuación predeterminada.

  • Parámetros

    Parámetro v: campo, que admite tipos numéricos de un solo valor.

    Parámetro defaultScore: constante que especifica la puntuación predeterminada. Debe ser una cadena que pueda convertirse en un valor double válido.

  • Valor de retorno

    Devuelve el valor original de v si v está inicializado. De lo contrario, devuelve el valor de defaultScore.

  • Ejemplo

For three documents that have a `price` field, the original content is as follows:
doc1: price=1.0
doc2: price= (not initialized)
doc3: price=2.0

Execute
select normalizescore(price, "1000.0") as normalized_score from phone

USE_TIME: 32.141ms, ROW_COUNT: 2

------------------------------- TABLE INFO ---------------------------
          normalized_score(double) |
                            1.0    |
                            1000.0 |
                            2.0.   |