Sobes.tech
Junior — Middle

PostgreSQL მონაცემთა ბაზაში სრული ტექსტის ძიებას რა მექანიზმი ახორციელებს?

sobes.tech AI

პასუხი AI-სგან

PostgreSQL-ში სრული ტექსტის ძიების განხორციელებისთვის გამოიყენება GiST (Generalized Search Tree) ან GIN (Generalized Inverted Index) ინდექსების მექანიზმი. საფუძველია ტექსტის წარმოდგენა tsvector-ის სახით — სტრუქტურა, რომელიც ნაწილებს (ლექსემებს) ყოფს, ნორმალიზებს და ინახავს მათ პოზიციებს.

ძიების დროს გამოიყენება tsquery — შეკითხვა, რომელიც შედარებულია tsvector-თან. GIN ინდექსები განსაკუთრებით ეფექტურია სწრაფი ძიებისთვის მრავალ სიტყვაზე, რადგან ქმნიან უკუღმართ ინდექსს, რომელიც საშუალებას აძლევს სწრაფად იპოვოს დოკუმენტები, რომლებიც შეიცავს საჭირო ლექსემებს.

მაგალითი სრული ტექსტის ძიებისთვის ინდექსის შექმნის:

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

შემდეგ შეიძლება შესრულდეს შეკითხვები:

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