La Tabla 9.41, la Tabla 9.42 y la Tabla 9.43 resumen las funciones y operadores que se proporcionan para la búsqueda de texto completo. Ver Capítulo 12 para obtener una explicación detallada de la función de búsqueda de texto de PostgreSQL.

Cuadro 9.41. Operadores de búsqueda de texto

Operador

Descripción

Ejemplo (s)

tsvector@@tsqueryboolean

tsquery@@tsvectorboolean

Lo hace tsvector fósforo tsquery? (Los argumentos se pueden dar en cualquier orden).

to_tsvector('fat cats ate rats') @@ to_tsquery('cat & rat')t

text@@tsqueryboolean

¿La cadena de texto, después de la invocación implícita de to_tsvector(), fósforo tsquery?

'fat cats ate rats' @@ to_tsquery('cat & rat')t

tsvector@@@tsqueryboolean

tsquery@@@tsvectorboolean

Este es un sinónimo obsoleto de @@.

to_tsvector('fat cats ate rats') @@@ to_tsquery('cat & rat')t

tsvector||tsvectortsvector

Concatena dos tsvectors. Si ambas entradas contienen posiciones de lexema, las posiciones de la segunda entrada se ajustan en consecuencia.

'a:1 b:2'::tsvector || 'c:1 d:2 b:3'::tsvector'a':1 'b':2,5 'c':3 'd':4

tsquery&&tsquerytsquery

Y dos tsquerys juntos, produciendo una consulta que coincide con los documentos que coinciden con ambas consultas de entrada.

'fat | rat'::tsquery && 'cat'::tsquery( 'fat' | 'rat' ) & 'cat'

tsquery||tsquerytsquery

Quirófanos dos tsquerys juntos, produciendo una consulta que coincide con los documentos que coinciden con cualquiera de las consultas de entrada.

'fat | rat'::tsquery || 'cat'::tsquery'fat' | 'rat' | 'cat'

!!tsquerytsquery

Niega un tsquery, produciendo una consulta que coincide con documentos que no coinciden con la consulta de entrada.

!! 'cat'::tsquery!'cat'

tsquery<->tsquerytsquery

Construye una consulta de frase, que coincide si las dos consultas de entrada coinciden en lexemas sucesivos.

to_tsquery('fat') <-> to_tsquery('rat')'fat' <-> 'rat'

tsquery@>tsqueryboolean

Lo hace primero tsquery contener el segundo? (Esto considera solo si todos los lexemas que aparecen en una consulta aparecen en la otra, ignorando los operadores de combinación).

'cat'::tsquery @> 'cat & rat'::tsqueryf

tsquery<@tsqueryboolean

Es primero tsquery contenido en el segundo? (Esto considera solo si todos los lexemas que aparecen en una consulta aparecen en la otra, ignorando los operadores de combinación).

'cat'::tsquery <@ 'cat & rat'::tsqueryt

'cat'::tsquery <@ '!cat & rat'::tsqueryt

Además de estos operadores especializados, los operadores de comparación habituales que se muestran en la Tabla 9.1 están disponibles para los tipos tsvector y tsquery. Estos no son muy útiles para la búsqueda de texto pero permiten, por ejemplo, construir índices únicos en columnas de estos tipos.

Tabla 9.42. Funciones de búsqueda de texto

Función

Descripción

Ejemplo (s)

array_to_tsvector ( text[] ) → tsvector

Convierte una matriz de lexemas en un tsvector. Las cadenas dadas se utilizan tal cual sin procesamiento adicional.

array_to_tsvector('fat,cat,rat'::text[])'cat' 'fat' 'rat'

get_current_ts_config () → regconfig

Devuelve el OID de la configuración de búsqueda de texto predeterminada actual (según lo establecido por default_text_search_config).

get_current_ts_config()english

length ( tsvector ) → integer

Devuelve el número de lexemas en el tsvector.

length('fat:2,4 cat:3 rat:5A'::tsvector)3

numnode ( tsquery ) → integer

Devuelve el número de lexemas más operadores en el tsquery.

numnode('(fat & rat) | cat'::tsquery)5

plainto_tsquery ( [ configregconfig, ] querytext ) → tsquery

