Django 2.1 - PostgreSQL specific lookups

PostgreSQL विशिष्ट लुकअप




django

PostgreSQL विशिष्ट लुकअप

त्रिग्राम समानता

trigram_similar लुकअप आपको trigram_similar करने की अनुमति देता है, एक समर्पित PostgreSQL एक्सटेंशन का उपयोग करके साझा किए गए trigram_similar (लगातार तीन वर्ण) की संख्या को मापता है। एक ट्रिग्राम लुकअप को एक अभिव्यक्ति दी जाती है और ऐसे परिणाम मिलते हैं जिनमें एक समानता माप वर्तमान समानता सीमा से अधिक होता है।

इसका उपयोग करने के लिए, अपने INSTALLED_APPS में 'django.contrib.postgres' जोड़ें और PostgreSQL पर pg_trgm एक्सटेंशन सक्रिय करें। आप TrigramExtension माइग्रेशन ऑपरेशन का उपयोग करके एक्सटेंशन इंस्टॉल कर सकते हैं।

trigram_similar लुकअप का उपयोग CharField और CharField पर किया जा सकता है:

>>> City.objects.filter(name__trigram_similar="Middlesborough")
['<City: Middlesbrough>']

Unaccent

unaccent लुकअप आपको एक समर्पित PostgreSQL एक्सटेंशन का उपयोग करके उच्चारण-असंवेदनशील लुकअप करने की अनुमति देता है।

यह लुकअप Transform का उपयोग करके कार्यान्वित किया जाता है, इसलिए इसे अन्य लुकअप फ़ंक्शन के साथ जंजीर किया जा सकता है। इसका उपयोग करने के लिए, आपको अपने INSTALLED_APPS में 'django.contrib.postgres' जोड़ने और PostgreSQL पर 'django.contrib.postgres' एक्सटेंशन को सक्रिय करने की आवश्यकता है। यदि आप माइग्रेशन का उपयोग करके इस सक्रियण को करना चाहते हैं तो UnaccentExtension माइग्रेशन ऑपरेशन उपलब्ध है)।

CharField लुकअप का उपयोग CharField और TextField पर किया जा सकता है:

>>> City.objects.filter(name__unaccent="México")
['<City: Mexico>']

>>> User.objects.filter(first_name__unaccent__startswith="Jerem")
['<User: Jeremy>', '<User: Jérémy>', '<User: Jérémie>', '<User: Jeremie>']

चेतावनी

unaccent लुकअप अधिकांश उपयोग मामलों में ठीक प्रदर्शन करना चाहिए। हालांकि, इस फ़िल्टर का उपयोग करने वाले क्वेरीज़ आमतौर पर पूर्ण टेबल स्कैन करते हैं, जो बड़े तालिकाओं पर धीमा हो सकता है। उन मामलों में, समर्पित पूर्ण पाठ अनुक्रमण उपकरण का उपयोग करना उचित हो सकता है।