PHP 实现中文分词搜索功能
中文分词介绍
众所周知,英语是基于单词的,单词和单词之间用空格隔开,而中文是基于单词的。句子中的所有单词都可以连接起来以描述含义。例如,英文句子“我是学生”将用中文表示“我是学生”。计算机可以很容易地通过空间知道学生是一个单词,但是不能轻易地理解“学习”和“生”这两个单词共同代表一个单词。将汉字序列划分为有意义的单词就是中文分词,有些人也将其称为切词。我是一名学生,并且分词的结果是:我是一名学生。
应用场景
例如,我们要在内容字段中搜索具有“中文分词搜索功能”的文章。如果使用“喜欢”查询,则可以匹配以下内容:
喜欢“中文分%”
喜欢’%中文分词搜索功能%’
如“分词搜索功能%”
如果输入“中文搜索功能”,则无法匹配相应的文章。此时,您必须使用中文分词搜索功能。分词搜索的原理是按关键字分割内容。上段可以分为“中文”,“分词”,“搜索”,“功能”,然后将这些关键字和内容与索引和查询结果相关联。
扩展安装
pdo_sqlite
sqlite3
mbstring
LaravelScoutTNTSearch驱动程序,用于提取中文分词
作曲家需要vanry/laravel-scout-tntsearch
发布侦查配置文件,如果安装了侦查,则可以省略。
phpartisanvendor:publish–provider=“Laravel\Scout\ScoutServiceProvider”
发布tntsearch配置文件。
phpartisanvendor:publish–provider=“Vanry\Scout\TNTSearchScoutServiceProvider”
添加config/app.php的提供程序
//TNTSearch全文搜索
Laravel\Scout\ScoutServiceProvider::class,
Vanry\Scout\TNTSearchScoutServiceProvider::class,
安装口吃分词
jieba是口吃分词的python版本的php实现。它具有最佳的分词效果,尤其是对于新单词发现。缺点是性能差和占用大量内存。
作曲者需要fukuball/jieba-php
.env文件添加以下配置
SCOUT_DRIVER=tntsearch
#捷霸
TNTSEARCH_TOKENIZER=杰坝
修改模型
我们在文章表中使用分词搜索,然后对标题和内容字段进行操作。
<?php
useLaravel\Scout\Searchable;
//…
classArticleextendsModel
{
useSearchable;
/**
*说明:索引字段
*用户:Vijay<https://zzzjtd.com>
*日期:2020/07/31
*时间:10:36
*@返回数组
*/
公共功能toSearchableArray()
{
返回[
‘id’=>this−>id,′title′=>this->id, 'title'=>this−>id, ′title′=>this->title,
‘content’=>strip_tags($this->content),
];
}
//…
使用jieba分词可能会导致内存分配错误消息不足:
PHP致命错误:耗尽了134217728字节的允许内存大小(尝试分配20480字节)
修改/app/Providers/AppServiceProvider.php文件
publicfunctionboot()
{
//…
//增加内存以防止中文分词错误
ini_set(‘memory_limit’,“256M”);
}
产生索引
phpartisanscout:导入“App\Models\Article”
#tntsearch命令,性能更好
//phpartisantntsearch:import’App\Post’
PHP 实现中文分词搜索功能相关推荐
- php 搜索引擎 分词_PHP 实现中文分词搜索功能
中文分词介绍 众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思.例如,英文句子I am a student,用中文则为:"我是一 ...
- Clucene实现中文分词搜索(转载)
最近,一阵忙乎,终于在Clucene(版本0.9.16)中实现了中文分词搜索. 一些需要改动的地方如下: 一. 把项目设置为Use Unicode Charac ...
- php scws 获取分词结果,php实现scws中文分词搜索的方法
本文实例讲述了php实现scws中文分词搜索的方法.分享给大家供大家参考,具体如下: 1.4个文件(本站下载地址.)解压后,放到一个地方 eg:E:/wamp/scws 2.php.ini 中配置 e ...
- mysql 中文分词搜索_php中文分词搜索
本篇文章主要介绍php中文分词搜索,感兴趣的朋友参考下,希望对大家有所帮助. 1.4个文件(本站下载地址.)解压后,放到一个地方 eg:E:/wamp/scws 2.php.ini 中配置 exten ...
- java之全文索引搜索lucene之增删改查文档与中文分词搜索
java之全文索引搜索lucene之增删改查文档与中文分词搜索 接上文,接下来介绍一个lucene的各种query,然后介绍一下中文全文索引搜索. 对于各种query,我就直接上代码了,具体的话,我已 ...
- 一行命令让ElasticSearch支持中文分词搜索
相信大家在开发博客,在线商城的时候会涉及到搜索功能.而近几年火起来的 ElasticSearch(ES)凭借其稳定.可靠.快速的实时搜索普遍受到大家的好评,连 Github.SoundCloud 也都 ...
- SCWS中文分词,功能函数实例应用
结合前文的demo演示,现写一个实用的功能函数,使用方法: header('Content-Type:text/html;charset=UTF-8'); $text = '我是一个中国 ...
- Laravel5.4中文分词搜索-使用 Laravel Scout,Elasticsearch,ik 分词(三)
上一篇地址:https://blog.csdn.net/huangfenhu/article/details/94009241 创建一个文章表和文章模型: php artisan make:model ...
- Laravel5.4中文分词搜索-使用 Laravel Scout,Elasticsearch,ik 分词(一)
elasticsearch需要的环境搭建 简介: 使用elasticsearch的前提是你的主机必须安装了java的JDK,而且版本必须是1.8以上,并设置JAVA_HOME环境变量 java的jdk ...
最新文章
- Swift中编写单例的正确方式
- 【c语言】2020蓝桥杯校内模拟赛c组
- Leetcode: Implement strStr()
- ASIHTTPRequest取消异步请求
- 基于机器学习的捡球机器人设计与实现(探索)第3篇——opencv基础知识学习(2019-02-02)
- win7 64位 内核安全_Win7进入死亡倒计时,全国一半电脑要遭殃?
- Rainmeter雨滴桌面秀教程
- c 语言 输入一个英文字母,判断该字母是大写还是小写,c语言从键盘输入一个字符,判断该字符是大写英文字母.小写英文字母还是数字....
- 计算机自检报错无法开机,BIOS维修网站www.biosrepair.com-开机自检BIOS错误代码解析...
- 瀚高数据库和mysql区别,瀚高数据库----select用法
- 文献解读——基于深度学习的病毒宿主预测
- python数字及字母的分离_Python 分割文本使得 字母和数字 分开?
- K8S—二进制部署安装(包含UI界面设置)
- 电脑显示没有wifi连接到服务器地址,WIFI无ip分配怎么解决
- 华视100UC 身份证阅读器 Java
- 找到了!宝藏公众号合集,新媒体运营小白必须学习
- 笔记-自媒体技术与软文写作
- Java变成笔记4:复用类
- Elasticsearch分词器介绍
- 1368: 海军节上的鸣炮声计算
热门文章
- 角度转度分秒lisp函数_自改小程序,提示错误,运行另一个lisp后就不会出错,求帮忙!...
- About Spreadsheets
- 评价页面html代码,HTML5 评论列表界面模板
- C++ 之 for 循环 | C++11 for 循环 | 内存 Destory 示例
- python教程99--控制鼠标键盘模块 pyautogui
- 数据可视化_EChat
- 鸿湖万联与龙芯中科共建“芯片+操作系统”全自主产业生态链
- python聊天小程序支持私聊和多人_Python实现多人在线匿名聊天的小程序
- 多搜 - 多个网站一起搜 (舆情监控版)
- 用 Uno Platform 构建一个 Kanban-style Todo App