Convierte texto en un tsquery, normalizando palabras según la configuración especificada o predeterminada. Se ignora cualquier puntuación en la cadena (no determina los operadores de consulta). La consulta resultante coincide con documentos que contienen todas las palabras irrelevantes en el texto.

plainto_tsquery('english', 'The Fat Rats')'fat' & 'rat'

phraseto_tsquery ( [ configregconfig, ] querytext ) → tsquery

Convierte texto en un tsquery, normalizando palabras según la configuración especificada o predeterminada. Se ignora cualquier puntuación en la cadena (no determina los operadores de consulta). La consulta resultante coincide con frases que contienen todas las palabras irrelevantes en el texto.

phraseto_tsquery('english', 'The Fat Rats')'fat' <-> 'rat'

phraseto_tsquery('english', 'The Cat and Rats')'cat' <2> 'rat'

websearch_to_tsquery ( [ configregconfig, ] querytext ) → tsquery

Convierte texto en un tsquery, normalizando palabras según la configuración especificada o predeterminada. Las secuencias de palabras citadas se convierten en pruebas de frases. La palabra "o" se entiende que produce un operador OR, y un guión produce un operador NOT; otros signos de puntuación se ignoran. Esto se aproxima al comportamiento de algunas herramientas de búsqueda web comunes.

websearch_to_tsquery('english', '"fat rat" or cat dog')'fat' <-> 'rat' | 'cat' & 'dog'

querytree ( tsquery ) → text

Produce una representación de la parte indexable de un tsquery. Un resultado que está vacío o simplemente T indica una consulta no indexable.

querytree('foo & ! bar'::tsquery)'foo'

setweight ( vectortsvector, weight"char" ) → tsvector

Asigna el especificado weight a cada elemento de la vector.

setweight('fat:2,4 cat:3 rat:5B'::tsvector, 'A')'cat':3A 'fat':2A,4A 'rat':5A

setweight ( vectortsvector, weight"char", lexemestext[] ) → tsvector

Asigna el especificado weight a los elementos de la vector que se enumeran en lexemes.

setweight('fat:2,4 cat:3 rat:5,6B'::tsvector, 'A', 'cat,rat')'cat':3A 'fat':2,4 'rat':5A,6A

strip ( tsvector ) → tsvector

Elimina posiciones y pesos de la tsvector.

strip('fat:2,4 cat:3 rat:5A'::tsvector)'cat' 'fat' 'rat'

to_tsquery ( [ configregconfig, ] querytext ) → tsquery

Convierte texto en un tsquery, normalizando palabras según la configuración especificada o predeterminada. Las palabras deben combinarse con válidas tsquery operadores.

to_tsquery('english', 'The & Fat & Rats')'fat' & 'rat'

to_tsvector ( [ configregconfig, ] documenttext ) → tsvector

Convierte texto en un tsvector, normalizando palabras según la configuración especificada o predeterminada. La información de posición se incluye en el resultado.

to_tsvector('english', 'The Fat Rats')'fat':2 'rat':3

to_tsvector ( [ configregconfig, ] documentjson ) → tsvector

to_tsvector ( [ configregconfig, ] documentjsonb ) → tsvector

Convierte cada valor de cadena en el documento JSON en un tsvector, normalizando palabras según la configuración especificada o predeterminada. Luego, los resultados se concatenan en el orden del documento para producir la salida. La información de posición se genera como si existiera una palabra de parada entre cada par de valores de cadena. (Cuidado con eso "orden de documentos" de los campos de un objeto JSON depende de la implementación cuando la entrada es jsonb; observe la diferencia en los ejemplos.)

to_tsvector('english', '"aa": "The Fat Rats", "b": "dog"'::json)'dog':5 'fat':2 'rat':3

to_tsvector('english', '"aa": "The Fat Rats", "b": "dog"'::jsonb)'dog':1 'fat':4 'rat':5

json_to_tsvector ( [ configregconfig, ] documentjson, filterjsonb ) → tsvector

jsonb_to_tsvector ( [ configregconfig, ] documentjsonb, filterjsonb ) → tsvector

