sql >> Database >  >> RDS >> PostgreSQL

Slechte prestaties wanneer trigram-overeenkomst en zoeken in volledige tekst werden gecombineerd met Q ind django met behulp van postgres

Zonder de klascode is het moeilijk om een ​​betere manier te vinden om uw zoekopdracht te optimaliseren.

Je kunt een Gin toevoegen of Samenvatting index om de trigram-overeenkomst te versnellen.

U kunt een annotatie maken met de SearchVector zoals hieronder:

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)
)

U kunt het zoeken in volledige tekst versnellen met een SearchVectorField

Om meer te weten te komen over zoeken in volledige tekst en trigram kun je het artikel lezen dat ik over dit onderwerp heb geschreven:

"Full-Text Search in Django met PostgreSQL"



  1. hoe loop ik van terminal zonder buitensporige wachtwoordverzoeken?

  2. Een SQL Server Agent-taak maken met T-SQL

  3. Mysql selecteer ordinaal

  4. voeg elk jaar verjaardagsgebeurtenissen toe aan de volledige kalender van jQuery