# FTS5 फुल-टेक्स्ट खोज SUMMARY: Synapse SQLite FTS5 का उपयोग सब-मिलीसेकंड फुल-टेक्स्ट मेमोरी खोज के लिए कैसे करता है। FTS5 फुल-टेक्स्ट खोज Synapse तेज़, लचीली मेमोरी खोज के लिए FTS5 (Full-Text Search 5) का उपयोग करता है। यह पृष्ठ बताता है कि यह कैसे काम करता है और इसे प्रभावी ढंग से कैसे उपयोग करें। FTS5 क्या है? FTS5 एक SQLite एक्सटेंशन है (एक्सटेंशन के माध्यम से PostgreSQL में भी उपलब्ध) जो फुल-टेक्स्ट खोज क्षमताएँ प्रदान करता है। यह: - तेज़ कीवर्ड खोज के लिए टेक्स्ट सामग्री अनुक्रमित करता है - बूलियन ऑपरेटर्स (AND, OR, NOT) का समर्थन करता है - उद्धरण चिह्नों के साथ वाक्यांश मिलान का समर्थन करता है - के साथ उपसर्ग मिलान का समर्थन करता है - प्रासंगिकता द्वारा परिणामों को क्रमबद्ध करता है Synapse सभी मेमोरी सामग्री को अनुक्रमित करने के लिए FTS5 का उपयोग करता है, हज़ारों मेमोरीज़ में सब-मिलीसेकंड खोज सक्षम बनाता है। Synapse FTS5 का उपयोग कैसे करता है जब आप : 1. मेमोरी सामग्री तालिका में संग्रहीत होती है 2. सामग्री FTS5 वर्चुअल तालिका में भी डाली जाती है 3. FTS5 स्वचालित रूप से सामग्री को टोकनाइज़ और अनुक्रमित करता है जब आप : 1. Synapse FTS5 सिंटैक्स का उपयोग करके क्वेरी पार्स करता है 2. FTS5 इंडेक्स के विरुद्ध निष्पादित करता है 3. द्वारा फ़िल्टर करता है (टैनेंट आइसोलेशन) 4. क्रमबद्ध परिणाम लौटाता है क्वेरी सिंटैक्स सरल कीवर्ड खोज [CODE BLOCK] "docker" युक्त मेमोरीज़ लौटाता है। कई कीवर्ड्स (अंतर्निहित AND) [CODE BLOCK] BOTH "docker" और "swarm" युक्त मेमोरीज़ लौटाता है। वाक्यांश मिलान [CODE BLOCK] सटीक वाक्यांश "docker swarm" युक्त मेमोरीज़ लौटाता है। उपसर्ग मिलान [CODE BLOCK] "docker" से शुरू होने वाले शब्दों वाली मेमोरीज़ लौटाता है (जैसे "dockers", "dockerfile", "dockerize")। बूलियन OR [CODE BLOCK] "docker" OR "kubernetes" युक्त मेमोरीज़ लौटाता है। बूलियन NOT [CODE BLOCK] "docker" लेकिन NOT "swarm" युक्त मेमोरीज़ लौटाता है। समूहीकरण [CODE BLOCK] "docker" या "kubernetes", लेकिन "test" नहीं युक्त मेमोरीज़ लौटाता है। व्यावहारिक उदाहरण किसी परियोजना के बारे में मेमोरीज़ खोजें [CODE BLOCK] सटीक वाक्यांश खोजें [CODE BLOCK] परीक्षण मेमोरीज़ बहिष्कृत करें [CODE BLOCK] तकनीक द्वारा खोजें [CODE BLOCK] क्रमांकन FTS5 BM25 एल्गोरिथ्म का उपयोग करके प्रासंगिकता द्वारा परिणाम क्रमबद्ध करता है। कारक: - शब्द आवृत्ति (शब्द कितनी बार दिखाई देता है) - विपरीत दस्तावेज़ आवृत्ति (दुर्लभ शब्द उच्च क्रम के) - दस्तावेज़ लंबाई (शब्द वाले छोटे दस्तावेज़ उच्च क्रम के) - कॉलम भार (title > content) परिणाम क्रम क्रम में लौटाए जाते हैं (सबसे प्रासंगिक पहले)। प्रदर्शन | ऑपरेशन | विलंबता | |-----------|---------| | 100 मेमोरीज़ खोज | < 5ms | | 1,000 मेमोरीज़ खोज | < 10ms | | 10,000 मेमोरीज़ खोज | < 25ms | | 100,000 मेमोरीज़ खोज | < 100ms | FTS5 रीड-हेवी वर्कलोड के लिए अत्यधिक अनुकूलित है। सीमाएँ स्टेमिंग FTS5 डिफ़ॉल्ट रूप से स्टेमिंग नहीं करता। "running" और "run" भिन्न शब्द हैं। समाधान: उपसर्ग मिलान का उपयोग करें: टाइपो सहिष्णुता FTS5 फ़ज़ी मिलान का समर्थन नहीं करता। टाइपो कोई परिणाम नहीं लौटाएगा। समाधान: वैचारिक मिलान के लिए सिमेंटिक खोज () का उपयोग करें। स्टॉप शब्द सामान्य शब्द (the, a, an, is) अनुक्रमित होते हैं लेकिन खोज के लिए उपयोगी नहीं हो सकते। FTS5 इसे स्वचालित रूप से संभालता है। FTS5 बनाम सिमेंटिक खोज | पहलू | FTS5 | सिमेंटिक खोज | |--------|------|-----------------| | गति | सब-मिलीसेकंड | 50-100ms | | मिलान | सटीक कीवर्ड्स | वैचारिक | | टाइपो सहिष्णुता | कोई नहीं | कुछ | | स्टेमिंग | कोई नहीं | अंतर्निहित | | Embeddings आवश्यक | नहीं | हाँ | | के लिए सर्वोत्तम | विशिष्ट शब्द | अवधारणाएँ | जब आप कीवर्ड्स जानते हैं तब FTS5 का उपयोग करें। जब आप "X के बारे में मेमोरीज़" चाहते हैं जहाँ X अलग ढंग से वर्णित है तब सिमेंटिक खोज का उपयोग करें। सर्वोत्तम प्रथाएँ > [!TIP] > - विशिष्ट शब्दों का उपयोग करें — "docker swarm" "container orchestration" से बेहतर है > - वाक्यांशों को उद्धृत करें — वाक्यांश मिलान सुनिश्चित करता है > - विविधताओं के लिए उपसर्ग का उपयोग करें — "deploy", "deployment", "deploying" पकड़ता है > - शोर बहिष्कृत करें — परीक्षण मेमोरीज़ फ़िल्टर करता है > - टैग्स के साथ संयोजित करें — परिणाम संकरा करता है अगले कदम - सिमेंटिक खोज - Memory API - मेमोरी सर्वोत्तम प्रथाएँ