परिचय
आधुनिक अनुप्रयोगों में, कुशल पाठ खोज महत्वपूर्ण है, खासकर बड़े डेटाबेस के साथ काम करते समय। जबकि MySQL बुनियादी पूर्ण-पाठ खोज क्षमताएं प्रदान करता है, लेकिन जब अस्पष्ट मिलान या गलत वर्तनी को संभालने की बात आती है तो यह कम हो जाता है। यहीं पर ट्रिग्राम-आधारित खोज चलन में आती है। इस ब्लॉग में, हम जानेंगे कि ट्राइग्राम क्या है, यह खोज प्रदर्शन को कैसे बेहतर बनाता है, और आप MySQL में ट्राइग्राम खोज को कैसे कार्यान्वित कर सकते हैं।
ट्रिग्राम क्या है?
ट्रिग्राम किसी दिए गए स्ट्रिंग से लगातार तीन वर्णों का एक क्रम है। उदाहरण के लिए, "खोज" शब्द को निम्नलिखित त्रिकोणों में विभाजित किया जा सकता है:
अस्थायी तालिका बनाकर MySQL में ट्रिग्राम खोज को कार्यान्वित करना
1.MySQL डेटाबेस में ट्रिग्राम फ़ंक्शन बनाएं। ट्रिग्राम फ़ंक्शन कोड:
CREATE FUNCTION TRIGRAM_SEARCH(search_string VARCHAR(255), target_string VARCHAR(255)) RETURNS FLOAT DETERMINISTIC BEGIN DECLARE i INT DEFAULT 1; DECLARE total_trigrams INT DEFAULT 0; DECLARE matched_trigrams INT DEFAULT 0; DECLARE search_length INT; DECLARE target_length INT; SET search_length = CHAR_LENGTH(search_string); SET target_length = CHAR_LENGTH(target_string); -- Handle edge cases where strings are too short IF search_length 0 THEN RETURN matched_trigrams / total_trigrams; ELSE RETURN 0; END IF; END;
2.अब वांछित कॉलम को पूर्ण-पाठ में अनुक्रमित किया जा रहा है
@Entity() @Index(['title'], { fulltext: true }) export class Ebook extends BaseEntity { @PrimaryGeneratedColumn() ebookId: number; @Column({ nullable: true }) title: string; }
3.ट्रिग्राम खोज फ़ंक्शन का परीक्षण
select * FROM ebook e WHERE TRIGRAM_SEARCH('physis onlu', e.title) > 0.4 ORDER BY TRIGRAM_SEARCH('physis onlu', e.title) desc;
4.कोड में ट्रिग्राम खोज लागू करें
async find(title?: string) { const eBooks = await this.dataSource .getRepository(Ebook) .createQueryBuilder('eBook'); if (title) { eBooks.where(`TRIGRAM_SEARCH(:title, eBook.title) > 0.4`, { title }); } const result = await eBooks.getMany(); return result; }
निष्कर्ष
ट्रिग्राम खोज MySQL डेटाबेस में फ़ज़ी मिलान को लागू करने का एक शक्तिशाली तरीका प्रदान करता है। टेक्स्ट को ट्रिग्राम में तोड़कर, हम अधिक लचीली और क्षमाशील खोज कर सकते हैं, जिससे उन अनुप्रयोगों में उपयोगकर्ता अनुभव में काफी वृद्धि हो सकती है जहां टेक्स्ट खोज महत्वपूर्ण है।
हालांकि इस दृष्टिकोण की अपनी ताकतें हैं, लेकिन आपके विशिष्ट उपयोग के मामले और प्रदर्शन आवश्यकताओं के आधार पर लेवेनशेटिन दूरी या साउंडएक्स एल्गोरिदम जैसे विकल्पों पर विचार करना महत्वपूर्ण है।
ट्रिग्राम खोज को लागू करके, आप अपने Node.js और MySQL अनुप्रयोगों की खोज क्षमताओं में उल्लेखनीय रूप से सुधार कर सकते हैं, जिससे उपयोगकर्ताओं को अधिक बुद्धिमान और क्षमाशील खोज परिणाम मिल सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3