Được rồi, tôi đang cố gắng thực hiện tìm kiếm toàn văn trong nhiều cột, đơn giản như sau:
SELECT * FROM pages WHERE MATCH(head, body) AGAINST('some words' IN BOOLEAN MODE)
Bây giờ tôi muốn sắp xếp theo mức độ liên quan, (có bao nhiêu từ được tìm thấy?) Mà tôi có thể thực hiện với một số thứ như sau:
SELECT * , MATCH (head, body) AGAINST ('some words' IN BOOLEAN MODE) AS relevance
FROM pages
WHERE MATCH (head, body) AGAINST ('some words' IN BOOLEAN MODE)
ORDER BY relevance
Bây giờ đến phần tôi bị lạc, tôi muốn ưu tiên mức độ liên quan trong head
cột.
Tôi đoán tôi có thể tạo hai cột liên quan, một cho head
và một cho body
, nhưng tại thời điểm đó, tôi sẽ thực hiện cùng một tìm kiếm trong bảng ba lần và đối với những gì tôi đang tạo hàm này, hiệu suất là rất quan trọng, vì cả truy vấn sẽ được kết hợp và khớp với các bảng khác.
Vì vậy, câu hỏi chính của tôi là , có cách nào nhanh hơn để tìm kiếm mức độ liên quan và ưu tiên các cột nhất định không? (Và như một phần thưởng có thể thậm chí làm cho mức độ liên quan đếm số lần các từ xuất hiện trong các cột?)
Bất kỳ đề xuất hoặc lời khuyên sẽ là tuyệt vời.
Lưu ý: Tôi sẽ chạy nó trên máy chủ LAMP. (WAMP trong thử nghiệm cục bộ)