linux下安装sphinx

从sphinx网站下载sphinx源码包,当前稳定版本是:http://sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz 

一、安装

      步骤如下:

放在任意目录下,解压sphinx源码包:

$ tar xzvf sphinx-0.9.9.tar.gz
       $ cd sphinx

运行configure配置程序:

$ ./configure [options]

参数配置的时候指定,主要如下:

--prefix , 指定sphinx安装到系统的那个位置; 例如 --prefix=/usr/local/sphinx
        --with-mysql, mysql的安装目录,指定如果自动侦查mysql的相关库文件失败后到哪个目录查找 
         --with-pgsql, 同上,只是用于pgsql的。 
       配置示例:./configure --prefix=/usr/local/sphinx --with-mysql=/usr/local/mysql

其他配置参数:

   --with-mysql=/usr/local/mysql/

--with-mysql-includes=/usr/local/mysql/include/mysql/

 --with-mysql-libs=/usr/local/mysql/lib/mysql/

         --with-mmseg=/usr/local/mmseg/ 
         --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ 
          --with-mmseg-libs=/usr/local/mmseg/lib/


           编译: 
          $ make
          在这个步骤,可能遇到一个问题,就是报 sphinx undefined reference to 'libiconv' 的错误,解决办法是修改 /src/MakeFile(注意   是src下的Makefile不是csft下的Makefile),编辑LIBS = -lm -lexpat 后面添加-liconv,即将该行该为:
          LIBS = -lm -lexpat -liconv -L/usr/local/lib
          安装
   
          $ make install
          如果编译中没有产生错误,这个步骤应该不会遇到问题。如果完成后未正确安装,就要回去找make过程中遇到的错误了。
  二. 配置
           
         1、编写配置文件 
           vim /usr/local/sphinx/etc/csft.cnf
          把其中的数据库信息修改自己mysql服务器信息,同时不要忘了修改相应的表名前缀。
        2、建立sph_counter,在数据库中执行以下语词 
            CREATE TABLE IF NOT EXISTS `sph_counter` (
            `counter_id` int(10) NOT NULL,
           `max_doc_id` int(10) NOT NULL,
            PRIMARY KEY (`counter_id`)
            ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
三、运行sphinx
      1、生成索引文件
       索引文件是检索的根据,如果数据量大的话,第一次运行速度会比较慢
       执行以下命令: 
         /usr/local/sphinx/bin/
indexer --config /usr/local/sphinx/etc/sphinx.conf --all
     2、运行sphinx进程 
        /usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/sphinx.conf
     3、加入crontab计划任务
     这样的目的是每分钟自动更新索引,以保证检索引擎可以获得最新的数据 
     vim /etc/crontab
     加上以下内容: 
     # Incremental Index posts data
     * 0-3 * * * root /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf posts_minute --rotate
     * 6-23 * * * root /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf posts_minute --rotate
     0 4 * * * root /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf posts_merge --rotate && /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf --merge posts posts_merge --rotate
# Incremental Index threads data
* 0-3 * * * root /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf threads_minute --rotate
* 6-23 * * * root /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf threads_minute --rotate
0 4 * * * root /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf threads_merge --rotate && /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf --merge threads threads_merge --rotate#


四、测试搜索

通过Sphinx自带的search(在bin/目录)就可以在命令行进行搜索: 
cd /usr/local/sphinx
./bin/search -c sphinx.conf test

运行后,系统提示一堆信息:
....
....
words:
1. 'test': 36 documents, 123 hits
这个表示库中有36条记录符合要求,出现test的有123处。

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

一是通过Sphinx官方提供的API接口(有Python,Java,Php三种版本)
二是通过安装SphinxSE,然后创建一个中介sphinxSE类型的表,再通过执行特定的SQL语句实现。
通过官方API调用Sphinx(以PHP为例)在sphinx安装目录有一个API目录,里面有三个PHP文件:test.php,test2.php和sphinxapi.php。sphinxapi.php是sphinx调用接口封装文件,test.php是一个在命令行下执行的查询例子文件,test2.php是一个生成摘要的例子文件。
在命令下行运行test.php(Linux上没有API目录,需要从源程序包中复制api目录至/usr/local/sphinx)

Linux上(假设php在/usr/local/php目录,sphinx.conf在/usr/local/sphinx目录):
cd /usr/local/sphinx
/usr/local/php/bin/php api/test.php -i cgfinal test
Sphinx的API查询接口主要有这些内容(其实对照 一下sphinxapi.php就清楚了):
PHP: 
//创建Sphinx的客户端接口对象
$cl = new SphinxClient ();
 
//设置连接Sphinx主机名与端口
$cl->SetServer('localhost',3312);
 
//可选,为每一个全文检索字段设置权重,主要根据你在sql_query中定义的字段的顺序,Sphinx系统以后会调整,可以按字段名称来设定权重
$cl->SetWeights ( 
array ( 100, 1 ) ); 
//设定搜索模式,SPH_MATCH_ALL,SPH_MATCH_ANY,SPH_MATCH_BOOLEAN,SPH_MATCH_EXTENDED,SPH_MATCH_PHRASE
$cl->SetMatchMode(SPH_MATCH_ALL); 
//设定过滤条件$attribute是属性名,相当于字段名(用SPH_MATCH_EXTENDED时),$value是值,$exclude是布尔型,
当为true时,相当于$attribute!=$value,默认值是false

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值