Todos los productos
Search
Centro de documentos

OpenSearch:Notas de uso

Última actualización: Sep 04, 2026

Notas de uso para las funciones definidas por el usuario (UDF).

Lista de UDF

Función

Descripción

contain

Comprueba si un valor de campo está incluido en un conjunto especificado. Es compatible con campos de valor único y de valores múltiples.

notcontain

Comprueba si un valor de campo está excluido de un conjunto especificado. Es compatible con campos de valor único y de valores múltiples.

MATCHINDEX

Consulta el índice invertido de un campo especificado según las condiciones indicadas.

QUERY

Consulta índices invertidos según las condiciones especificadas mediante la sintaxis de consulta original de HA3.

hashcombine

Combina varios valores INT64 en un solo valor INT64.

rangevalue

Mapea valores de campo por rango.

range

Comprueba si un valor de campo está incluido en un intervalo especificado.

normalizescore

Normaliza los valores de campo.

Consultas de ejemplo

Consultar todos los datos 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 campo de valor único o de valores múltiples a contiene el contenido descrito en b.

  • Parámetros

    Parámetro a: Una entrada de tipo INT, LITERAL, INT_ARRAY o LITERAL_ARRAY.

    Parámetro b: Una expresión de cadena constante, separada por |, que indica que basta con coincidir con cualquiera de los elementos.

  • Valor de retorno

    Un valor booleano que indica si el parámetro a contiene el conjunto descrito 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 campo de valor único o de valores múltiples a no está en el contenido descrito en b.

  • Parámetros

    Parámetro a: Una entrada de tipo INT, LITERAL, INT_ARRAY o LITERAL_ARRAY.

    Parámetro b: Una expresión de cadena constante, separada por |, que indica que no se debe coincidir con ninguno de los elementos.

  • Valor de retorno

    Un valor booleano que indica si el parámetro a no está en el conjunto descrito en el parámetro b.

  • Ejemplo

    Use notcontain para recuperar todos los registros cuyo valor de campo nid no esté 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 descrito en b, para la recuperación de índices de campo único.

    Se usa únicamente para la optimización de aceleración del índice invertido durante la fase de recuperación de la tabla de índices, en condiciones WHERE.

  • Parámetros

    Parámetro a: Una entrada de tipo cadena constante, correspondiente al campo para el cual se construyó la optimización del índice invertido.

    Parámetro b: Una entrada de tipo cadena constante, cuyo contenido es la descripción de la cadena.

El parámetro b se puede consultar como una sola cadena.

  • Valor de retorno

    Un valor booleano que indica si el campo a contiene el contenido descrito en el parámetro b.

  • Ejemplo

    Use MATCHINDEX para recuperar registros cuyo campo de índice invertido title contenga la palabra clave "lens".

    SELECT nid, brand FROM phone WHERE MATCHINDEX('title', 'lens')
    ------------------------------- 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 descrito en b, y proporciona capacidades automáticas de tokenización y recuperación.

    Se utiliza para admitir la sintaxis de consulta nativa del motor HA3 (sintaxis de consulta HA3) en modo SQL.

    Se usa únicamente para la optimización de aceleración del índice invertido durante la fase de recuperación de la tabla de índices, en condiciones WHERE.

  • Parámetros

    Parámetro a: Una entrada de tipo cadena constante, que se utiliza como campo de índice predeterminado.

    Parámetro b: Una entrada de tipo cadena constante, cuyo contenido es la descripción de la cadena.

Se anexa al análisis de la consulta y se puede utilizar para índices de rango.

  • Valor de retorno

    Un valor booleano que indica si el campo a contiene el contenido descrito en el parámetro b.

  • Ejemplo

  • Use QUERY para consultar entradas cuyo 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 |
  • Use una condición combinada para recuperar entradas cuyo 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 parámetro 2 de la UDF QUERY es analizado por el parser de sintaxis de consulta HA3. En la sintaxis de consulta HA3, cuando el parámetro 2 es una cadena constante, tenga en cuenta que se deben eliminar las comillas simples iniciales y finales al pasarlo a la consulta HA3. Por ejemplo, QUERY(title, 'Huawei phone OPPO phone') equivale a la consulta HA3 query=Huawei phone OPPO phone. Si necesita agregar comillas dentro de la descripción de la consulta, como en la cadena de consulta HA3 query='Huawei phone' AND 'OPPO phone', la forma equivalente en la UDF QUERY es QUERY(title, '''Huawei phone'' AND ''OPPO phone'''). Para notas de uso sobre cadenas constantes en descripciones SQL, consulte la sección 'Cadenas constantes' en [Límites].

  • Errores comunes:

  • Tipo de error

    Forma incorrecta

    Forma correcta

    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

Mapea valores continuos a valores discretos.

  • Parámetros

    Parámetro v: Una columna de valores continuos.

    Parámetro desc: La regla de mapeo.

  • Valor de retorno

    El valor discreto después del mapeo.

  • Ejemplo

    Use rangevalue para mapear el valor de precio: los valores menores o iguales a 1000 se mapean a 1.0, los valores mayores que 1000 y menores o iguales a 5000 se mapean a 2.0, y otros valores conservan el precio 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 un valor de campo de índice directo se encuentra dentro de un intervalo.

  • Parámetros

    Parámetro v: Un campo. Se admiten tipos numéricos de valor único.

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

  • Valor de retorno

    Comprueba si v está dentro del rango descrito por rangeDesc. La siguiente tabla enumera las notaciones admitidas y sus valores de retorno.

Ejemplo de notación 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: rangeDesc también admite el símbolo "!" al inicio de la línea para negar el intervalo deseado.

  • Ejemplo

    Use 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 en 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 campo de entrada v y lo convierte al tipo double. Si está inicializado, se devuelve el valor original; si no está inicializado, se devuelve defaultScore.

  • Parámetros

    Parámetro v: Un campo. Se admiten tipos numéricos de valor único.

    Parámetro defaultScore: Una descripción constante que debe ser una cadena convertible a un tipo double válido.

  • Valor de retorno

    Si v está inicializado, se devuelve el valor original; si no está inicializado, se devuelve defaultScore.

  • Ejemplo

For 3 docs that have the field price, the original content is as follows:
doc1: price=1.0
doc2: price= (uninitialized)
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.   |