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', 'поиск & база');