php使用coreseek进行中文分词搜索

时间:2021-01-28 21:34:04

方法一

使用coreseek源码自带testpack/api/test_coreseek.php代码,
进行稍微修改就可以使用了,只不过需要引入”spinxapi.php“类

方法二--制作php扩展

1.安装sphinx扩展

 下载依赖 http://pecl.php.net/package/sphinx
解压并执行以下代码:
/usr/local/php7/bin/phpize
./configure --prefix=/usr/local/libsphinxclient
make && make install

2.安装sphinx扩展(这里需要根据php版本进行分别安装)

php5版本

 wget http://pecl.php.net/get/sphinx-1.3.3.tgz
tar zxvf sphinx-1.3..tgz
cd sphinx-1.3.
./configure
--with-php-config=/usr/local/php/bin/php-config
--with-sphinx=/usr/local/libsphinxclient
上面有可能会报错:
php_sphinx_client_handlers.read_property = php_sphinx_client_read_property; ^
make: *** [sphinx.lo] Error
这个报错,修改 sphinx.c 第105行为:
retval = std_hnd->read_property(object, member, type TSRMLS_CC, NULL);
然后编译即可通过

php7版本

 下载地址:
http://git.php.net/?p=pecl/search_engine/sphinx.git;a=snapshot;h=339e123acb0ce7beb2d9d4f9094d6f8bcf15fb54;sf=tgz ---可能下载下来为index.html文件,那就下载到本地然后rz上去。 接下来接着安装: 这里现在的版本为:sphinx-339e123.tar.gz
tar -zxf sphinx-339e123.tar.gz
cd sphinx-339e123
./configure
--prefix=/usr/local/sphinxextend
--with-php-config=/usr/local/php-fpm/bin/php-config
--with-sphinx=/usr/local/libsphinxclient/ make && make install

以上两个版本的步骤执行完成后,找到php.ini,在里面添加extension=spninx.so

然后使用php-m 或者看下phpinfo();
能看到sphinx即可。

注:执行php脚本之前要先启动sphinx服务,在shpinx安装目录的bin目录下执行./searchd 启动sphinx服务

例子:

 $cl = new SphinxClient ();
$cl->SetServer ( '127.0.0.1', 9312);
$cl->SetConnectTimeout ( 3 );
$cl->SetArrayResult ( true );
$cl->SetMatchMode ( SPH_MATCH_ANY);
$res = $cl->Query ( '祖国', "*" ); $ids = '';
foreach ($res['matches'] as $key => $val) {
$ids .= $val['id'].',';
}
$ids = rtrim($ids,','); $conn = mysqli_connect("localhost","root","root","post");
mysqli_query($conn,"set names utf8");
$sql = "select * from post_article where id in($ids)";
$res = mysqli_query($conn,$sql);
$list = array();
while($row = mysqli_fetch_assoc($res)){ $list[] = $row; } mysqli_free_result($res); mysqli_close($conn); foreach($list as $v){ echo $v['title'].'<br/>'.$v['content'].'<hr>'; }