问题

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;

}

这样就可以将“日语综合教程+第六册”拆分为“日语 综合 教程 第六册”。

整合WordPress

目前有多种整合方式:

通过filter实现

function rebuild_search_query($request_vars)

{

if (!empty($request_vars['s']))

{

$request_vars['s'] = sae_seg($request_vars['s']);

}

return $request_vars;

}

add_filter('request', 'rebuild_search_query');

这种方式在最大限度上优化了用户体验,但是每个页面都会触发rebuild_search_query,在效率上稍微有点浪费。毕竟不是每个页面都是搜索,也不是每个人都要搜索,更何况大部分搜索都有结果。

通过主题search.php实现

由此,我的想法是,当没有搜索结果的时候,就将搜索语句分词,通过js重定向,发起一次新的搜索:

if(!isset($_GET['seg']))

{

$ret = sae_seg($request_vars['s']);

if ($ret)

{

?>

}

}

这样最大限度保证了效率,用户会看到屏幕闪烁了一下才出结果。

效果

就算你用再奇怪的句子,也能搜索到结果:

wordpress php 中文分词 开源,WordPress中文分词与智能搜索相关推荐

  1. 北大开源了中文分词工具包,准确度远超Jieba,提供三个预训练模型

    车栗子 发自 凹非寺 量子位 报道 | 公众号 QbitAI "土地,快告诉俺老孙,俺的金箍棒在哪?" "大圣,您的金箍,棒就棒在特别适合您的发型." 中文分词 ...

  2. 公司开源的java分词,Java开源项目cws_evaluation:中文分词器分词效果评估

    通过对前文<word分词器.ansj分词器.mmseg4j分词器.ik-analyzer分词器分词效果评估>中写的评估程序进行重构改进,形成了一个新的Java开源项目cws_evaluat ...

  3. 几款开源的中文分词系统

    以下介绍4款开源中文分词系统 python环境下,jieba也不错,实现词性分词性能据说不错. 1.ICTCLAS – 全球最受欢迎的汉语分词系统 中文词法分析是中文信息处理的基础与关键.中国科学院计 ...

  4. wordpress中文主题,开源wordpress中文免费主题模板

    wordpress中文主题,虽然说Wordpress主题语言对网站本身影响并不是太大,但是如果能够满足要求的话,站长还是更偏向于使用国内主题,一方面是wordpress中文主题使用起来都比较容易上手, ...

  5. NLP(2) | 中文分词分词的概念分词方法分类CRFHMM分词

    NLP(1) | 词向量one hot编码词向量编码思想 分词的概念 简单来说就是把词进行分开,分词的难点: 1.如何避免歧义,如:"白开水不如果汁甜".如何让机器避免将" ...

  6. 中文信息处理(二)—— 分词

    文章目录 中文信息处理核心技术 中文分词 NLP任务层次 一.为什么分词? 二.分词为什么难? 三.常见的分词系统 四.几种分词方法 1. 基于词表的分词 1.1 主要思想 1.2 最大匹配分词法关键 ...

  7. java lucene 中文分词_Lucene的中文分词器IKAnalyzer

    分词器对英文的支持是非常好的. 一般分词经过的流程: 1)切分关键词 2)去除停用词 3)把英文单词转为小写 但是老外写的分词器对中文分词一般都是单字分词,分词的效果不好. 国人林良益写的IK Ana ...

  8. python统计词频瓦尔登湖_自然语言处理之中文分词器-jieba分词器详解及python实战...

    (转https://blog.csdn.net/gzmfxy/article/details/78994396) 中文分词是中文文本处理的一个基础步骤,也是中文人机自然语言交互的基础模块,在进行中文自 ...

  9. python 分词工具_「分词工具」干货 | 史上最全中文分词工具整理 - seo实验室

    分词工具 作者 | fendouai 分词服务接口列表 二.准确率评测: THULAC:与代表性分词软件的性能对比 我们选择LTP-3.2.0 .ICTCLAS(2015版) .jieba(C++版) ...

最新文章

  1. Ubuntu中安装DiscuzX2
  2. openvidu部署
  3. jsp 中forward 和 Redirect 的用法区别
  4. ios取两个数之间的随机小数_如果取到小数区间内的任一数字?
  5. python观察日志(part8)--文件名和路径
  6. Hibernate异常之关键字错误
  7. 简单的光线追踪教程(一)
  8. CSS颜色代码,二进制颜色代码
  9. php解析微信emoji字符
  10. 全球及中国出版行业发展动态与运营盈利前景分析报告2022版
  11. ch341a编程和ttl刷机区别_USB转TTL(CH341A)的注意事项及说明 -
  12. 基于JAVA工作流流程编辑OA系统计算机毕业设计源码+数据库+lw文档+系统+部署
  13. 腾讯秀丽江山之长歌行服务器维护,37秀丽江山之长歌行服务器正式关服公告
  14. 求生之路2服务器无限尸潮插件,Left 4 Dead 2求生之路2 服务器多特插件8特插件特殊感染无限插件...
  15. java cms 知乎_可能是史上最全面的学习资源 — VUE 开源库篇(二)
  16. 7-12 打印倒直角三角形图案
  17. PyDev Eclipse使用技巧说明
  18. 用python画一个糖葫芦
  19. 微信小程序文件目录介绍
  20. 毛毛雨的博客乐园—内容简介

热门文章

  1. 随钻声波测井技术的简单介绍
  2. wsl+ zsh + oh-my-zsh配置
  3. 巴菲特的一些投资理念
  4. Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】
  5. 道路裂缝伸缩缝灌缝选用沥青灌封胶的另外一个原因
  6. python语言程序设计是什么,python语言程序设计教程
  7. 驱动人生英文版官方版
  8. 四种情况会造成内存的泄漏:
  9. [学员投稿]thinkphp漏洞扫描
  10. 泸州天立2021年高考成绩查询时间,泸州天立国际学校2021年排名