Sphider + SCWS 打造完美PHP中文搜索引擎
2023-09-14 09:01:20 时间
今日需要为几个网站做个全文搜索引擎,找了几个PHP开源项目,先试了一下Sphinx ,可惜是基于数据库的,相当于数据库搜索的扩展。Sphider还不错,不过中文的分词不行,基本只能靠空格和符号进行分词。想用luence的话只能用Java和.net了,没有php版的,因此只好尝试自己修改Sphider的分词了。还好找到了SCWS这个不错的中文分词系统,只需要把他的功能加入到Sphider里面就可以了。 先按照他们的安装文档部署好Sphider和SCWS,这里使用的SCWS-1.1.6,需要部署好PHP扩展,注意Linux下要修改词库的权限,否则分词会把所有汉字单独分开。Sphider这里使用的丁廷臣简体中文完美汉化版带蜘蛛搜索引擎。 两者部署无误后,修改Sphider,找到admin文件夹下的spider文件,首先在开始加入代码初始化分词程序 注意这里使用的gbk,如果你的网页用的utf8编码,要把这里以及词典和规则文件的位置更改一下 在index_url函数中,把原有的英文分词替换掉,在$wordarray = unique_array(explode(" ", $data['content']));前面加上 $cws->send_text($data['content']); $list = $cws->get_tops(1000, $xattr); settype($list, 'array'); $wordarray=array(); $i=0; // segment foreach ($list as $tmp) { $wordarray[$i][1]=$tmp['word']; $wordarray[$i][2]=$tmp['times']; $i++; } 删除 $wordarray = unique_array(explode(" ", $data['content'])); 和 $wordarray = calc_weights ($wordarray, $title, $host, $path, $data['keywords']); 两个语句,因为Sphider原有的英文分词这里就完全没必要用了,这里可以自行对$wordarray进行限制和优化,这里我写的很简单。 修改完成后,爬虫就能正常对中文进行分词了,效果还不错,注意如果出现乱码注意网页或者辞典编码是utf8还是gb2312。
相关文章
- php和asp网络验证码,Verifycode 1个简单的网页图片验证码的示例程序,基本上现有 字和字母都可以识别。 WEB(ASP,PHP,…) 238万源代码下载- www.pudn.com…
- PHP 密码散列算法函数password_hash详解
- PHP官方中文手册chm下载地址
- php Undefined index和Undefined variable的解决方法
- 66toolkit v13.0.0多功能PHP网络工具箱源码
- PHP trim():去除字符串两边的空格
- Linux下使用PHP开发软件的简易指南(linux下php开发)
- 妙用Linux:快速启动PHP程序(linux如何启动php)
- 重新启动:在Linux下恢复PHP服务(linux重启php服务)
- PHP array_fill_keys():使用指定的键和值来填充数组
- PHP操作MySQL数据库,实现强大的数据功能(php调用mysql数据库)
- PHP与MySQL的完美搭配,打造高效列表展示(php与mysql列表)
- 深入理解MySQL转义在PHP中的应用技巧(mysql转义php)
- PHP文件快速导入MySQL数据库(php文件导入mysql)
- mysql线程技术驱动PHP程序优化(mysql线程php)
- 解决PHP输出MSSQL数据中文乱码问题(php输出MSSQL乱码)
- 简便快捷:在PHP服务器上使用MSSQL(php服务器 mssql)
- Linux 下快速安装 PHP(linux 下安装php)
- 编写自己的php扩展函数
- 用PHP实现验证码功能
- Linux下PHP+MYSQL+APACHE配置过程(摘)
- 使用eAccelerator加密PHP程序
- 用PHP读取flv文件的播放时间长度
- 第四章php数学运算
- PHP的可变变量名的使用方法分享
- php图片加中文水印实现代码分享
- 简单的php数据库操作类代码(增,删,改,查)
- PHP基于Yii框架中使用smarty模板的方法详解
- php地区分类排序算法
- PHP使用json_encode函数时不转义中文的解决方法
- php数组保存文本与文本反编成数组实例
- PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
- php的GD库imagettftext函数解决中文乱码问题