PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Hiệu suất kém khi độ tương đồng của bát quái và tìm kiếm toàn văn được kết hợp với Q ind django bằng cách sử dụng postgres

Nếu không có mã lớp, rất khó để tìm ra cách tốt hơn để tối ưu hóa truy vấn của bạn.

Bạn có thể thêm Gin hoặc Gist chỉ mục để tăng tốc độ tương đồng bát quái.

Bạn có thể tạo chú thích bằng SearchVector như bên dưới:

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

Bạn có thể tăng tốc độ tìm kiếm toàn văn bằng SearchVectorField

Để tìm hiểu về tìm kiếm toàn văn và bát quái, bạn có thể đọc bài báo tôi đã viết về chủ đề:

"Tìm kiếm toàn văn bản trong Django với 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. Cách giải quyết FATAL:vượt quá giới hạn kết nối đối với những người không phải là superusers

  2. Điều gì xác định nếu rails bao gồm id::serial trong một định nghĩa bảng?

  3. Django Postgresql thả cột mặc định khi di chuyển

  4. Loại bỏ dấu ngoặc kép với SQLalchemy cho PostgreSQL

  5. Sự cố khi xây dựng mệnh đề where để bao gồm các giá trị null / 0