2010-01-06 44 views
8

Tôi cần thực hiện tìm kiếm Toàn văn cho toàn bộ các giá trị từ một cột trong một bảng khác. Vì MATCH() yêu cầu một giá trị trong phần AGAINST(), một cách đơn giản: "SELECT a.id FROM a, b WHERE MATCH (b.content) AGAINST (a.name)" không thành công với "đối số không đúng cho AGAINST".Tìm kiếm toàn văn MySQL so với giá trị cột?

Bây giờ, tôi biết tôi có thể viết kịch bản để truy vấn danh sách tên và sau đó tìm kiếm chúng, nhưng tôi muốn tìm ra một truy vấn phức tạp hơn có thể xử lý tất cả cùng một lúc. Nó không cần phải nhanh chóng.

Ý tưởng?

nhờ

Trả lời

3

Thật không may, http://dev.mysql.com/doc/refman/5.6/en/fulltext-search.html nói:

Chuỗi tìm kiếm phải là một giá trị chuỗi là hằng số trong đánh giá truy vấn. Quy tắc này ra, ví dụ, một cột bảng vì có thể khác nhau cho mỗi hàng.

Có vẻ như bạn sẽ phải tìm kiếm từng mẫu một nếu bạn sử dụng chỉ mục FULLTEXT của MySQL làm giải pháp tìm kiếm của mình.

Cách thay thế duy nhất tôi có thể nghĩ là cho phép tìm kiếm nhiều mẫu như bạn mô tả là Chỉ số đảo ngược. Mặc dù điều này không linh hoạt hoặc có thể mở rộng như một công nghệ tìm kiếm toàn văn bản thực sự.

Xem trình bày của tôi http://www.slideshare.net/billkarwin/practical-full-text-search-with-my-sql

+1

Yeah, I have seen that, nhưng http://dev.mysql.com/tech-resources/articles/full-text-revealed.html nói "" Đối số cho CHỐNG() phải là một chuỗi không đổi "Chúng ta không cập nhật hướng dẫn này để chỉ ra rằng đối số AGAINST() có thể là một biến hoặc tham số, nếu bạn sử dụng MySQL Version 5." Tôi đã hy vọng một người nào đó sẽ có một số lời khuyên bằng cách sử dụng một số loại phương pháp tiếp cận sql phức tạp hơn (quan điểm, thủ tục, hoặc một cái gì đó). Thực ra, những gì tôi đang làm cơ bản là xây dựng một chỉ số đảo ngược các thuật ngữ từ bảng xảy ra trong cột văn bản của bảng b. –

+1

Bài viết đó là từ tháng 5 năm 2004, nhưng chúng vẫn * chưa cập nhật hướng dẫn ?! Đó là thảm hại! –

+0

Nói điều gì đó về tầm quan trọng của fulltext đối với mysql, tôi cho là vậy. Tôi đã tìm thấy bản thân mình học Squid gần đây, nhưng đây là một khía cạnh phụ cho một dự án, và tôi thực sự không có ý định thay đổi hệ thống. –

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