coreseek 是在Sphinx 基础上开发的全文检索软件, 具 体介绍详见文尾 附 录
=========================================================
一、 安装环境及介绍
1. 前提环境
系 统环境:centos5
操 作用户:root
文 中粗体字为需用户输入的命令内容
2. 源码包准备
下 载MMSEG 分词源码包
wget http://www.coreseek.cn/uploads/sources/mmseg3_0b3.tar.gz
下 载coreseek 源码包
wget http://www.coreseek.cn/uploads/sources/csft3_0b4.tar.gz
解 压缩源码包
tar -xzvf mmseg3_0b3.tar.gz
tar -xzvf csft3_0b4.tar.gz
3. 安装环境准备
安 装g++ 编译环境
yum install g++
yum install gcc
yum install make
安 装python 开发组件
yum install python
yum install python-dev
安 装make
yum install make
4. 编译mmseg
cd mmseg.3.0b3/
./configure --prefix=/ var / eyou /mmseg
make
make install
5. 编译coreseek
cd csft3_0b4/
./configure --prefix=/ var / eyou /coreseek --with-python --with-mysql --with-mmseg-includes=/ var / eyou /mmseg/include/mmseg --with-mmseg-libs=/ var / eyou /mmseg/lib/
make & make install
此步安装完成后, 将在/ var / eyou / 下生成 coreseek 目录
coreseek 目录中有三个目录分别为bin 、 etc 、var
bin 中 存有sphinx 用到的一些执行文件 包括 indexer 索引建立 search 查询工具 searchd 查询服务器 等
etc 中是配置文 件,该目录中 有一个sphinx.conf. disk ,这个相当于sphinx 的 配置例子文件,我们以这个文件为蓝本,重新创建一个空白内容的sphinx.conf ,存放在 etc 下 。
6. 创建dict 目录
创建字典目录:
mkdir /var/eyou/coreseek/dict/
产生字典步骤:
cd /root/soft/ mmseg.3.0b3/data
/var/eyou/mmseg/bin/mmseg -u unigram.txt
产生了unigram.txt.uni , 移到相应目录。
cp unigram.txt.uni /var/eyou/coreseek/dict/uni.lib
创建 / var / eyou /coreseek/dict/mmseg.ini
内容:
[mmseg]
merge_number_and_ascii=1;
number_and_ascii_joint=-;
compress_space=0;
seperate_number_ascii=1;
#merge_number_and_ascii: 字母和数字连续出现是非切分
#number_and_ascii_joint: 连接数字和字母可用的符号,如'-' '.' 等
#compress_space :暂时无效
#seperate_number_ascii :是否拆分数字,如 1988 -> 1/x 9/x 8/x 8/x
7. php 调用 sphinx api
通过官方API 调用Sphinx ,具体为:
在 coreseek 安装目录有一个API 目录,里面有三个PHP 文 件:test.php ,test2.php 和sphinxapi.php 。 sphinxapi.php 是sphinx 调用接口封装文件(这个文件就是官方提供的php 调 用API ),test.php 是一个在命令行下执行的查询例子文件,test2.php 是 一个生成摘要的 例子文件。
8. 配置 sphinx.conf
具体参见sphinx.conf 的 注释说明
9. 启动服务
建 立索引
/var/eyou/coreseek/bin/indexer --config /var/eyou/coreseek/etc/sphinx.conf
启 动 searchd 服务
/var/eyou/coreseek/bin/searchd --config /var/eyou/coreseek/etc/sphinx.conf
二、 附录 :全文检索----coreseek
1. 全文搜索与数据库搜索的区别
o 专为全文搜索优化,效率更高
由于典型的数据库系统要考虑用户的“增删改查”等多种复杂操作,因此其存取数据的方式需要考察综合考虑各种应用;而全文搜索的数据存取方式 只考虑快速读取,相比数据库的查询,要快10 倍或更多。(即使启用了数据库内置的全文搜索功能,这个结论仍成立)。
o 支持复杂的查询表达式
数据库系统的查询,往往只支持“AND ” 或 "OR" 等有限的模式,而全文检 索不但支持"AND" 、“OR ” 查询,还支持“NOT ”、“近似”、 “整句”等多种查询方式;同时相比数据库系统,进行在一定范围内查询时也更高效
o 支持按相关度排序
数据库查询出的结果,往往按照数据库内置的排序规则进行排序,往往只能按时间、按点击等有效的排序规则进行;全文搜索除了能够支持数据库的 排序规则外,还支持按照结果的相关度排序,这往往会给访问者带来更大的便利。
o 支持中文分词
数据库提供的全文搜索功能往往不支持中文分词(或仅提供二元切分),导致某些短语检索不到或出现大量不相干的数据;中文全文检索系统支持中 文分词,进一步过滤了不相干的数据。
2. 自建全文搜索与使用Google 等第三方网站提供的站内全文搜索的区别
o 对网站设备有要求
自建全文搜索往往需要站长有至少一台独立主机,而使用第三方提供的全文搜索对站点的要求低,虚拟主机即可;不过,出现全文搜索需求的站点通 常已经有自己的独立主机了。
o 索引更新更及时
由于搜索服务在第三方托管,其往往只能按照一定的规则定期更新索引库(往往是几小时、甚至几天才更新一次索引),您网站上的新出现的内容往 往不能及时被搜索到;
使用自建全文搜索,可以保证您网站上新出现的内容可以”立即“被检索到。
o 更适应您的网站
由于中文需要进行分词的特性,导致没有一套通用的词库可以适用于全部网站,要得到优秀的检索结果需要定制一套适用于您网站的词库;
采用第三方的搜索服务,您是无法修改第三方厂商的词库的,而使用自建全文搜索则无此问题。
o 更有利于您网站的数据整合
有些网站不止是论坛,往往还包括内容管理(CMS) 、商城等多种应用,而使用数据库搜索往往需要用户在各个系统 中都进行搜索才能找到内容;
第三方的检索无法区别各个系统的不同。而自建的全文搜索可以有效的区分各个数据来源的不同数据,真正做到一次搜索应有尽有,从而改善您网站 的访问体验,增加您网站的点击率。
o 避免您的访问者遇到某些尴尬
第三方的搜索结果页面不是您可以控制修改的,有推荐一些可能会使您网站访问者尴尬的搜索短语的可能。而使用自建全文搜索则完全无此问题。