La capacidad de búsqueda de frases está integrada en los búsqueda de texto datos escribir tsquery
. El operador de búsqueda de texto @@
muestra toma un tsvector
a la izquierda y un tsquery
A la derecha. Y un tsvector
se puede crear a partir de cualquier tipo de carácter, así como a partir de un documento JSON.
Relacionado:
Puedes convertir tu json
o jsonb
documento a un vector de búsqueda de texto con uno de los dedicado funciones
:
to_tsvector()
json(b)_to_tsvector()
Tenga en cuenta que estos solo incluyen valores del documento JSON, no claves . Por lo general, eso es lo que desea. Ejemplo básico:
SELECT to_tsvector(jsonb '{"foo":"jump quickly"}')
@@ to_tsquery('jump <-> quick:*');
Demostración de coincidencia de prefijos además de la búsqueda de frases mientras lo hace. Ver:
Alternativamente , simplemente puede crear el tsvector
del text
representación de su documento JSON para incluir también nombres clave:
SELECT to_tsvector((jsonb '{"foo-fighter":"jump quickly"}')::text)
@@ to_tsquery('foo <-> fight:*');
Produce un tsvector
más grande , obviamente.
Ambos se pueden indexar (que es el punto principal de la búsqueda de texto). Solo los índices están vinculados a tablas relacionales. (Y puede indexar la expresión
!)
La expresión en sí se puede aplicar a cualquier valor, sin vincularse a tablas como parece implicar.