搜索引擎php系统程序,php搜索引擎
搜索引擎是个庞大的东西,我们只讨论小规模应用。今天给大家介绍是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 并且加上下面一段
01
#源定义
02
source xml
03
{
04
type = xmlpipe2
05
xmlpipe_command = /usr/bin/php /home/ylx/tmp/maketest.php #此处也可使用其他可执行程序输出xml数据 这里我就是用php生成的
06
07
}
08
09
#index定义
10
index xml
11
{
12
source = xml #对应的source名称
13
path = /tmp/sphinx/ #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
14
docinfo = extern
15
mlock = 0
16
morphology = none
17
min_word_len = 1
18
html_strip = 0
19
20
#中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/
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
24
}
主要是修改xmlpipe_command 和 path两个值
2、新建maketest.php写入内容
01
02
//模拟查询数据库得到的数据
03
$list =array(
04
array(1,'百度阿斯顿林疯狂'),
05
array(2,'垃圾拉克丝京东方看见阿斯顿好'),
06
array(3,'阿斯蒂芬离开家老看见阿斯顿离开家需,吗'),
07
array(4,'休息休息离开家'),
08
);
09
set_time_limit(0);
10
ini_set('memory_limit','128M');
11
12
echo '<?xml version="1.0" encoding="utf-8"?>
13
14
15
16
17
18
19
';
20
foreach($list as $l){
21
echo '
22
23
'.$l[1].'24
'.$l[0].'
25
26
';
27
}
28
echo '';
3、然后运行/usr/local/coreseek/bin/indexer xml 生成索引
4、启动守护进程 /usr/local/coreseek/bin/searchd
5、最后新建文件searchtest.php输入
01
02
include_once("/home/ylx/tmp/coreseek-4.1-beta/testpack/api/sphinxapi.php");//修改成你的路径
03
04
$s =new SphinxClient;
05
$s->setServer("localhost", 9312);
06
$s->setMatchMode(SPH_MATCH_ALL);
07
$s->SetArrayResult ( true );
08
$result =$s->query("吗","xml");
09
10
var_dump($result['matches']);//匹配到的结果
11
var_dump($result);
看上去有点复杂,今天也只是简单的介绍了下,需要的时候可以详细去了解下