MySQL全文搜索不能处理某些单词

时间:2014-04-13 06:15:43

标签: php mysql full-text-search

我做了一个MySQL全文搜索,最小搜索长度为3个字符,搜索工作正常,除了一些单词没有结果返回结果可用。

如果我搜索单词avg,则会返回结果。如果我搜索单词how,则不会返回任何结果。

我正在尝试这种方式。

$keyword = preg_replace('/  */', ' *', $keyword);
$keyword = preg_replace('/\s+/', ' *', $keyword);
$keyword = preg_replace('/\W+/', ' *', $keyword);
$keyword = "$keyword*";

$query = "SELECT *, MATCH (title, link) AGAINST ( ? IN BOOLEAN MODE) AS rel FROM $table WHERE MATCH (title, link) AGAINST ( ? IN BOOLEAN MODE) GROUP by rel DESC, $order $sort LIMIT $rpp OFFSET $offset";

我也尝试过这些解决方案,但同样没有结果“how”

//Changing
$keyword = preg_replace('/  */', ' +', $keyword);
$keyword = preg_replace('/\s+/', ' +', $keyword);
$keyword = preg_replace('/\W+/', ' +', $keyword);

$keyword = preg_replace('/  */', '+', $keyword);
$keyword = preg_replace('/\s+/', '+', $keyword);
$keyword = preg_replace('/\W+/', '+', $keyword);

//In combination
$keyword = "+$keyword*";
$keyword = "$keyword*";    
$keyword = "+$keyword";
$keyword = "$keyword";

请查看并说明为什么我的搜索无法处理某些字词。

感谢。

更新 单词how存在于10行中, 单词avg存在于16行中。 我有超过650行。 我在查询中也使用IN BOOLEN MODE,因此对于使how成为停用词的MySQL 50%规则应该没有问题。

1 个答案:

答案 0 :(得分:1)

标准配置中

avghow都太短,请参阅documentation。您更改了此内容,但howstop word list的一个元素:

  

布尔全文搜索具有以下特征:

     

适用最小和最大字长全文参数。

     

禁用词汇表适用。

使用ft_stopword_file系统变量覆盖禁用词列表:

  

要覆盖默认的禁用词列表,请设置ft_stopword_file系统   变量。 (请参见第5.1.4节“服务器系统变量”。)变量   value应该是包含禁用词的文件的路径名   list,或禁用禁用词过滤的空字符串。

相关问题