Làm cách nào để sửa đổi MySQL để phù hợp với điều này?
Bạn sẽ phải thay đổi ý tưởng của MySQL về từ là gì.
Thứ nhất, độ dài từ tối thiểu mặc định là 4. Điều này có nghĩa là không có cụm từ tìm kiếm nào chỉ chứa các từ < 4 chữ cái sẽ khớp với nhau, cho dù đó là ‘C++’ hoặc ‘cpp’. Bạn có thể định cấu hình điều này bằng cách sử dụng tùy chọn cấu hình ft_min_word_len, ví dụ: trong my.cfg của bạn:
[mysqld]
ft_min_word_len=3
(Sau đó stop/start mysqld và xây dựng lại các chỉ số toàn văn.)
Thứ hai, ‘+’ không được coi là một bức thư của MySQL. Bạn có thể làm cho nó một lá thư, nhưng sau đó có nghĩa là bạn sẽ không thể tìm kiếm từ ‘cá’ trong chuỗi ‘cá + khoai tây chiên’, vì vậy cần phải chăm sóc một số. Và nó không tầm thường: nó đòi hỏi biên dịch lại MySQL hoặc hack một bộ ký tự hiện có. Xem phần bắt đầu “Nếu bạn muốn thay đổi tập hợp các ký tự được coi là ký tự từ ...” trong section 11.8.6 của tài liệu.
thoát khỏi nhân vật + trong quá trình nhập dữ liệu của tôi như là một cái gì đó như "__plus" và sau đó sửa đổi tìm kiếm của tôi để chứa
Vâng, giống như đó là một giải pháp chung: bạn có thể giữ bạn dữ liệu 'thực' (không có thoát) trong bảng chính, dứt khoát - thường sử dụng InnoDB để tuân thủ ACID. Sau đó, một bảng MyISAM bổ sung có thể được thêm vào, chỉ chứa các từ bị cắt xén cho mồi tìm kiếm toàn văn. Bạn cũng có thể làm một hình thức giới hạn của bắt nguồn bằng cách sử dụng phương pháp này.
Khả năng khác là phát hiện tìm kiếm mà MySQL không thể thực hiện, chẳng hạn như những từ chỉ có từ ngắn hoặc ký tự không bình thường và quay lại tìm kiếm LIKE hoặc REGEXP đơn giản nhưng chậm. Trong trường hợp này, có thể bạn cũng sẽ muốn xóa danh sách dừng bằng cách đặt ft_stopword_file thành một chuỗi trống, vì việc thực hiện mọi thứ trong đó cũng đặc biệt cũng không thực tế.
Tìm kiếm Boolean toàn văn là gì? Nghe có vẻ khủng khiếp rất nhiều như bạn đã tạo ra từ đó. Ngoài ra, câu hỏi của bạn là rất mơ hồ. Bạn cần cung cấp mô tả tốt hơn về vấn đề của mình, những gì bạn đang cố gắng làm. Nếu không, chúng tôi không thể giúp bạn. –
@ John: Bạn đang rất khắc nghiệt. Tôi đã phải kiềm chế bản thân mình từ liên kết đến lmgtfy, vì vậy đây là một lời giải thích từ MySQL thay vào đó: http://dev.mysql.com/doc/refman/5.1/en/fulltext-boolean.html –
@A. Rex - Tôi là ác (trong một ý nghĩa) quan điểm của tôi đi qua của tôi là khắc nghiệt nhưng câu hỏi là thiếu liên quan đến cách bạn sẽ cụm từ một câu hỏi hay. Như vậy chúng tôi (ngăn xếp người tràn) không thể cung cấp một câu trả lời tốt dựa trên thông tin không đầy đủ. –