php搜索引擎

来源:互联网 发布:红旗linux为什么解散了 编辑:程序博客网 时间:2024/05/18 17:00

搜索引擎是个庞大的东西,我们只讨论小规模应用。今天给大家介绍是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-devel5、安装mmsega、cd mmseg-3.2.14b、./bootstrap    #输出的warning信息可以忽略,如果出现error则需要解决c、./configure --prefix=/usr/local/mmseg3d、make & make installe、cd ..6、安装coreseeka、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 installe、 cd ..7、测试
a、 cd testpackb、 cat var/test/test.xml    #此时应该正确显示中文c、 /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xmld、 /usr/local/coreseek/bin/indexer -c etc/csft.conf --alle、 /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#源定义
02source xml
03{
04    type                    = xmlpipe2
05    xmlpipe_command = /usr/bin/php /home/ylx/tmp/maketest.php #此处也可使用其他可执行程序输出xml数据 这里我就是用php生成的
06 
07}
08 
09#index定义
10index 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              );
09set_time_limit(0);
10ini_set('memory_limit','128M');
11 
12echo '<?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';
20foreach($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}
28echo '</sphinx:docset>';

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

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

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

01<?php
02include_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 
10var_dump($result['matches']);//匹配到的结果
11var_dump($result);

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

0 0
原创粉丝点击