2011-10-05 44 views
5

Tôi đã thực hiện tìm kiếm toàn văn bản sử dụng pg_search đá quý cho các ứng dụng Rails của tôiFull-text trên Heroku sử dụng pg_search đá quý

di cư của tôi để tạo ra chỉ số trông giống như

execute(<<-'eosql'.strip) 
    CREATE index mytable_fts_idx 
    ON mytable 
    USING gin(
    (setweight(to_tsvector('english', coalesce("mytable"."name", '')), 'A') || 
    ' ' || 
    setweight(to_tsvector('english', coalesce("mytable"."description",'')), 'B') 
    ) 
) 
eosql 

Và vẻ mã điều khiển của tôi như

pg_search_scope :full_text_search, 
:against => [ 
    :name, :description], 
:using => { 
    :tsearch => { 
    :prefix => true, 
    :dictionary => "english", 
    :any_word => true 
    } 
} 

hoạt động hoàn toàn cục bộ trên Postgres 9.0.4. Tuy nhiên, khi tôi triển khai cùng với heroku và tìm kiếm truy vấn mẫu 'thử nghiệm', nó sẽ phát sinh lỗi

PGError: ERROR: syntax error in tsquery: "' test ':*" 

SELECT COUNT(count_column) FROM (SELECT 1 AS count_column FROM "mytable" WHERE (((to_tsvector('english', coalesce("mytable"."name", '')) || to_tsvector('english', coalesce("mytable"."description", ''))) @@ (to_tsquery('english', ''' ' || 'test' || ' ''' || ':*')))) LIMIT 12 OFFSET 0) subquery_for_count): 

Bất kỳ đề xuất nào về nơi tôi sai và những gì tôi nên xem xét để sửa lỗi này ? Cảm ơn.

+0

Đó có phải là tìm kiếm ''test'' bao gồm cả dấu ngoặc kép không? – rdvdijk

+0

Không, truy vấn tìm kiếm chỉ là _test_ – membLoper

+0

Bạn có thể so sánh truy vấn cục bộ của mình và truy vấn tìm kiếm trên heroku (mà bạn đã đăng). – rdvdijk

Trả lời

13

Tôi là nhà phát triển chính của pg_search. Xin lỗi vì bạn đã gặp sự cố đó! Hiện tại, có lỗi pg_search khi sử dụng :prefix tìm kiếm đối với PostgreSQL 8.3 (mặc định cho Heroku).

https://github.com/Casecommons/pg_search/issues/10

Đây là ưu tiên hàng đầu của tôi ngay bây giờ. Tôi vẫn đang tìm ra cách tốt nhất để làm cho bộ thử nghiệm chạy với cả 8.x và 9.x.

Cập nhật: Thật không may, :prefix tìm kiếm không hoạt động với PostgreSQL 8.3. Chức năng đã được giới thiệu trong 8.4. Tôi đã phát hành pg_search 0.3.3 để cải thiện thông báo lỗi. Hy vọng rằng Heroku sẽ nâng cấp lên 9,0 trên bảng sớm. Tôi tin rằng họ muốn làm như vậy, nhưng rõ ràng họ không thể nâng cấp mọi người bán buôn mà không cần cảnh báo.

+0

Cảm ơn câu trả lời nhanh. Cảm kích điều đó. – membLoper

+1

Chỉ cần nói rằng kịch bản được mô tả ở trên hoạt động như mong đợi với PostgreSQL 8.4 trên máy cục bộ của tôi. –

+0

Cảm ơn bạn đã cập nhật, kelly. Tôi sẽ đảm bảo kiểm tra khi tôi làm việc về vấn đề này. – nertzy

Các vấn đề liên quan