PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Performa Buruk ketika kesamaan trigram dan pencarian teks lengkap digabungkan dengan Q ind Django menggunakan postgres

Tanpa kode kelas, sulit untuk menemukan cara yang lebih baik untuk mengoptimalkan kueri Anda.

Anda dapat menambahkan Gin atau Inti indeks untuk mempercepat kesamaan trigram.

Anda dapat membuat anotasi dengan SearchVector seperti di bawah ini:

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

Anda dapat mempercepat pencarian teks lengkap menggunakan SearchVectorField

Untuk mengetahui tentang pencarian teks lengkap dan trigram Anda dapat membaca artikel yang saya tulis tentang subjek:

"Pencarian Teks Lengkap di Django dengan 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. Postgres membungkus hasil subquery dalam tanda kurung

  2. Jalankan skema .sql di psycopg2 dengan Python

  3. Cara menentukan kunci utama yang dibuat secara otomatis yang digunakan sebagai kunci asing untuk tabel lain

  4. Masalah pembuatan Pemicu PostgreSQL

  5. Kembalikan baris yang maksimal satu kolom di Postgresql