Sobes.tech
Junior — Middle

Milyen adattároló mechanizmus valósítja meg a teljes szöveg keresést a PostgreSQL adatbázisban?

sobes.tech MI

Válasz az MI-től

A PostgreSQL-ben a teljes szöveg keresés megvalósításához GiST (Generalized Search Tree) vagy GIN (Generalized Inverted Index) index mechanizmust használnak. Az alap a szöveg tsvector formában való ábrázolása, amely felosztja a szöveget lexémákra (szavakra), normalizálja azokat, és tárolja pozícióikat.

A kereséshez a tsquery-t használják, amely összehasonlítódik a tsvectorral. A GIN indexek különösen hatékonyak gyors kereséshez több szónál, mivel fordított indexet építenek, amely lehetővé teszi a szükséges lexémákat tartalmazó dokumentumok gyors megtalálását.

Példa index létrehozására teljes szöveg kereséshez:

CREATE INDEX idx_fts ON documents USING GIN(to_tsvector('russian', content));

Ezután lekérdezéseket lehet végrehajtani:

SELECT * FROM documents WHERE to_tsvector('russian', content) @@ to_tsquery('russian', 'поиск & база');