【发布时间】:2014-04-13 06:15:42
【问题描述】:
我进行了 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,所以MySQL 50% 规则将how 设为停用词应该没有问题。
【问题讨论】:
标签: php mysql full-text-search