PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

खराब प्रदर्शन जब ट्रिग्राम समानता और पूर्ण-पाठ-खोज को पोस्टग्रेज का उपयोग करके Q ind django के साथ जोड़ा गया था

कक्षा कोड के बिना अपनी क्वेरी को अनुकूलित करने का बेहतर तरीका खोजना मुश्किल है।

आप एक Gin जोड़ सकते हैं। या Gist ट्रिग्राम समानता को गति देने के लिए सूचकांक।

आप SearchVector के साथ एक एनोटेशन बना सकते हैं नीचे के रूप में:

from django.contrib.postgres.aggregates import StringAgg
from django.contrib.postgres.search import SearchQuery, SearchVector

search_vectors = (
    SearchVector('vision_expertise') +
    SearchVector('bio_description') +
    SearchVector(StringAgg('experiences__description', delimiter=' ')) +
    SearchVector(StringAgg('educations__description', delimiter=' ')) +
    SearchVector(StringAgg('publications__description', delimiter=' '))
)

Profile.objects.annotate(
    search=search_vectors
).filter(
    Q(search=SearchQuery(search_term)) |
    Q(first_name__trigram_similar=search_term) |
    Q(last_name__trigram_similar=search_term) |
    Q(educations__degree__trigram_similar=search_term) |
    Q(educations__field_of_study__trigram_similar=search_term) |
    Q(educations__school__trigram_similar=search_term) |
    Q(experiences__title__trigram_similar=search_term) |
    Q(experiences__company__trigram_similar=search_term) |
    Q(publications__title__trigram_similar=search_term) |
    Q(certification__certification_name__trigram_similar=search_term) |
    Q(certification__certification_authority__trigram_similar=search_term)
)

आप का उपयोग करके पूर्ण-पाठ खोज को गति दे सकते हैं SearchVectorField

पूर्ण-पाठ खोज और ट्रिग्राम के बारे में जानने के लिए आप इस विषय पर मेरे द्वारा लिखे गए लेख को पढ़ सकते हैं:

"पूर्ण-पाठ में खोजें PostgreSQL के साथ Django"



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं एक सामान्य शब्द से शुरू होने वाले psql (PostgreSQL इंटरैक्टिव टर्मिनल) में सभी तालिकाओं को कैसे छोड़ूं?

  2. पर्ल + पोस्टग्रेएसक्यूएल-- सेलेक्टिव कॉलम टू रो ट्रांसफर

  3. pg_restore विकल्प - PostgreSQL बैकअप और ClusterControl के साथ स्वचालित पुनर्प्राप्ति

  4. घटनाओं के साथ अधिकतम अनुक्रमिक लकीर प्राप्त करना

  5. PostgreSQL डेटाबेस की तैनाती को स्वचालित कैसे करें