搜索引擎是个庞大的东西,我们只讨论小规模应用。今天给大家介绍是Sphinx
自带中文分词的sphinx http://www.coreseek.cn
官方安装步奏及参考手册 http://www.coreseek.cn/products-install/#doc_cn
本文在centos 6.3上安装调试
一、安装
1、wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz
2、tar xzvf coreseek-4.1-beta.tar.gz
3、cd coreseek-4.1-beta
4、提前安装操作系统基础开发库及mysql依赖库以支持mysql数据源和xml数据源
yum install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel
5、安装mmseg
a、cd mmseg-3.2.14
b、./bootstrap #输出的warning信息可以忽略,如果出现error则需要解决
c、./configure --prefix=/usr/local/mmseg3
d、make & make install
e、cd ..
6、安装coreseek
a、cd csft-4.1
b、sh buildconf.sh #输出的warning信息可以忽略,如果出现error则需要解决
c、 ./configure --prefix=/usr/local/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql
d、 make && make install
e、 cd ..
7、测试
a、 cd testpack
b、 cat var/test/test.xml #此时应该正确显示中文
c、 /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml
d、 /usr/local/coreseek/bin/indexer -c etc/csft.conf --all
e、 /usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索
二、在php中使用
1、建立数据源,文档中已经有很多方法,我这里测试一种xmlpipe2的数据源
cd /usr/local/coreseek/etc
cp /home/ylx/tmp/coreseek-4.1-beta/testpack/etc/csft.conf csft.conf 并且加上下面一段
05 |
xmlpipe_command
= /usr/bin/php /home/ylx/tmp/maketest.php #此处也可使用其他可执行程序输出xml数据 这里我就是用php生成的 |
12 |
source
= xml #对应的source名称 |
13 |
path
= /tmp/sphinx/ #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/ var /... |
21 |
charset_dictpath
= /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾 |
22 |
#charset_dictpath
= etc/ #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/... |
23 |
charset_type
= zh_cn.utf-8 |
主要是修改xmlpipe_command 和 path两个值
2、新建maketest.php写入内容
05 |
array (2, '垃圾拉克丝京东方看见阿斯顿好' ), |
06 |
array (3, '阿斯蒂芬离开家老看见阿斯顿离开家需,吗' ), |
10 |
ini_set ( 'memory_limit' , '128M' ); |
12 |
echo '<?xml
version= "1.0" encoding= "utf-8" ?> |
16 |
<sphinx:field
name= "title" /> |
17 |
<sphinx:attr
name= "id" type= "int" bits= "16" default = "1" /> |
22 |
<sphinx:document
id= "'.$l[0].'" > |
23 |
<title> '.$l[1].' </title> |
28 |
echo '</sphinx:docset>' ; |
3、然后运行/usr/local/coreseek/bin/indexer xml 生成索引
4、启动守护进程 /usr/local/coreseek/bin/searchd
5、最后新建文件searchtest.php输入
02 |
include_once ( "/home/ylx/tmp/coreseek-4.1-beta/testpack/api/sphinxapi.php" ); |
04 |
$s = new SphinxClient; |
05 |
$s ->setServer( "localhost" ,
9312); |
06 |
$s ->setMatchMode(SPH_MATCH_ALL); |
07 |
$s ->SetArrayResult
( true ); |
08 |
$result = $s ->query( "吗" , "xml" ); |
10 |
var_dump( $result [ 'matches' ]); |
看上去有点复杂,今天也只是简单的介绍了下,需要的时候可以详细去了解下