Sphider + SCWS 打造完美PHP中文搜索引擎
今日需要为几个网站做个全文搜索引擎,找了几个PHP开源项目,先试了一下Sphinx ,可惜是基于数据库的,相当于数据库搜索的扩展。Sphider还不错,不过中文的分词不行,基本只能靠空格和符号进行分词。想用luence的话只能用Java和.net了,没有php版的,因此只好尝试自己修改Sphider的分词了。还好找到了SCWS这个不错的中文分词系统,只需要把他的功能加入到Sphider里面就可以了。
先按照他们的安装文档部署好Sphider和SCWS,这里使用的SCWS-1.1.,需要部署好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(, $xattr);
settype($list, 'array');
$wordarray=array();
$i=;
// segment
foreach ($list as $tmp)
{
$wordarray[$i][]=$tmp['word'];
$wordarray[$i][]=$tmp['times'];
$i++;
}
删除
$wordarray = unique_array(explode(" ", $data['content']));
和
$wordarray = calc_weights ($wordarray, $title, $host, $path, $data['keywords']);
两个语句,因为Sphider原有的英文分词这里就完全没必要用了,这里可以自行对$wordarray进行限制和优化,这里我写的很简单。
修改完成后,爬虫就能正常对中文进行分词了,效果还不错,注意如果出现乱码注意网页或者辞典编码是utf8还是gb2312。
Sphider + SCWS 打造完美PHP中文搜索引擎的更多相关文章
- Python分布式爬虫打造搜索引擎完整版-基于Scrapy、Redis、elasticsearch和django打造一个完整的搜索引擎网站
Python分布式爬虫打造搜索引擎 基于Scrapy.Redis.elasticsearch和django打造一个完整的搜索引擎网站 https://github.com/mtianyan/Artic ...
- Android 打造完美的侧滑菜单/侧滑View控件
概述 Android 打造完美的侧滑菜单/侧滑View控件,完全自定义实现,支持左右两个方向弹出,代码高度简洁流畅,兼容性高,控件实用方便. 详细 代码下载:http://www.demodashi. ...
- PHP生成PDF完美支持中文,解决TCPDF乱码
PHP生成PDF完美支持中文,解决TCPDF乱码 2011-09-26 09:04 418人阅读 评论(0) 收藏 举报 phpfontsheaderttfxhtml文档 PHP生成PDF完美支持中文 ...
- Xunsearch迅搜(基于 xapian+scws 的开源中文搜索引擎)安装与简单使用
今天鼓捣了xunsearch,感觉官方指南写得挺详细,于是按照指南一步一步走,但是感觉越看越凌乱,像看API一样,新手看得特费劲,网上也少有新手教程,于是略过今天的歪路,记录一下我的安装步骤. Xun ...
- coreseek (sphinx)+ Mysql + Thinkphp搭建中文搜索引擎详解
一, 前言 1,研究coreseek的动机 我有一个自己的笔记博客,经常在上面做一些技术文章分析.在查询一些文章的时候,以前只能将要查询的内容去mysql中用like模糊匹配.在文章多了的情 ...
- Java 完美判断中文字符
Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比 ...
- Java 完美判断中文字符的方法
Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比 ...
- 打造完美的xml技术解决方案(dom4j/xstream)
转: XML 技术是随着 Java 的发展而发展起来的.在 XML 出现之前对于简单的数据格式通常是存储在 ini 配置文件等文本文件中,复杂的格式则采用自定义的文件格式,因此对于每种文件格式都要有专 ...
- 10款优秀Vim插件帮你打造完美IDE
导读 如果你稍微写过一点代码,就能知道“集成开发环境”(IDE)是多么的便利.不管是Java.C还是Python,当IDE会帮你检查语法.后台编译,或者自动导入你需要的库时,写代码就变得容易许多.另外 ...
随机推荐
- OpenCV学习(12) 图像的腐蚀与膨胀(3)
通过使用不同的结构元素来进行膨胀腐蚀操作,可以检测图像中的角点,下面就一步一步看这个算法如果实现角点检测. 原图像: 首先我们创建四个结构元素 先用十字结构元素对原图像进行膨胀操作,得到下面的图像 再 ...
- 【Android JNI】JNIEnv和JavaVM的区别
JNI的实现可涉及两个关键类:JNIEnv和JavaVM. JavaVM:这个代表java的虚拟机.所有的工作都是从获取虚拟机的接口开始的. 第一种方式,在加载动态链接库的时 ...
- Android -- 写xml到SD卡中
信息类 private ...
- 【Networking】(转)一个非常好的epoll+线程池服务器Demo
(转)一个非常好的epoll+线程池服务器Demo Reply 转载自:http://zhangyafeikimi.javaeye.com/blog/285193 [cpp] /** 张亚霏修改 文件 ...
- XPath查找节点值示例
下面一个XML文档,需要找到粗体部分文字: <?xml version='1.0' encoding='utf-8'?> <rep sts="OK" a=&quo ...
- css换行缩进
1.换行缩进 <div id="alertiframe"> <span id="closeiframe">×</span> ...
- Iocomp控件教程之Pie Chart——饼状图控件
Pie Chart--饼状图控件(Pie Chart)以饼状图形式显示每一个项目内容所占的百分比比重.在设计时.能够使用属性编辑器加入或者移除项目以及更改属性值.在执行时.使用AddItem,Remo ...
- Objective-C中3种枚举比较及KVC两个小技巧
Objective-C中3种枚举比较及KVO两个小技巧 一:oc的3种枚举 for循环 for in 枚举块 如代码 NSUInteger totalCount = 10000; NSMutableA ...
- MySQL 5.1参数
MySQL 5.1.73参数 Variable_name Valueauto_increment_increment 1auto_increment_offset 1autocommit ONa ...
- chrome 此网页正试图从未经验证的来源加载脚本
chrome 此网页正试图从未经验证的来源加载脚本 CreateTime--2018年5月25日08点02分 Author:Marydon 1.情景还原 以我的网站为例,https://www.c ...