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 <?php
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 <sphinx:docset>
14  
15 <sphinx:schema>
16 <sphinx:field name="title"/>
17 <sphinx:attr name="id" type="int" bits="16" default="1"/>
18 </sphinx:schema>
19 ';
20 foreach($list as $l){
21   echo '
22 <sphinx:document id="'.$l[0].'">
23 <title>'.$l[1].'</title>
24 <id>'.$l[0].'</id>
25 </sphinx:document>
26 ';
27 }
28 echo '</sphinx:docset>';

3、然后运行/usr/local/coreseek/bin/indexer xml 生成索引

4、启动守护进程  /usr/local/coreseek/bin/searchd

5、最后新建文件searchtest.php输入

01 <?php
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);

看上去有点复杂,今天也只是简单的介绍了下,需要的时候可以详细去了解下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值