首页 > 解决方案 > MariaDB MATCH AGAINST 与单引号搜索词?

问题描述

我正在尝试找到一个使用 MATCH AGAINST 的有效查询,同时搜索词包含单引号。

数据库表中的示例数据:

I'm a freak

示例搜索词:

I'm

我试过的搜索查询:

SELECT * FROM table WHERE MATCH (name) AGAINST ('"I\'m"' IN NATURAL LANGUAGE MODE);
SELECT * FROM table WHERE MATCH (name) AGAINST ('"I\'m"' IN BOOLEAN MODE);
SELECT * FROM table WHERE MATCH (name) AGAINST ('I\'m*' IN BOOLEAN MODE);
SELECT * FROM table WHERE MATCH (name) AGAINST ('(I\'m)*' IN BOOLEAN MODE);

...还有很多。没有任何工作。

我正在使用 MariaDB 10.1.33。

有任何想法吗?

标签: sqlmariadb

解决方案


  • 我很确定收缩不被视为单词。
  • 相反,撇号被视为单词分隔符,为您提供“I”和“m”。
  • 但是你可能没有innodb_ft_min_token_size=1,所以这两个“词”被忽略了。

FT有局限性;你遇到过其中之一。


推荐阅读