Jak*_*sky 3 mysql my.cnf pattern-matching environment-variables
我已经设置ft_min_word_len = 1
为my.cnf
文件,也SHOW VARIABLES LIKE 'ft_min_word%'
显示ft_min_word_len as 1
. 然后我重新加载了所有数据库表,它仍然没有搜索一个字符的单词。
我的表:
CREATE TABLE IF NOT EXISTS event (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(80) NOT NULL,
description TEXT,
time TIMESTAMP DEFAULT 0,
FULLTEXT(name)
);
Run Code Online (Sandbox Code Playgroud)
我的查询:
SELECT event.id AS eid,
event.name AS ename
FROM event
WHERE MATCH(event.name) AGAINST('+W*' IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)
我正在寻找的事件名称是 W.W.W. + Pavel Fajt + Vladimir 518 @ Sono
请问还有什么可能导致问题?
编辑:我正在使用 InnoDB,抱歉我之前没有提到过。
mysql> SHOW GLOBAL VARIABLES like 'ft_min_word_len';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| ft_min_word_len | 1 |
+-----------------+-------+
1 row in set (0.00 sec)
mysql> SELECT event.id AS eid,
event.name AS ename
FROM event
WHERE MATCH(event.name) AGAINST('+W*' IN BOOLEAN MODE);
+-----+--------+
| eid | ename |
+-----+--------+
| 1 | W.W.W. |
| 7 | W |
| 12 | Wa |
| 11 | Wat |
| 10 | Wats |
| 9 | Watso |
| 8 | Watson |
+-----+--------+
7 rows in set (0.01 sec)
Run Code Online (Sandbox Code Playgroud)
也许您正在使用 InnoDB:
mysql> ALTER TABLE event ENGINE=InnoDB;
Query OK, 12 rows affected (0.51 sec)
Records: 12 Duplicates: 0 Warnings: 0
mysql> SELECT event.id AS eid,
event.name AS ename
FROM event
WHERE MATCH(event.name) AGAINST('+W*' IN BOOLEAN MODE);
+-----+--------+
| eid | ename |
+-----+--------+
| 8 | Watson |
| 9 | Watso |
| 10 | Wats |
| 11 | Wat |
+-----+--------+
4 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
更改选项的位置innodb_ft_min_token_size
(ft_min_word_len
仅适用于 MyISAM)。
归档时间: |
|
查看次数: |
3457 次 |
最近记录: |