Selecciona cada elemento del documento JSON solicitado por el filter y convierte cada uno en un tsvector, normalizando palabras según la configuración especificada o predeterminada. Luego, los resultados se concatenan en el orden del documento para producir la salida. La información de posición se genera como si existiera una palabra de parada entre cada par de elementos seleccionados. (Cuidado con eso "orden de documentos" de los campos de un objeto JSON depende de la implementación cuando la entrada es jsonb.) Los filter debe ser un jsonb matriz que contiene cero o más de estas palabras clave: "string" (para incluir todos los valores de cadena), "numeric" (para incluir todos los valores numéricos), "boolean" (para incluir todos los valores booleanos), "key" (para incluir todas las claves), o "all" (para incluir todo lo anterior). Como caso especial, el filter también puede ser un valor JSON simple que sea una de estas palabras clave.

json_to_tsvector('english', '"a": "The Fat Rats", "b": 123'::json, '["string", "numeric"]')'123':5 'fat':2 'rat':3

json_to_tsvector('english', '"cat": "The Fat Rats", "dog": 123'::json, '"all"')'123':9 'cat':1 'dog':7 'fat':4 'rat':5

ts_delete ( vectortsvector, lexemetext ) → tsvector

Elimina cualquier ocurrencia de lo dado lexeme desde el vector.

ts_delete('fat:2,4 cat:3 rat:5A'::tsvector, 'fat')'cat':3 'rat':5A

ts_delete ( vectortsvector, lexemestext[] ) → tsvector

Elimina las apariciones de los lexemas en lexemes desde el vector.

ts_delete('fat:2,4 cat:3 rat:5A'::tsvector, ARRAY['fat','rat'])'cat':3

ts_filter ( vectortsvector, weights"char"[] ) → tsvector

Selecciona solo elementos con el dado weights desde el vector.

ts_filter('fat:2,4 cat:3b,7c rat:5A'::tsvector, 'a,b')'cat':3B 'rat':5A

ts_headline ( [ configregconfig, ] documenttext, querytsquery [, optionstext ] ) → text

Muestra, en forma abreviada, las coincidencias para el query en el document, que debe ser texto sin formato, no un tsvector. Las palabras del documento se normalizan de acuerdo con la configuración predeterminada o especificada antes de coincidir con la consulta. El uso de esta función se analiza en la Sección 12.3.4, que también describe los options.

ts_headline('The fat cat ate the rat.', 'cat')The fat cat ate the rat.

ts_headline ( [ configregconfig, ] documentjson, querytsquery [, optionstext ] ) → text

ts_headline ( [ configregconfig, ] documentjsonb, querytsquery [, optionstext ] ) → text

Muestra, en forma abreviada, coincidencias para el query que ocurren en valores de cadena dentro del JSON document. Consulte la Sección 12.3.4 para obtener más detalles.

ts_headline('"cat":"raining cats and dogs"'::jsonb, 'cat')"cat": "raining cats and dogs"

ts_rank ( [ weightsreal[], ] vectortsvector, querytsquery [, normalizationinteger ] ) → real

Calcula una puntuación que muestra qué tan bien vector coincide con el query. Consulte la Sección 12.3.3 para obtener más detalles.

ts_rank(to_tsvector('raining cats and dogs'), 'cat')0.06079271

ts_rank_cd ( [ weightsreal[], ] vectortsvector, querytsquery [, normalizationinteger ] ) → real

Calcula una puntuación que muestra qué tan bien vector coincide con el query, utilizando un algoritmo de densidad de cobertura. Consulte la Sección 12.3.3 para obtener más detalles.

ts_rank_cd(to_tsvector('raining cats and dogs'), 'cat')0.1

ts_rewrite ( querytsquery, targettsquery, substitutetsquery ) → tsquery

Reemplaza las apariciones de target con substitute dentro de query. Consulte la Sección 12.4.2.1 para obtener más detalles.

ts_rewrite('a & b'::tsquery, 'a'::tsquery, 'foo|bar'::tsquery)'b' & ( 'foo' | 'bar' )

ts_rewrite ( querytsquery, selecttext ) → tsquery

Reemplaza porciones del query según objetivo (s) y sustituto (s) obtenidos mediante la ejecución de un SELECT mando. Consulte la Sección 12.4.2.1 para obtener más detalles.

SELECT ts_rewrite('a & b'::tsquery, 'SELECT t,s FROM aliases')'b' & ( 'foo' | 'bar' )

tsquery_phrase ( query1tsquery, query2tsquery ) → tsquery

Construye una consulta de frase que busca coincidencias de query1 y query2 en lexemas sucesivos (igual que <-> operador).

