用Sphinx给dedecms 5.5添加全文检索的功能

一、前言

 

dede内容管理系统,算是国内比较主流的一款cms了。

 

今年做项目时也接触了两次。它的搜索功能比较薄弱,默认情况下只是对文章标题和关键字进行搜索,而且使用的是数据库的like方式查询,数据量一旦突破10W可能就会产生一些性能的瓶颈。

 

这里我们对它进行一些改造,让它的搜索不仅仅只是搜索标题和关键字,还包括文章内容。使用全文检索引擎,替换性能低下的like查询方式。

 

开源免费的全文检索引擎比较主流的选择有:lucene和sphinx,由于我们是php环境,方便起见,这里选择可以和mysql数据库完美结合的sphinx

 

二、Sphinx 简介

出自俄罗斯的开源全文搜索引擎软件Sphinx , 单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为:创建100万条记录的索引只需 3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。

 

官方网站:

http://www.sphinxsearch.com

推荐博文:

http://blog.s135.com/post/360/

 

三、Coreseek 简介

Coreseek是基于Sphinx的一款软件,对Sphinx做了一些改动,主要是中文切分词方面更合理一些

 

变更如下:

改进MMSeg切词策略,支持产品型号的切分
修正MMSeg切分结果不一致的问题
增加MMSeg的Python接口(Win32 Only)
修正了PySource的若干错误
为主流的Linux平台提供的预编译二进制包

 

官方网站:

http://www.coreseek.cn/

帮助手册pdf下载:

http://www.coreseek.cn/uploads/pdf/sphinx_doc_zhcn_0.9.pdf

 

四、准备工作

在对dedecms进行改动前,首先要安装Coreseek。Coreseek的安装可以查看上面提到的帮助手册,需要提醒的是:

1、Coreseek可以跑在windows环境下,但仅可用于测试

2、安装前需要首先安装python环境

Coreseek的安装方法还可以通过搜索得到

http://www.google.cn/search?hl=zh-CN&newwindow=1&q=coreseek+%E5%AE%89%E8%A3%85&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&oq=

这里就不做重复了,我的这次测试是在windows xp环境下进行的(公司有个discuz论坛也是用的Sphinx做全文检索,跑在linux下)。

五、Sphinx的config设置

 

 

六、在dedecms数据库中建立sphinx表

前面的安装过程中,给mysql增加了一个sphinx模块,可以创建sphinx类型的表。

建表sql如下:

 

七、修改dede的搜索类 include/arc.searchview.class.php

改两个方法:

1、CountRecord

 

2、GetArcList

 

八、运行

到这里dedecms就可以借助sphinx进行全文检索了,当然,在生产环境下,还要做些优化。

下面是一些操作:

1、启动sphinx

在sphinx/bin目录下

searchd --config d:/csft /csft.conf

这里csft.conf是上面的sphinx的config文件

命令为dos命令

2、创建索引

在sphinx/bin目录下

indexer dedecms –config d:/csft /csft.conf

 

写的比较仓促,而且这个测试是前两个月做的,所以可能总结的不够好,如果有问题,欢迎发邮件给我:warran(at)qq.com

没有更多推荐了,返回首页