PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Słaba wydajność, gdy podobieństwo trygramów i wyszukiwanie pełnotekstowe zostały połączone z Q ind django przy użyciu postgres

Bez kodu klasy trudno jest znaleźć lepszy sposób na optymalizację zapytania.

Możesz dodać Gin lub Gist indeks, aby przyspieszyć podobieństwo trygramów.

Możesz utworzyć adnotację za pomocą SearchVector jak poniżej:

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

Możesz przyspieszyć wyszukiwanie pełnotekstowe za pomocą SearchVectorField

Aby dowiedzieć się więcej o wyszukiwaniu pełnotekstowym i trygramie, przeczytaj artykuł, który napisałem na ten temat:

"Wyszukiwanie pełnotekstowe w Django z 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. Pobierz nazwę właściciela bazy danych w PostgreSql

  2. Importujesz schemat xml do postgres, aby automatycznie utworzyć tabelę, a następnie wypełnić ją plikiem xml?

  3. PostgreSQL:Jak połączyć tabele 3 posortowane według daty

  4. Jak sprawdzić, czy tablica jest pusta w Postgresie?

  5. Dlaczego liczba całkowita bez znaku nie jest dostępna w PostgreSQL?