"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > ट्रिग्राम सर्च के साथ फ़ज़ी मिलान: Node.js और MySQL में इंटेलिजेंट सर्च का निर्माण

ट्रिग्राम सर्च के साथ फ़ज़ी मिलान: Node.js और MySQL में इंटेलिजेंट सर्च का निर्माण

2024-11-09 को प्रकाशित
ब्राउज़ करें:780

Fuzzy Matching with Trigram Search: Building Intelligent Search in Node.js and MySQL

परिचय
आधुनिक अनुप्रयोगों में, कुशल पाठ खोज महत्वपूर्ण है, खासकर बड़े डेटाबेस के साथ काम करते समय। जबकि 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 अनुप्रयोगों की खोज क्षमताओं में उल्लेखनीय रूप से सुधार कर सकते हैं, जिससे उपयोगकर्ताओं को अधिक बुद्धिमान और क्षमाशील खोज परिणाम मिल सकते हैं।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/mukesh_rajbanshi/fuzzy-matching-with-trigram-search-building-inteligent-search-in-nodejs-and-mysql-2839?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 .comdelete से संपर्क करें
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3