6 पॉइंट द्वारा GN⁺ 2023-07-13 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • PostgreSQL खुद अपना सर्च इंजन बनाने के लिए आवश्यक building blocks प्रदान करता है
  • मुख्य components हैं tsvector और tsquery data types, match operator @@, match results को rank करने वाले functions, और GIN index type
  • tsvector normalized vocabulary और मूल text में उसकी positions को store करता है
  • tsquery normalized query को दर्शाता है और logical operators का उपयोग करके कई terms को जोड़ सकता है
  • GIN index type का उपयोग tsvector पर efficient queries के लिए किया जाता है
  • ts_rank और ts_rank_cd ऐसे ranking functions हैं जो term frequency और proximity को ध्यान में रखते हैं
  • relevance tuning के ज़रिए search results को खास मानदंडों के अनुसार customize किया जा सकता है
  • ranking score में numbers, dates, और exact value boosters जोड़े जा सकते हैं
  • column weights assign करके search results में कुछ terms को प्राथमिकता दी जा सकती है
  • title column पर setweight का उपयोग करने से jedi शब्द वाले movie titles की ranking बेहतर होती है
  • PostgreSQL सीधे तौर पर fuzzy search या typo tolerance को support नहीं करता, लेकिन similarity या Levenshtein distance का उपयोग करके इसे implement किया जा सकता है
  • facet search, जो users को search scope संकरा करने में मदद करती है, PostgreSQL में category definitions या algorithms का उपयोग करके implement की जा सकती है
  • लेख का अंत इस उल्लेख के साथ होता है कि Elasticsearch के साथ विस्तृत तुलना भाग 2 में की जाएगी

1 टिप्पणियां

 
GN⁺ 2023-07-13
Hacker News की राय
  • PostgreSQL और Elasticsearch की तुलना करने वाले भाग 2 का इंतज़ार है
  • CRUD और search के लिए PostgreSQL और Elasticsearch को sync करने में लगने वाली मेहनत को मैंने कम आंका था.
  • search engine को तेज़ search speed चाहिए. यह सिर्फ़ सैद्धांतिक तौर पर ही महत्वपूर्ण नहीं है.
  • बुनियादी CS algorithms और hardware के उपयोग से basic database और search engine आसानी से बनाए जा सकते हैं.
  • search की व्यक्तिपरक प्रकृति सबसे बड़ी चुनौती है.
  • Postgres को embeddings के ज़रिए संबंधित content खोजने के लिए pgvector के साथ जोड़ा जा सकता है.
  • Postgres की internal search CPU पर भारी पड़ती है, और transaction updates को प्राथमिकता मिलनी चाहिए.
  • ES और Solr clusters reindexing के दौरान ऊँचे CPU उपयोग के साथ चलते हैं.
  • search, recursive joins और vectors के लिए PG extensions side projects के लिए मज़ेदार और सरल हैं.
  • SQLite भी advanced indexing और stemming सुविधाएँ देता है.
  • business logic को database में abstract किया जाता है, लेकिन trade-offs का ज़िक्र नहीं किया गया.
  • कुछ खास bookmarked sites के लिए custom search engine चलाने पर विचार कर रहा हूँ.
  • यह जिज्ञासा है कि Postgres/Elasticsearch चुनना चाहिए या commercial solution.
  • "advanced" शब्द को एक सकारात्मक संकेतक माना जाता है.