问题
WordPress的搜索功能非常简陋,如果用户搜索“日语综合教程+第六册”,WordPress会机械地构造一个wp_posts.post_title LIKE '%日语综合教程+第六册%'的SQL查询送到数据库里,结果十有八九找不到任何文章。因为我的文章里并没有直接出现这种句子,我一般给“日语综合教程”加了书名号,并且“第六册”前面一般有空格。
解决思路
解决思路是对用户的查询字串进行分词,然后用空格隔开,最后送到数据库里查询。
中文分词
调用方法
/**
* 分词
* @param $s 原始句子
* @return string 用空格隔开的分词结果
* @author hankcs
*/
function sae_seg($s)
{
$seg = new SaeSegment();
$ret = $seg->segment($s);//$s是原始查询串
if ($ret)
{
$phrase = '';
foreach ($ret as $word)
{
$phrase .= $word['word'] . ' ';
}
$phrase = substr($phrase, 0, strlen($phrase) - 1);
}
return $phrase;
}
这样就可以将“日语综合教程+第六册”拆分为“日语