基于sphinx服务实现酷友社区站内搜索
2016-05-06武红宽
武红宽
【摘要】 随着用户的增多,酷友社区站内的帖子数据量不断增大。而现有的基于数据库的搜索对服务器的负载越来越大,严重时,能导致整个服务器跌机。重新构建酷友社区站内全文搜索的需求越发紧迫,本文研究的是基于sphinx服务实现酷友社区站内搜索,这样一来,用户也可以通过站内搜索引擎,更加快捷、准确地找到自己需要的内容。
【关键词】 sphinx 搜索 数据库
一、引言
对于酷友社区网站来说,随着信息量的逐步提升,内容越来越丰富,单纯的通过展示和网站架构已经无法满足用户查找内容的需要。另外,原有的基于MySQL数据库搜索。不仅搜索速度慢,而且会对酷友社区服务器的性能产生影响。这里,提出了一种基于sphinx服务实现酷友社区站内搜索。
二、总体设计
2.1总体框架设计
整体框架可以分为用户请求模块、PHP处理模块以及数据存储模块。这里我们的主要工作是对PHP处理模块进行sphinx服务的搭建。
2.2数据源的配置
数据源提供某种所需要数据的器件或原始媒体。在数据源中存储了所有建立数据库连接的信息。这里我们使用的MySQL数据库做为酷友社区的数据库,所以sphinx的数据源是从MySQL数据库的表里获取的。以下是对帖子表数据源的配置:
source threads
type = mysql #数据库类型
sql_host = 127.0.0.1 #数据库ip地址
sql_user = root #数据库登陆用户名
sql_pass = 123456 #数据库登陆密码
sql_db = coolpad_bbs_06_10 #数据库名
2.3索引的配置
索引与书籍中的目录结构有些类似,在一本书中,利用目录可以快速查找所需信息,而无须阅读整本书。sphinx中的索引数据是结构化文档的集合,每个文档是字段的集合。一行对应一个文档,每一列对应一个字段。索引还可以包含属性用于过滤、排序、分组,这些属性不会被全文检索,仅仅是被存储在索引中。以下是对帖子表索引的配置:
index threads
{
source = threads #资源名称
path = D:/coreseek-3.2.14-win32/var/data/threads #路径
charset_type = zh_cn.utf-8 #编码格式
}
2.4 sphinx服务的开启
进入DOS命令行下,执行以下命令:
cd D:\coreseek-3.2.14-win32 //进入coreseek-3.2.14-win32文件夹
SET PATH=%CD%\bin;%PATH% //设置环境变量
bin\indexer -c etc\csft_mysql.conf --all //建立所有索引
bin\searchd -c etc\csft_mysql.conf //开启sphinx服务
结果及分析
在DOS命令下,输入命令:bin\indexer -c etc\csft_mysql. conf,出现了“using config file ‘etc\csft_mysql.conf…”,可以看出,sphinx服务可以成功启动。
在DOS命令下,输入命令:bin\search -c etc\csft_mysql. conf –a coolpad
输入命令后,出现“coolpad”相关帖子数据的信息,测试结果如下图所示,一共搜索到212个“coolpad”主题相关的帖子信息。此结果证明了站内搜索可用。
三、结论
本文给出了一种基于sphinx服务实现酷友社区站内搜索设计与实现方法,通过搭建sphinx服务来实现酷友社区的站内搜索,从而实现快速准确的站内搜索服务。
参 考 文 献
[1]W.Jason Gilmore.PHP与MySQL程序设计(第4版)[M].朱涛江.北京:人民邮电出版社,2011.
[2]Luke Welling,Laura Thomson. PHP和MySQL Web开发[M].武欣.北京:机械工业出版社,2009