Tôi đang phát triển một trang web bài viết đơn giản bằng tiếng Bồ Đào Nha Bồ Đào Nha. Tính năng tìm kiếm dựa trên tìm kiếm toàn văn, nhưng nó không trả lại kết quả mong đợi.Không thể nhận được kết quả phù hợp từ tìm kiếm toàn văn sau bưu điện
Tôi đã thực hiện điều này trên postgresql. Dưới đây là bảng đơn giản:
Artigos
-id
-title -- article title
-intro -- article introduction
-content -- article body
-publishdate -- date of launch
-artigosts -- this will work as our fts index.
Sau khi tạo bảng, tôi chạy:
UPDATE artigos SET artigosts =
setweight(to_tsvector('pg_catalog.portuguese', coalesce(title,'')), 'A') ||
setweight(to_tsvector('pg_catalog.portuguese', coalesce(intro,'')), 'B') ||
setweight(to_tsvector('pg_catalog.portuguese', coalesce(content,'')), 'C');
CREATE INDEX artigosts_idx ON artigos USING gist (artigosts);
CREATE TRIGGER artigosts_tg
BEFORE INSERT OR UPDATE ON artigos
FOR EACH ROW EXECUTE PROCEDURE
tsvector_update_trigger('artigosts', 'pg_catalog.portuguese', 'title', 'intro', 'content');
Vâng, tôi có ý định sử dụng weightning đơn giản trên các tìm kiếm. Đã tạo chỉ mục để tăng tốc, trình kích hoạt, vì vậy tôi có thể chèn và cập nhật mà không phải lo lắng về việc tạo lại chỉ mục, v.v.
Vâng, theo hiểu biết của tôi, mọi thứ đều ổn. Nhưng kết quả thì không. Một ví dụ đơn giản.
Giả sử tôi có "... banco de dados ... no banco ..." là nội dung một bài viết. Khi tôi làm:
SELECT title, intro, content FROM artigos WHERE plainto_tsquery('banco de dados') @@ artigosts;
Nó trả về bộ trống. Tôi đã kiểm tra cột ts_vector và thấy các vị từ 'banc' và 'dad'. Nhưng tôi vẫn không thể hiểu tại sao nó không trả lại hàng chứa bài viết đã đề cập.
Ai đó có thể mang ánh sáng vào câu hỏi này không?
Đã chơi với các cấu hình khác nhau có sẵn trên máy chủ. Tôi nghĩ đó là vấn đề từ các từ điển và từ dừng có sẵn.Có ai biết làm thế nào để lập bản đồ trên chars (như áéóôú) để vectơ? – Dave