这是两年前学习Coreseek时在问答区问的一个问题:

当时只是想了下,但没去做,现在学迅搜,又想到这个问题,干脆还是试试把它给做了吧 ^_^

1、数据表字段

2、ThinkPHP5的model里做 py_whole 和 py_acronym 的自动完成

namespace app\xxx\model;

use think\Model;

use search\XunSearch;// 参照迅搜官方给 Yii 1 写的类弄的一个TP扩展类

class Xxx extends Model

{

protected $auto = ['py_whole', 'py_acronym'];

// 自动设置拼音全拼

protected function setPyWholeAttr()

{

// 获取title

$title = $this->getAttr('title');

if (empty($title)){

return '';

}

// 先对title分词

$xs = new XunSearch('recipe');

$keyword_list = $xs->getScws()->getTokens($title);

// 再对title分的每一个词转换成拼音

$pinyin = [];

if (count($keyword_list)>0){

foreach ($keyword_list as $keyword){

$keyword_pinyin = gbk_to_pinyin($keyword);// 这里用PHPCMS里般过来的转拼音函数转换

if (is_array($keyword_pinyin) && count($keyword_pinyin)>0){

$pinyin[] = implode ( '' , $keyword_pinyin );

}

}

}

if (count($pinyin)>0){

return implode(' ', $pinyin);// 迅搜里的配置分割方式默认是空格,这里也就用空格了

}else{

return '';

}

}

// 自动设置拼音首字母缩写

protected function setPyAcronymAttr()

{

$title = $this->getAttr('title');

if (empty($title)){

return '';

}

// 先对title分词

$xs = new XunSearch('recipe');

$keyword_list = $xs->getScws()->getTokens($title);

$pinyin = [];

if (count($keyword_list)>0){

foreach ($keyword_list as $keyword){

$keyword_arr = mb_str_split($keyword);// 字符进行逐字分割,这是一个自定义函数,解决PHP自带函数不能分割中文问题

// 提取拼音首字母缩写

$keyword_initial = array_map(function( $word ){

$pinyin = gbk_to_pinyin($word);

return substr( $pinyin[0], 0, 1 );

}, $keyword_arr);

if (is_array($keyword_initial) && count($keyword_initial)>0){

$pinyin[] = implode ( '' , $keyword_initial );

}

}

}

if (count($pinyin)>0){

return implode(' ', $pinyin);// 迅搜里的配置分割方式默认是空格,这里也就用空格了

}else{

return '';

}

}

}

数据入库时就可以得到这样的结果

3、迅搜的项目配置文件里这样配置

project.name = xxx

[id]

type = id

[title]

type = title

[py_whole]

index = mixed

tokenizer = split

[py_acronym]

index = mixed

tokenizer = split

4、测试效果(表中只有30条测试数据,所以结果不多)

public function testxs()

{

$xs = new \search\XunSearch('recipe');

$keyword = 'mb';

dump('关键词: '.$keyword);

$list = $xs->search($keyword, '', 0, 10);

dump('查询语句: '.$xs->getQuery());

dump($list);

}

5、用SQL语句验证迅搜的结果与数量对不对

不错,比用迅搜的 getExpandedQuery() 方法转换得到的拼音准确多了

