पूर्ण पाठ खोज (FTS)
आप plainto_tsquery()
. का उपयोग कर सकते हैं प्रति (प्रति दस्तावेज़
) ...
SELECT plainto_tsquery('english', 'Sentence: with irrelevant words (and punctuation) in it.')
plainto_tsquery
------------------
'sentenc' & 'irrelev' & 'word' & 'punctuat'
इसे इस तरह इस्तेमाल करें:
SELECT *
FROM tbl
WHERE to_tsvector('english', sentence) @@ plainto_tsquery('english', 'My new sentence');
लेकिन यह अभी भी काफी सख्त है और समानता के लिए केवल बहुत सीमित सहिष्णुता प्रदान करता है।
ट्रिग्राम समानता
समानता . की खोज के लिए बेहतर अनुकूल हो सकता है , यहां तक कि कुछ हद तक टाइपो को भी दूर करें।
अतिरिक्त मॉड्यूल स्थापित करें pg_trgm
, एक GiST अनुक्रमणिका बनाएं और समानता ऑपरेटर का उपयोग करें %
निकटतम पड़ोसी खोज . में :
मूल रूप से, sentence
. पर एक ट्रिग्राम GiST अनुक्रमणिका के साथ :
-- SELECT set_limit(0.3); -- adjust tolerance if needed
SELECT *
FROM tbl
WHERE sentence % 'My new sentence'
ORDER BY sentence <-> 'My new sentence'
LIMIT 10;
अधिक:
- PostgreSQL के साथ समान स्ट्रिंग्स को शीघ्रता से ढूँढना
- PostgreSQL के साथ मिलती-जुलती पोस्ट ढूंढना
- उच्च संभावना वाले शब्दों के लिए धीमी गति से पूर्ण पाठ खोज
दोनों को मिलाएं
आप FTS और ट्रिग्राम समानता को भी जोड़ सकते हैं: