php 搜索引擎 分词_PHP 实现中文分词搜索功能
中文分词介绍
众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。例如,英文句子I am a student,用中文则为:“我是一个学生”。计算机可以很简单通过空格知道student是一个单词,但是不能很容易明白“学”、“生”两个字合起来才表示一个词。把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。我是一个学生,分词的结果是:我 是 一个 学生。
应用场景
打个比方,我们要搜索内容字段有“中文分词搜索功能”的文章,用 like 去查询的话,可以匹配以下几种:
like '中文分%'like '%中文分词搜索功能%'like '分词搜索功能%'如果输入 “中文搜索功能”,就无法匹配到对应的文章。这时候就得用中文分词搜索功能了,分词搜索的原理就是把内容按关键字给拆分,上面那段可以拆分成 “中文”、“分词”、“搜索”、“功能”,然后把这些关键字和内容关联索引,查询结果。
需安装的扩展
pdo_sqlitesqlite3mbstring拉取中文分词的 Laravel Scout TNTSearch 驱动
composer require vanry/laravel-scout-tntsearch
发布 scout 配置文件,已安装 scout 可省略。
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"发布 tntsearch 配置文件。
php artisan vendor:publish --provider="Vanry\Scout\TNTSearchScoutServiceProvider"
添加config/app.php 的 Provider
// TNTSearch 全文搜索Laravel\Scout\ScoutServiceProvider::class,Vanry\Scout\TNTSearchScoutServiceProvider::class,安装结巴分词
jieba 为 python 版本结巴分词的 php 实现,分词效果最好,尤其是新词发现,不足之处是性能较差,占用内存大。
composer require fukuball/jieba-php
.env文件 增加如下配置
SCOUT_DRIVER=tntsearch# jiebaTNTSEARCH_TOKENIZER=jieba修改模型
我们是文章表要用到分词搜索,然后作用于标题和内容字段。
<?phpuseLaravel \Scout\Searchable;// ....classArticleextendsModel{useSearchable;/*** Description:索引的字段* User: Vijay <1937832819@qq.com>* Date: 2020/07/31* Time: 10:36* @return array*/publicfunction toSearchableArray(){return['id'=> $this->id,'title'=> $this->title,'content'=> strip_tags($this->content),];}// ...使用 jieba 分词可能会出现内存分配不足的错误信息:
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes)
修改 /app/Providers/AppServiceProvider.php 文件
publicfunction boot(){// ...// 增加内存防止中文分词报错ini_set('memory_limit',"256M");}
生成索引
php artisan scout:import"App\Models\Article"# tntsearch 命令, 性能更好// php artisan tntsearch:import 'App\Post'
举报/反馈
php 搜索引擎 分词_PHP 实现中文分词搜索功能相关推荐
- java lucene 中文分词_Lucene的中文分词器IKAnalyzer
分词器对英文的支持是非常好的. 一般分词经过的流程: 1)切分关键词 2)去除停用词 3)把英文单词转为小写 但是老外写的分词器对中文分词一般都是单字分词,分词的效果不好. 国人林良益写的IK Ana ...
- [转载]中文搜索引擎技术揭密:中文分词
前言 信息的飞速增长,使搜索引擎成为人们查找信息的首选工具,Google.百度.yisou.中搜等大型搜索引擎一直人们讨论的话题.随着搜索市场价值的不断增加,越来越多的公司开发出自己的搜索引擎,阿里巴 ...
- wordpress php 中文分词 开源,WordPress中文分词与智能搜索
问题 WordPress的搜索功能非常简陋,如果用户搜索"日语综合教程+第六册",WordPress会机械地构造一个wp_posts.post_title LIKE '%日语综合教 ...
- 白话Elasticsearch28-IK中文分词之IK中文分词器的安装和使用
文章目录 概述 Github IK安装 ik分词器基础知识 ik_max_word ik_smart 验证ik分词器 示例 概述 继续跟中华石杉老师学习ES,第28篇 课程地址: https://ww ...
- java中文分词工具_中文分词工具(LAC) 试用笔记
一.背景 笔者2年前写过一篇<PHP使用elasticsearch搜索安装及分词方法>的文章,记录了使用ES的分词的实现步骤,最近又需要用到分词,在网上发现一个百度的中文分词项目,中文词法 ...
- oracle 分词函数,Oracle 中文分词
转自:http://ddtlby.blog.sohu.com/100086259.html 准备工作: CREATE TABLE issues ( ID NUMBER, summa ...
- 3.ElasticSearch分词器,包括默认分词器、英文分词器、中文分词器
注:测试环境:CentOS Linux release 7.6.1810 (Core) jdk:1.8 elasticsearch:6.8.2 单节点 es 安装:https://blo ...
- jieba分词错误_jieba中文分词
在自然语言处理过程中,为了能更好地处理句子,往往需要把句子拆开分成一个一个的词语,这样能更好的分析句子的特性,这个过程叫做--分词. 我们来看看如何分词,嗯?别想多了,我不准备自己造轮子了,用别人的吧 ...
- 结巴分词优点_中文分词概述及结巴分词原理
词是中文表达语义的最小单位,中文分词是中文文本处理的一个基础步骤,分词的结果对中文信息处理至为关键. 本文先对中文分词方法进行概述,然后简单介绍结巴分词背后的原理. 1. 中文分词概述 中文分词根据实 ...
最新文章
- 亚马逊是如何进行软件开发的
- 一图看懂学位服:学位帽、学位袍、流苏、垂布
- 云计算将为移动医疗带来哪些新机遇?
- Bootstrap4+MySQL前后端综合实训-Day04-PM【PowerDesigner 图形化数据库设计软件(设置依赖关系、自动增长主键、生成sql语句)、SQLyog软件(备份数据库)】
- jQuery学习笔记之DOM操作、事件绑定(2)
- python修行之路(六 三级菜单实例)
- SAP C4C的一个错误消息 - Security token does not match
- progressIndicator in SalesPipeline
- P2056-[ZJOI2007]捉迷藏【点分树,堆】
- string字符串内容倒叙_面试官:string、stringbuffer和stringbuilder都不会,我招你干什么?...
- Redis: Redis支持五种数据类型
- 第四篇:在MVPArms中报错error: cannot find symbol class DaggerXXXComponent的问题
- 车牌号对应归属地及城市JSON带简码
- x509证书cer格式转pem格式
- 3dmax安全工具3ds Max Scene Security Tools
- 【AXI】解读AXI协议中的burst突发传输机制
- 谈谈基于模型的设计(Model-Based Design)
- Linux下 timerfd创建定时器并使用 epoll 监听
- 低碳环保+变废为宝=马铃薯淀粉生产废水处理设备
- 图像的直方图计算及绘制(红绿蓝三通道直方图)
热门文章
- java spring 中 每小时一次_spring 定时任务的 执行时间设置规则
- c# 通过手淘分享查询淘宝优惠券
- K8s 很难么?带你从头到尾捋一遍,不信你学不会
- window10 多桌面切换快捷键 win+tab
- 腾讯地图API使用指南
- Artificial Neural Networks FileStorage of OpenCV
- 为什么时钟和复位信号要在综合阶段设置为set_drive 0和set_dont_touch_network
- 装逼软件推荐(持续)
- CRMEB多商户系统怎么设置跳转链接
- 仿微信、qq聊天,@好友功能