php汉字首字母缩写,迅搜(XunSearch)+ThinkPHP5实现标题的拼音或拼音首字母缩写搜索...相关推荐

  1. 迅搜(XunSearch)+ThinkPHP5实现标题的拼音或拼音首字母缩写搜索

    2019独角兽企业重金招聘Python工程师标准>>> 这是两年前学习Coreseek时在问答区问的一个问题: https://www.oschina.net/question/25 ...

  2. 迅搜(xunsearch)的安装使用以及操作类分享

    搜索到这篇文章的人大多都应该已经知道 迅搜(xunsearch) 是什么. 迅搜(xunsearch)是采用 C/C++ 基于 xapian 和 scws 开发的全文搜索引擎解决方案,适用于php全文 ...

  3. 迅搜xunsearch全文搜索引擎在负载均衡集群中的配置方法

    迅搜xunsearch全文搜索引擎在负载均衡集群中的配置方法 近来在一个电商项目中需要对商品检索实现中文分词和全文搜索功能,,于是使用了国内做得比较好并且是开源的迅搜全文搜索引擎,对PHP支持良好并且 ...

  4. CentOS8.0安装迅搜(XunSearch)引擎报错的解决办法

    在一些小型项目上需要应用全文搜索引擎时,我比较喜欢使用迅搜,因为部署方便,调用简单,今天给客户部署系统安装迅搜时,竟然有报错(极少遇到报错的情况),花了一些时间查资料,终于解决了,分享一下经验 首先是 ...

  5. 全文搜索,迅搜(Xunsearch)使用心得

    最近公司的项目需要全文搜索的功能,网上有人说用迅搜可以,特地研究了下.文档看了半天,愣是没看懂:看了两天才看出来点东西,然后跟着文档动手测试,有点理解了,总结一下 ,希望能帮助以后用到的phper. ...

  6. 站内搜索 迅搜xunsearch 中小型网站的福音

    公司网站以html网页为主,一直想建立一个站内搜索. 在历经一个多月的寻找,测试中,终于找到了迅搜. 我使用过百度. Azure.sitesearch360等等,各有优缺点,但是都不是很顺手.site ...

  7. linux xunsou_Linux下的迅搜(xunsearch)安装使用教程,并设置成开机启动服务

    1.到 /usr/local/src 目录,运行下面指令下载.解压安装包cd /usr/local/src wget http://www.xunsearch.com/download/xunsear ...

  8. mysql全文索引thinkphp_ThinkPHP5 使用迅搜 (XunSearch) 实现全文检索实例指导

    前期准备 入坑了一天,折腾的无语,个人观点:[文档太差,适合学习思路,不建议入坑] 背景 最近在整理全文检索解决方案 注意到 xunsearch 的评价很高,在此记录一番 场景描述 此处作为对 xun ...

  9. 站内搜寻引擎 php mysql_迅搜(xunsearch) - 开源免费中文全文搜索引擎|PHP全文检索|mysql全文检索|站内搜索...

    热点新闻 本软件趋于稳定,版本发布速度放缘,久违了,这次加入支持通过 composer 管理 PHP-SDK,并加入 yii2 扩展支持!非常高兴能在今晚发布 xunsearch-1.4.9 正式稳定 ...

最新文章

  1. 实体嵌入Entity Embedding及代码实现
  2. Hibernate之mappedBy
  3. matlab将二值图像与原图重叠_[转载]图像处理matlab及图像融合图像镶嵌图像拼接...
  4. 【MongoDB】MongoDb的“not master and slaveok=false”错误及解决方法
  5. day 03 selenium与Beautifulsoup4的原理与使用
  6. Spring JPA数据+休眠+ MySQL + Maven
  7. 为什么诸多顶级期刊论文中的观点也不靠谱?
  8. 字符串处理 —— 概述
  9. 聊聊restful和restframework
  10. 没有ADC的MCU如何实现音频播放?
  11. 层次分析法——matlab实操
  12. 蓦然回首,Java 已经 24 岁了!
  13. 计算机视觉经典论文的参考论文目录
  14. 使用一键重装系统后,如何删除多余的PE系统引导菜单?
  15. 微信公众号的系统功能定位
  16. Object Detection in 20 years:A Survey 整理
  17. Access to XMLHttpRequest at 'XXX' from origin 'XX' has been blocked by CORS policy: No 'Access-Contr
  18. 【转载】抽象语法树简介(有图)
  19. ipad mini2显示无服务器,iPad Mini 2维修成本剖析 _苹果 iPad mini 2_平板电脑评测-中关村在线...
  20. 7个各有特点的HTTP代理服务器

热门文章

  1. STM32实现电机的正反转
  2. Python3 编码问题: 怎么将Unicode转中文,以及GBK乱码ÖйúÉÙÊýÃñ×åÌØÉ«´åÕ¯
  3. 分布式系统灰度发布实践
  4. 高中英语选修计算机,人教版高中英语选修计算机英语AWorldofCumputers.ppt
  5. 基于Bandersnatch搭建本地pypi源
  6. 【问题已解决】Caused by: java.lang.IllegalStateException
  7. 苏黎世联邦理工学院计算机系研究生,苏黎世联邦理工学院硕士申请条件都有哪些?...
  8. 电商平台微服务架构演进
  9. html打印A4长宽设置
  10. GitHub客户端的基本操作