MySQL MATCH AGAINST 不 return 所有拟合结果
MySQL MATCH AGAINST doesn't return all fitting results
我有一个table,为了简化,照片ID和标签ID。我最近注意到,当我使用 MATCH AGAINST 命令时,它不会 return 所有 suitable 匹配。尽管有时两行包含经过测试的完全相同的文本,但仍然有一个被选中而另一个没有被选中。
这是 table 的 照片
id | type | size | tag |
+----------------+------+---------+----------------------------------------------------------------------+
| IMG_1485197299 | jpg | 1400000 | ImgTg_0000000000 |
| IMG_1485429476 | jpg | 0 | ImgTg_1485195510 ImgTg_1485195592 ImgTg_1485195621 ImgTg_1486234725 |
| IMG_1485429627 | jpg | 0 | ImgTg_1485195510 ImgTg_1485195621 ImgTg_1485195592 |
| IMG_1485429660 | jpg | 0 | ImgTg_1485195510 ImgTg_1485195621 ImgTg_1485195592 |
| IMG_1485429669 | jpg | 0 | ImgTg_1485195510 ImgTg_1485195621 ImgTg_1485195592 |
| IMG_1485429681 | jpg | 0 | ImgTg_1485195592 |
| IMG_1485429687 | jpg | 0 | ImgTg_1486234725 |
| IMG_1485429695 | jpg | 0 | ImgTg_1485195621 ImgTg_1485195510 |
| IMG_1485429704 | jpg | 0 | ImgTg_0000000000 ImgTg_1486234725 |
| IMG_1485429710 | jpg | 0 | ImgTg_1485195510 |
| IMG_1485429718 | jpg | 0 | ImgTg_1485195510 |
| IMG_1485433986 | jpg | 0 | ImgTg_1485195510 ImgTg_1485195592 |
| IMG_1485433993 | jpg | 0 | ImgTg_1485195510 ImgTg_1485195592 |
| IMG_1486234762 | png | 143306 | ImgTg_1486234725 |
这是我正在使用的命令:
SELECT * FROM photos WHERE MATCH(tag) AGAINST('+ImgTg_1486234725 ' IN BOOLEAN MODE);
并且它在 table 的大多数情况下都可以正常工作,但由于某些原因它只是不起作用,尤其是在最后一行。返回:
+----------------+------+------+-------------------+
| id | type | size | tag |
+----------------+------+------+-------------------+
| IMG_1485429687 | jpg | 0 | ImgTg_1486234725 |
+----------------+------+------+-------------------+
注意: 如果我尝试将 tag
更改为不同的 id
它会起作用!但有些 ids
就是行不通
我该怎么办?
感谢大家的帮助
从昨天开始我就一直在尝试解这个谜语,但我发现我在发布问题后犯的错误:D
我正在使用某种 latin
排序规则,我将其更改为 utf8_bin
,现在它完美运行了!
我有一个table,为了简化,照片ID和标签ID。我最近注意到,当我使用 MATCH AGAINST 命令时,它不会 return 所有 suitable 匹配。尽管有时两行包含经过测试的完全相同的文本,但仍然有一个被选中而另一个没有被选中。
这是 table 的 照片
id | type | size | tag |
+----------------+------+---------+----------------------------------------------------------------------+
| IMG_1485197299 | jpg | 1400000 | ImgTg_0000000000 |
| IMG_1485429476 | jpg | 0 | ImgTg_1485195510 ImgTg_1485195592 ImgTg_1485195621 ImgTg_1486234725 |
| IMG_1485429627 | jpg | 0 | ImgTg_1485195510 ImgTg_1485195621 ImgTg_1485195592 |
| IMG_1485429660 | jpg | 0 | ImgTg_1485195510 ImgTg_1485195621 ImgTg_1485195592 |
| IMG_1485429669 | jpg | 0 | ImgTg_1485195510 ImgTg_1485195621 ImgTg_1485195592 |
| IMG_1485429681 | jpg | 0 | ImgTg_1485195592 |
| IMG_1485429687 | jpg | 0 | ImgTg_1486234725 |
| IMG_1485429695 | jpg | 0 | ImgTg_1485195621 ImgTg_1485195510 |
| IMG_1485429704 | jpg | 0 | ImgTg_0000000000 ImgTg_1486234725 |
| IMG_1485429710 | jpg | 0 | ImgTg_1485195510 |
| IMG_1485429718 | jpg | 0 | ImgTg_1485195510 |
| IMG_1485433986 | jpg | 0 | ImgTg_1485195510 ImgTg_1485195592 |
| IMG_1485433993 | jpg | 0 | ImgTg_1485195510 ImgTg_1485195592 |
| IMG_1486234762 | png | 143306 | ImgTg_1486234725 |
这是我正在使用的命令:
SELECT * FROM photos WHERE MATCH(tag) AGAINST('+ImgTg_1486234725 ' IN BOOLEAN MODE);
并且它在 table 的大多数情况下都可以正常工作,但由于某些原因它只是不起作用,尤其是在最后一行。返回:
+----------------+------+------+-------------------+
| id | type | size | tag |
+----------------+------+------+-------------------+
| IMG_1485429687 | jpg | 0 | ImgTg_1486234725 |
+----------------+------+------+-------------------+
注意: 如果我尝试将 tag
更改为不同的 id
它会起作用!但有些 ids
就是行不通
我该怎么办?
感谢大家的帮助 从昨天开始我就一直在尝试解这个谜语,但我发现我在发布问题后犯的错误:D
我正在使用某种 latin
排序规则,我将其更改为 utf8_bin
,现在它完美运行了!