2012-05-14 18 views
5

Tôi muốn bắt chước kiểu này Solr truy vấn:Làm thế nào bạn có thể mô phỏng một Solr "giống như truy vấn này" hơn với tìm kiếm văn bản đầy đủ của Postgresql?

http://wiki.apache.org/solr/MoreLikeThis

với PostgreSQL sử dụng công cụ tìm kiếm văn bản đầy đủ của nó.

Có cách nào để làm điều gì đó giống như truy vấn "giống như thế này" hơn với postgres thuần túy không?

+0

bạn có thể thêm thông tin khác không, yêu cầu của bạn là gì? Bạn đang tìm kiếm các tài liệu tương tự như nhau? Xếp hạng tài liệu với tìm kiếm toàn văn? Một số loại phương pháp lai? –

Trả lời

1

Không ra khỏi hộp Tôi sợ. Có thể so sánh hai tsvectors để xác định xem chúng có đủ tương tự hay không, hoặc kéo n tsvector tương tự lên trên, nhưng không có chức năng nào trong hộp để thực hiện điều này. Tin tốt là kể từ khi tsvectors hỗ trợ lập chỉ mục GIN, phần phức tạp được thực hiện cho bạn.

Điều tôi nghĩ bạn cần làm là tạo một hàm trong C xác định giao điểm của hai tsvectors. Từ đó, bạn có thể tạo ra một hàm xác định xem chúng có chồng lên nhau và một toán tử giải quyết vấn đề này không. Từ đó, không nên quá khó để tạo thứ hạng dựa trên sự chồng chéo lớn nhất.

Tất nhiên tôi nghi ngờ điều này sẽ dễ dàng nhất trong một ngôn ngữ như C nhưng bạn có thể sử dụng các ngôn ngữ thủ tục khác nếu bạn cần.

Điều tuyệt vời về PostgreSQL là mọi thứ đều có thể. tất nhiên nhược điểm là khi bạn di chuyển xa hơn từ chức năng cốt lõi, bạn có thể tự mình làm rất nhiều.

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