026. Full-text search va pg_trgm
Bu mavzuda tsvector, tsquery va o'xshashlik bo'yicha qidirish bo'yicha 21 ta masala bor. Har bir masala oldida qavs ichida sxema nomi va qiyinlik darajasi ko'rsatilgan. Sxemalar Sxemalar va tayyorlov sahifasida berilgan.
Masalani o'zingiz yechib, natijani Kutilgan natija bilan solishtiring. O'zgartiruvchi masalalarda (INSERT, UPDATE, DELETE, DDL) natija shartda aytilgan tekshiruv so'rovidan olingan. Natija 10 qatordan ko'p bo'lsa, birinchi 10 qator ko'rsatilgan.
1. (dokon, oson) 'simple' konfiguratsiya bilan 'Salom dunyo' ni tsvector ga aylantiring.
2. (dokon, oson) 'simple' tsvector ichida 'salom' so'zi bormi (@@ plainto_tsquery).
3. (dokon, oson) Mahsulot nomida 'Telefon' so'zi bor mahsulotlar sonini full-text qidiruv ('simple') bilan chiqaring.
4. (dokon, o'rta) to_tsquery bilan YOKI: 'telefon | noutbuk' ('simple') bo'yicha mahsulotlar soni.
5. (dokon, o'rta) ts_rank bilan natijani tartiblash: nomida 'telefon' bo'lgan mahsulotlar id si (ts_rank kamayish, id).
6. (dokon, o'rta) pg_trgm: similarity('telefon','telfon') qiymatini 2 xonaga yaxlitlab chiqaring.
7. (dokon, qiyin) pg_trgm bilan imlo xatosini toping: 'telfon' ga o'xshashlik 0.2 dan yuqori mahsulotlar soni.
8. (dokon, qiyin) GIN indeks: mahsulot nomi uchun tsvector GIN indeks yarating va indeks turini (gin) tekshiring.
9. (dokon, qiyin) Trigram indeks: mahsulot.nom ga gin_trgm_ops indeksi yarating; indeks sonini ko'rsating.
10. (maktab, oson) Fan nomlaridan 'tili' so'zini ts qidiruv bilan toping ('simple').
11. (maktab, o'rta) websearch_to_tsquery: '"ona tili" -ingliz' bilan fan nomlarini qidiring.
12. (maktab, o'rta) pg_trgm: o'quvchi ismi 'Madina' ga eng o'xshash 3 ta ism (similarity kamayish, id).
13. (maktab, qiyin) Fuzzy izlash: levenshtein (fuzzystrmatch) — 'Madina' va 'Madinaa' masofasi.
14. (bank, oson) Filial nomlarida 'filiali' so'zini FTS bilan qidiring (simple).
15. (bank, o'rta) Prefiks qidiruv: to_tsquery('simple','jah:*') bilan mijozlar soni.
16. (bank, qiyin) Bank mijozlari ismida 'Shahzoda' ga o'xshashlar soni (similarity>0.3).
17. (kutubxona, oson) Kitob nomida 'sirlari' bo'lgan kitoblar soni (FTS, simple).
18. (kutubxona, o'rta) phraseto_tsquery('simple','kitob 1') bo'yicha kitoblar id sini toping.
19. (kutubxona, o'rta) setweight bilan vaznlash: ism (A) va davlat (B) birlashtirib, 'rossiya' topilgan mualliflar.
20. (kutubxona, qiyin) Trigram o'xshashlik: 'Qodiriy' ga o'xshash muallif ismlari (similarity>0.2) soni.
21. (kutubxona, qiyin) Generated tsvector ustun: kitob2 jadvali (nom text, qidiruv tsvector GENERATED ALWAYS AS (to_tsvector('simple',nom)) STORED), 'Kitob yoli' qatori va 'yoli' qidiruvi.