Udtrykket søgefunktion er integreret i tekstsøgning data type tsquery
. tekstsøgeoperatoren @@
din skærm tager en tsvector
til venstre og en tsquery
til højre. Og en tsvector
kan bygges ud fra enhver tegntype såvel som fra et JSON-dokument.
Relateret:
Du kan konvertere din json
eller jsonb
dokument til en tekstsøgningsvektor med en af de dedikerede funktioner
:
to_tsvector()
json(b)_to_tsvector()
Bemærk, at disse kun inkluderer værdier fra JSON-dokumentet, ikke nøgler . Det er typisk, hvad du vil have. Grundlæggende eksempel:
SELECT to_tsvector(jsonb '{"foo":"jump quickly"}')
@@ to_tsquery('jump <-> quick:*');
Demonstrerer præfiksmatching oven på sætningssøgning, mens du er i gang. Se:
Alternativt , kan du blot oprette tsvector
fra text
repræsentation af dit JSON-dokument til også at inkludere nøglenavne:
SELECT to_tsvector((jsonb '{"foo-fighter":"jump quickly"}')::text)
@@ to_tsquery('foo <-> fight:*');
Producerer en større tsvector
, åbenbart.
Begge kan indekseres (hvilket er hovedpunktet i tekstsøgning). Kun indekser er bundet til relationelle tabeller. (Og du kan indeksere udtrykket
!)
Selve udtrykket kan anvendes på enhver værdi, ikke bundet til tabeller, som du synes at antyde.