2012-12-13 12 views
5

Khách hàng của tôi nhấn mạnh vào tìm kiếm trên nhiều cột bởi bất kỳ phần nào của chuỗi. Vì vậy, tôi đang cố gắng thực hiện điều này:Tiền tố và ký tự đại diện hậu tố trong tìm kiếm văn bản đầy đủ mysql

... MATCH(smth, smth2) AGAINST('*string*' IN BOOLEAN MODE) 

Lập chỉ mục hoặc tìm kiếm nhanh không phải là yêu cầu nên ngay cả khi MATCH .. AGAINST không sử dụng chỉ mục - nó sẽ ổn. Nhưng vấn đề là ký tự đại diện có tiền tố không hoạt động - chỉ một ký tự sau từ đó:

*string* - will match the same as string* and *string does not match anything 

Có cách nào giải quyết vấn đề này với MYSQL không? Tôi thực sự sẽ không cài đặt bất kỳ dịch vụ lập chỉ mục hoặc bất cứ thứ gì giống như vậy để truy vấn chậm sẽ phải làm.

Tôi có thể thử sử dụng LIKE trên nhiều cột bằng cách nào đó, nhưng tôi cho rằng điều này thậm chí còn chậm hơn.

+0

Tôi nghĩ rằng bạn có thể sử dụng REGEXP cho vấn đề này. .! – Chella

+0

Tôi có thể sử dụng regexp hoặc LIKE đơn giản, nhưng làm cách nào để áp dụng nó trên nhiều cột với cú pháp đơn giản như MATCH ... AGAINST? – Marius

Trả lời