tsquery_phrase(to_tsquery('fat'), to_tsquery('cat'))'fat' <-> 'cat'

tsquery_phrase ( query1tsquery, query2tsquery, distanceinteger ) → tsquery

Construye una consulta de frase que busca coincidencias de query1 y query2 que ocurren exactamente distance lexemas aparte.

tsquery_phrase(to_tsquery('fat'), to_tsquery('cat'), 10)'fat' <10> 'cat'

tsvector_to_array ( tsvector ) → text[]

Convierte un tsvector a una serie de lexemas.

tsvector_to_array('fat:2,4 cat:3 rat:5A'::tsvector)cat,fat,rat

unnest ( tsvector ) → setof record ( lexemetext, positionssmallint[], weightstext )

Expande un tsvector en un conjunto de filas, una por lexema.

select * from unnest('cat:3 fat:2,4 rat:5A'::tsvector)

 lexeme | positions | weights
--------+-----------+---------
 cat    | 3       | D
 fat    | 2,4     | D,D
 rat    | 5       | A

Nota

Todas las funciones de búsqueda de texto que aceptan una opción regconfig argumento utilizará la configuración especificada por default_text_search_config cuando se omita ese argumento.

Las funciones de la tabla 9.43 se enumeran por separado porque no se suelen utilizar en las operaciones de búsqueda de texto cotidianas. Son principalmente útiles para el desarrollo y la depuración de nuevas configuraciones de búsqueda de texto.

Cuadro 9.43. Funciones de depuración de búsqueda de texto

Función

Descripción

Ejemplo (s)

ts_debug ( [ configregconfig, ] documenttext ) → setof record ( aliastext, descriptiontext, tokentext, dictionariesregdictionary[], dictionaryregdictionary, lexemestext[] )

Extractos y normaliza tokens del document de acuerdo con la configuración de búsqueda de texto especificada o predeterminada, y devuelve información sobre cómo se procesó cada token. Consulte la Sección 12.8.1 para obtener más detalles.

ts_debug('english', 'The Brightest supernovaes')(asciiword,"Word, all ASCII",The,english_stem,english_stem,) ...

ts_lexize ( dictregdictionary, tokentext ) → text[]

Devuelve una matriz de lexemas de reemplazo si el diccionario conoce el token de entrada, o una matriz vacía si el diccionario conoce el token pero es una palabra de parada, o NULL si no es una palabra conocida. Consulte la Sección 12.8.3 para obtener más detalles.

ts_lexize('english_stem', 'stars')star

ts_parse ( parser_nametext, documenttext ) → setof record ( tokidinteger, tokentext )

Extrae tokens del document utilizando el analizador con nombre. Consulte la Sección 12.8.2 para obtener más detalles.

ts_parse('default', 'foo - bar')(1,foo) ...

ts_parse ( parser_oidoid, documenttext ) → setof record ( tokidinteger, tokentext )

Extrae tokens del document utilizando un analizador especificado por OID. Consulte la Sección 12.8.2 para obtener más detalles.

ts_parse(3722, 'foo - bar')(1,foo) ...

ts_token_type ( parser_nametext ) → setof record ( tokidinteger, aliastext, descriptiontext )

Devuelve una tabla que describe cada tipo de token que el analizador con nombre puede reconocer. Consulte la Sección 12.8.2 para obtener más detalles.

ts_token_type('default')(1,asciiword,"Word, all ASCII") ...

ts_token_type ( parser_oidoid ) → setof record ( tokidinteger, aliastext, descriptiontext )

Devuelve una tabla que describe cada tipo de token que un analizador especificado por OID puede reconocer. Consulte la Sección 12.8.2 para obtener más detalles.

ts_token_type(3722)(1,asciiword,"Word, all ASCII") ...

ts_stat ( sqlquerytext [, weightstext ] ) → setof record ( wordtext, ndocinteger, nentryinteger )

Ejecuta el sqlquery, que debe devolver un solo tsvector columna, y devuelve estadísticas sobre cada lexema distinto contenido en los datos. Consulte la Sección 12.4.4 para obtener más detalles.

ts_stat('SELECT vector FROM apod')(foo,10,15) ...

Anterior Hasta próximo
9.12. Funciones y operadores de direcciones de red Hogar 9.14. Funciones de UUID