Sphinx配置过程及使用

分类:Sphinx | 作者:凹凸曼 | 发表于2011/03/09 2条评论

Linux(CentOS为案例)下怎样安装sphinx, 怎样建立索引,并且是自动的建立所需要的,怎样通过php调用sphinx,并查询!

一系列问题等着起的!

接下来就开始吧!

一、安装

 #确保又mysql库 没有的话预编译的时候会报错的,那就要先安mysql库,不过我这里就不讲了!

查看–如何在没安装MySQL的服务器上安装Sphinx(远程连接)?

官网:http://sphinxsearch.com/

wget  http://sphinxsearch.com/files/sphinx-1.10-beta.tar.gz

tar   zxvf     sphinx-1.10-beta.tar.gz

cd   sphinx-1.10-beta

./configure  –prefix=/usr/local/sphinx –with-mysql=/usr/local/mysql  

make &&make install

二、修改配置文件

vi /usr/local/sphinx/etc/sphinx.conf

连接数据库的用户名和密码

sql_host=              数据库主机地址(如果是外网,请确保防火墙允许链接)

 sql_user        = root

 sql_pass        = ***** #你自己的密码

sql_db=                 数据库名称

sql_port=               数据库端口

searchd配置说明

port=                     sphinx的端口(9312 与 searchd.exe监听结果一致)

索引路径

path      = /log/sphinx/test1

在sphinx目录下有一个example.sql

在mysql中,新建一个数据库test,然后把example.sql导入进去

三、建立索引

/usr/local/sphinx/bin/indexer –config /usr/local/sphinx/etc/sphinx.conf test1

indexing index ‘test1’…
collected 4 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 4 docs, 193 bytes
total 0.245 sec, 788.77 bytes/sec, 16.35 docs/sec

四、启动sphinx

/usr/local/sphinx/bin/indexer –config /usr/local/sphinx/etc/sphinx.conf

五、查询测试

 /usr/local/sphinx/bin/search -c /usr/local/sphinx/etc/sphinx.conf another

index ‘test1’: query ‘another ‘: returned 1 matches of 1 total in 0.000 sec

displaying matches:
1. document=3, weight=2, group_id=2, date_added=Sat Aug  8 23:34:22 2009
        id=3
        group_id=2
        group_id2=7
        date_added=2009-08-08 23:34:22
        title=another doc
        content=this is another group

words:
1. ‘another’: 1 documents, 2 hits

六、调用

应用程序如果想调用Sphinx,可以从两个方面:

A:是通过Sphinx官方提供的API接口(接口有Python,Java,Php三种版本)

B:是通过安装SphinxSE,然后创建一个中介sphinxSE类型的表,再通过执

       采用sphinxSE必须要求为mySQL安装sphinxSE Engine驱动行特定的SQL语句实现

C:使用libsphinxclient+php的sphinx扩展 代替 sphinxapi (等同于第一种方案)

目前我采用的A方案(php)

http://sphinxsearch.com/files/sphinx-1.10-beta.tar.gz 的解压目录有一个API目录,里面有三个PHP文件:test.php,test2.php和

sphinxapi.php。sphinxapi.php是sphinx调用接口封装文件

在安装了php ,nginx或者apache环境下可以运行一下,test.php及test2.php,就明白了

C方案需要libsphinxclient.so及下面的php 的扩展 sphinx

重要提示:安装php 的扩展 sphinx前必须正确安装好 libsphinxclient.so

libsphinxclient.so的安装包    http://sphinxsearch.com/files/sphinx-1.10-beta.tar.gz 的api文件下

下面是 php 的扩展 sphinx

Sphinx API 官网:http://pecl.php.net/package/sphinx

下载地址 :http://pecl.php.net/get/sphinx-1.1.0.tgz

Sphinx客户端说明:http://cn.php.net/sphinx

本文出自 “凹凸曼” 博客,请务必保留此出处http://www.apoyl.com/?p=290

参考文章:http://blog.sina.com.cn/s/blog_5aefd9770100ag35.html

                    http://zhengdl126.javaeye.com/blog/423592

日志信息 »

该日志于2011-03-09 09:49由 凹凸曼 发表在Sphinx分类下, 评论已关闭。

目前盖楼
  1. 凹凸曼说道:

    问题解决了,接着安装 php 的扩展 sphinx

    wget http://pecl.php.net/get/sphinx-1.1.0.tgz

    tar zxvf sphinx-1.1.0.tgz

    cd sphinx-1.1.0

    ./configure –with-php-config=/usr/local/php/bin/php-config

    make

    make install

    cp /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/sphinx.so /usr/lib/php/modules/

    vi /usr/local/php/etc/php.ini

    extension=sphinx.so (开启)

    搞定
    重启服务
    查一下,phpinfo()的信息里,有没有这行 ”sphinx support enabled “

    有的话,就恭喜你了!娃哈哈!

    接下来运行测试文件,你明白咋子处理散!嘿嘿

  2. 凹凸曼说道:

    C方案 使用libsphinxclient+php的sphinx扩展 代替 sphinxapi

    试了一下:

    [root@localhost libsphinxclient]# ./configure –with-sphinx =/usr/local/sphinx/

    在编译libsphinxclient的时候报错误

    [root@localhost libsphinxclient]# make
    make all-am
    make[1]: Entering directory `/usr/local/src/sphinx-1.10-beta/api/libsphinxclient’
    /bin/sh ./libtool –mode=compile –tag=CC gcc -DHAVE_CONFIG_H -I. -I. -I. -g -O2 -c -o

    sphinxclient.lo sphinxclient.c
    gcc -DHAVE_CONFIG_H -I. -I. -I. -g -O2 -c sphinxclient.c -fPIC -DPIC -o .libs/sphinxclient.o
    sphinxclient.c: In function ‘net_connect_get’:
    sphinxclient.c:1358: error: ‘SO_NOSIGPIPE’ undeclared (first use in this function)
    sphinxclient.c:1358: error: (Each undeclared identifier is reported only once
    sphinxclient.c:1358: error: for each function it appears in.)
    make[1]: *** [sphinxclient.lo] 错误 1
    make[1]: Leaving directory `/usr/local/src/sphinx-1.10-beta/api/libsphinxclient’
    make: *** [all] 错e.
    怎样解决呢?
    解决办法:Sphinx 编译的问题及解决办法(sphinxclient.c:1358: error: ‘SO_NOSIGPIPE’ undeclared) 地址:http://www.apoyl.com/?p=300

抱歉,评论被关闭

« »