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.
Đó có phải là tìm kiếm ''test'' bao gồm cả dấu ngoặc kép không? – rdvdijk
Không, truy vấn tìm kiếm chỉ là _test_ – membLoper
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