跳到主要内容

网站中文分词与智能搜索的尝试

分词需求

默认的WP并没有分词功能,搜索时很难找到自己的结果,除非搜索的用户会使用空格,否则,网站不会自动分词的,因为网站只支持手工空格分词

比如,如果你搜 “保定seo公司”,结果如下

保定seo公司-搜索结果

如果你搜 “保定 seo 公司” ,内容很灿烂:

保定-seo-公司-搜索结果

但是一般用户习惯了搜索引擎的自动分词,所以,网站如果不能自动分词,那么,用户体现就会差一些。

分词方案

方法一、搜索的时候提示用户用空格分隔,有点小傻。

方法二、解决思路是对用户的查询字串进行分词,然后用空格隔开,最后送到数据库里查询。

中文分词函数

将分词函数 sea_seg()放入function.php

/**
 * 分词
 * @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;
}

改善搜索功能

通过主题search.php实现搜索语句分词,通过js重定向,发起一次新的搜索:

if(!isset($_GET['seg']))
{
    $ret = sae_seg($request_vars['s']);
    if ($ret)
    {
        ?>
        <script type="text/javascript">
            <!--
            location.replace("<?php echo get_option('siteurl') . '/?s=' . $phrase .'&seg=done'; ?>");
            -->
        </script>
    <?php
    }
}

我们试试看:

结果报错了,原因,本站的主题二开过于复杂,难以直接使用外部的解决方案,稍后会想其他办法更新。

若你使用的是国内主题,不妨修改一下试试。

最终解决办法

用了模板兔开发的插件Erphp Search,使用效果可以直接搜索测试。

终于解决,插件地址:https://qie.me/wordpress/erphp-search

本站支持原创只是产权,请购买正版。联系原创作者,请注明米国生活seo推荐,或许有彩蛋。

对了该插件还集成了百度的NLP功能(接口申请地址:申请地址https://console.bce.baidu.com/ai/?fromai=1#/ai/nlp/overview/index),对模板兔和百度表示支持和感谢。

返回顶部