2012-10-24 17 views
6

Tôi đang tìm chuỗi "zen" trong trường có chứa "Rạp xiếc Zen". Tôi có chỉ mục FULLTEXT.Tìm kiếm toàn văn bản trên mysql với một từ 3 chữ cái

select url,name, 
, MATCH(name) AGAINST ('zen*' IN BOOLEAN MODE) as A 
, MATCH(name) AGAINST ('"the zen*"' IN BOOLEAN MODE) as B 
, MATCH(name) AGAINST ('>the* zen' IN BOOLEAN MODE) as C 
, MATCH(name) AGAINST ('thezen*' IN BOOLEAN MODE) as D 
, MATCH(name) AGAINST ('cir*' IN BOOLEAN MODE) as E 
, MATCH(name) AGAINST ('circus*' IN BOOLEAN MODE) as F 
from pages where url='thezencircus' 

Tôi đã có kết quả này:

url = thezencircus 
name = The Zen Circus 
A = 0 (why?) 
B = 0 (why?) 
C = 0 (why?) 
D = 0 (ok) 
E = 1 (ok) 
F = 1 (ok) 

Tôi cũng putted ft_min_word_len = 2 trong file msyql config.

Bất kỳ ý tưởng nào?

Trả lời

9

Xem câu trả lời này MySQL full text search for words with three or less letters

[mysqld]
ft_min_word_len = 3
Sau đó, bạn phải khởi động lại máy chủ và xây dựng lại các chỉ số toàn văn của bạn.

Hãy nhớ khởi động lại và tạo lại chỉ mục.


Chỉnh sửa
Chạy show variables like 'ft_%'; để xác nhận độ dài từ khớp với những gì bạn đặt.

+0

Tôi đã làm mọi thứ bạn nói, cảm ơn bạn, nhưng vấn đề vẫn còn ở đây. :-( – Pons

+0

Hãy thử chạy các trang REPAIR TABLE NHANH, Ngoài ra, chỉ để đảm bảo bạn đã làm đúng, khi đặt ft_min_word_length: http://lostquery.com/questions/196/how-do-i-enable-short-3 -khi-full-text-search-in-mysql là cách này bạn đã làm nó như thế nào? – Kao

+0

Ngoài ra, hãy xem bản chỉnh sửa của tôi về cách xác nhận giá trị của ft_min_word_len – Kao