如何解除全文对结果条数的限制?

How to eliminate restrictions of full-text for the number of results?

根据我的研究,我发现 (在全文搜索中) 如果总行数与结果数之间的差异小于或等于数字的结果,则结果将为零 (或未找到任何内容).

这里有一个例子,请看这个:

// table - The number of total rows: 3
+----+-------+
| id |  col  |
+----+-------+
| 1  |  one  |
| 2  |  one  |
| 3  |  two  |
+----+-------+

我的查询:

SELECT * FROM `table` WHERE MATCH (`col`) AGAINST ('one');

结果: There is 0 result。 (为什么?我认为因为结果数是2,总行数也是3,所以3 - 2 = 1,和2 > 1,那么结果将是0.)


现在我想知道,如何取消这个限制?换句话说,我希望当我搜索 one 时,结果是这样的:

+----+-------+
| 1  |  one  |
| 2  |  one  |
+----+-------+

此查询显示您的 ft_min_word_len 字段值,它应该是 3,如果它是 4,则可能不适用于 3 个字符的长度。

mysql> show variables like '%len';

ft_min_word_len | 3 |

更改 my.cnf 在 mysqld 块中添加以下内容

ft_min_word_len = 3

http://sqlfiddle.com/#!9/71583a/2

尝试在搜索模式中添加 IN BOLLEAN MODE,如下所示

SELECT * FROM table WHERE MATCH (col) AGAINST ('one' IN BOOLEAN MODE); SELECT * FROM table WHERE MATCH (col) AGAINST ('two' IN BOOLEAN MODE);

fiddle:

http://sqlfiddle.com/#!9/71583a/2