PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Лоша производителност, когато сходството на триграма и търсенето в пълен текст бяха комбинирани с Q ind django, използвайки postgres

Без кода на класа е трудно да намерите по-добрия начин за оптимизиране на вашата заявка.

Можете да добавите 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

За да разберете за търсенето в пълен текст и триграмата, можете да прочетете статията, която написах по темата:

"Търсене на пълен текст в Django с PostgreSQL"



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rails + Postgres:Не връща информация за часовата зона в колона от обединена таблица

  2. Postgres COPY TO NULL цели числа

  3. Как да създадете потребител с PSQL

  4. миграцията на django db е неуспешна с postgre

  5. проблем с псевдонима на колоната на postgres