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

Tìm kiếm toàn văn PG trên đường ray bằng cách sử dụng đá quý pg_search cho chuỗi con

Tôi là tác giả và người duy trì pg_search.

Thật không may, theo mặc định, tsearch của PostgreSQL không chia nhỏ các địa chỉ email và cho phép bạn so khớp với các phần. Nó có thể hoạt động nếu bạn bật :trigram tuy nhiên, tìm kiếm vì nó khớp với các chuỗi con tùy ý xuất hiện ở bất kỳ đâu trong văn bản có thể tìm kiếm được.

pg_search_scope :search_by_detail,
                :against => [
                  [:first_name,'A'],
                  [:last_name,'B'],
                  [:email,'C']
                ],
                :using => {
                  :tsearch => {:prefix => true},
                  :trigram => {}
                }

Tôi đã xác nhận điều này bằng cách chạy lệnh sau trong psql:

grant=# SELECT plainto_tsquery('example.com') @@ to_tsvector('english', '[email protected]');
 ?column? 
----------
 f
(1 row)

Tôi biết rằng trình phân tích cú pháp có phát hiện địa chỉ email, vì vậy tôi nghĩ rằng nó phải có thể. Nhưng nó sẽ liên quan đến việc xây dựng từ điển tìm kiếm văn bản trong PostgreSQL sẽ chia địa chỉ email thành các mã thông báo một cách chính xác.

Đây là bằng chứng cho thấy trình phân tích cú pháp tìm kiếm văn bản biết rằng đó là một địa chỉ email:

grant=# SELECT ts_debug('english', '[email protected]');
                                  ts_debug                                   
-----------------------------------------------------------------------------
 (email,"Email address",[email protected],{simple},simple,{[email protected]})
(1 row)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mối quan hệ nhiều-nhiều JPA gây ra lỗi đệ quy vô hạn và lỗi tràn ngăn xếp

  2. Làm thế nào tôi có thể xác định ràng buộc này?

  3. org.postgresql.util.PSQLException:Các đối tượng lớn có thể không được sử dụng trong chế độ cam kết tự động

  4. Kết quả lớn Đặt trên truy vấn postgresql

  5. 7 điều cần lưu ý khi triển khai PostgreSQL của bạn