中文分词介绍

众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。例如,英文句子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 实现中文分词搜索功能相关推荐

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

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

  2. [转载]中文搜索引擎技术揭密:中文分词

    前言 信息的飞速增长,使搜索引擎成为人们查找信息的首选工具,Google.百度.yisou.中搜等大型搜索引擎一直人们讨论的话题.随着搜索市场价值的不断增加,越来越多的公司开发出自己的搜索引擎,阿里巴 ...

  3. wordpress php 中文分词 开源,WordPress中文分词与智能搜索

    问题 WordPress的搜索功能非常简陋,如果用户搜索"日语综合教程+第六册",WordPress会机械地构造一个wp_posts.post_title LIKE '%日语综合教 ...

  4. 白话Elasticsearch28-IK中文分词之IK中文分词器的安装和使用

    文章目录 概述 Github IK安装 ik分词器基础知识 ik_max_word ik_smart 验证ik分词器 示例 概述 继续跟中华石杉老师学习ES,第28篇 课程地址: https://ww ...

  5. java中文分词工具_中文分词工具(LAC) 试用笔记

    一.背景 笔者2年前写过一篇<PHP使用elasticsearch搜索安装及分词方法>的文章,记录了使用ES的分词的实现步骤,最近又需要用到分词,在网上发现一个百度的中文分词项目,中文词法 ...

  6. oracle 分词函数,Oracle 中文分词

    转自:http://ddtlby.blog.sohu.com/100086259.html 准备工作: CREATE   TABLE issues ( ID         NUMBER, summa ...

  7. 3.ElasticSearch分词器,包括默认分词器、英文分词器、中文分词器

    注:测试环境:CentOS Linux release 7.6.1810 (Core)  jdk:1.8 elasticsearch:6.8.2 单节点 es       安装:https://blo ...

  8. jieba分词错误_jieba中文分词

    在自然语言处理过程中,为了能更好地处理句子,往往需要把句子拆开分成一个一个的词语,这样能更好的分析句子的特性,这个过程叫做--分词. 我们来看看如何分词,嗯?别想多了,我不准备自己造轮子了,用别人的吧 ...

  9. 结巴分词优点_中文分词概述及结巴分词原理

    词是中文表达语义的最小单位,中文分词是中文文本处理的一个基础步骤,分词的结果对中文信息处理至为关键. 本文先对中文分词方法进行概述,然后简单介绍结巴分词背后的原理. 1. 中文分词概述 中文分词根据实 ...

最新文章

  1. 亚马逊是如何进行软件开发的
  2. 一图看懂学位服:学位帽、学位袍、流苏、垂布
  3. 云计算将为移动医疗带来哪些新机遇?
  4. Bootstrap4+MySQL前后端综合实训-Day04-PM【PowerDesigner 图形化数据库设计软件(设置依赖关系、自动增长主键、生成sql语句)、SQLyog软件(备份数据库)】
  5. jQuery学习笔记之DOM操作、事件绑定(2)
  6. python修行之路(六 三级菜单实例)
  7. SAP C4C的一个错误消息 - Security token does not match
  8. progressIndicator in SalesPipeline
  9. P2056-[ZJOI2007]捉迷藏【点分树,堆】
  10. string字符串内容倒叙_面试官:string、stringbuffer和stringbuilder都不会,我招你干什么?...
  11. Redis: Redis支持五种数据类型
  12. 第四篇:在MVPArms中报错error: cannot find symbol class DaggerXXXComponent的问题
  13. 车牌号对应归属地及城市JSON带简码
  14. x509证书cer格式转pem格式
  15. 3dmax安全工具3ds Max Scene Security Tools
  16. 【AXI】解读AXI协议中的burst突发传输机制
  17. 谈谈基于模型的设计(Model-Based Design)
  18. Linux下 timerfd创建定时器并使用 epoll 监听
  19. 低碳环保+变废为宝=马铃薯淀粉生产废水处理设备
  20. 图像的直方图计算及绘制(红绿蓝三通道直方图)

热门文章

  1. java spring 中 每小时一次_spring 定时任务的 执行时间设置规则
  2. c# 通过手淘分享查询淘宝优惠券
  3. K8s 很难么?带你从头到尾捋一遍,不信你学不会
  4. window10 多桌面切换快捷键 win+tab
  5. 腾讯地图API使用指南
  6. Artificial Neural Networks FileStorage of OpenCV
  7. 为什么时钟和复位信号要在综合阶段设置为set_drive 0和set_dont_touch_network
  8. 装逼软件推荐(持续)
  9. CRMEB多商户系统怎么设置跳转链接
  10. 仿微信、qq聊天,@好友功能