现在的位置: 首页 > 综合 > 正文

sphinx全文索引教程 .

2012年12月26日 ⁄ 综合 ⁄ 共 3110字 ⁄ 字号 评论关闭

一、首先需要在服务器上安装sphinx

在Windows上安装sphinx

    1.下载支持mysql的包  http://www.sphinxsearch.com/downloads/sphinx-0.9.9-win32.zip

    2.解压缩 sphinx-0.9.9-win32.zip 到 D:\sphinx

    3.安装sphinx服务,在命令行执行命令

 

D:\sphinx\searchd --install --config
d
:\sphinx\sphinx.conf --servicename SphinxSearch



    英文参照:http://www.sphinxsearch.com/docs ... #installing-windows


在Linux服务器上安装sphinx

   1.下载源码包 http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz

 

$ tar xzvf sphinx-0.9.8.tar.gz

                $ cd sphinx

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

                $ make

                $ make install

 常见问题1

 



                
/usr/local/sphinx-0.9.9/src/sphinx.cpp:20060: undefined reference
to 
`libiconv_open'

                /usr/local/sphinx-0.9.9/src/sphinx.cpp:20078: undefined reference to `
libiconv'

                /usr/local/sphinx-0.9.9/src/sphinx.cpp:20084: undefined reference to `libiconv_close'


                collect2
: ld
returned 
1 exit status

                make
[2]: *** [indexer] Error 1

                make
[2]: Leaving directory `/home/jling/sphinx-0.9.9/src'

                make[1]: *** [all] Error 2

                make[1]: Leaving directory `
/home/jling/sphinx-0.9.9/src'

                make: *** [all-recursive] Error 1

解决办法:打开configure文件,找到“#define USE_LIBICONV 1”,将注释去掉,并将1改成0。



常见问题2

 



                error 
while loading
shared libraries
: libmysqlclient.so.16: cannot
open shared 
object file: No such
file 
or directory



解决办法:

 



                
64位系统ln -/usr/local/webserver/mysql/lib/mysql/libmysqlclient.so.16.0.0 /usr/lib64/libmysqlclient.so.16

                
32位系统ln -/usr/local/webserver/mysql/lib/mysql/libmysqlclient.so.16.0.0 /usr/lib/libmysqlclient.so.16

 

sphinx.conf样例  

 

source main

                
{

                 type     
= mysql
   
#数据库类型

                 sql_host    
= 10.228.134.211 #数据库ip

                 sql_user    
= admin
   
#数据库用户名

                 sql_pass    
= admin
   
#数据库密码

                 sql_db     
= phpcms_v9
  
#数据库名

                 sql_port    
= 3306  
 
# 数据库端口

  sql_query_pre = SET NAMES utf8

                 sql_query_pre 
= REPLACE
INTO v9_sphinx_counter SELECT 
1, MAX(searchid) FROM
v9_search

                 sql_query 
= SELECT
searchid
, adddate, siteid, typeid, id, data
FROM v9_search 
\

                    WHERE searchid
>=$start
AND searchid
<=$end

                 sql_query_range  
= SELECT 1,max_doc_id
FROM v9_sphinx_counter WHERE counter_id
=1

                 sql_range_step 
= 5000

  #字符串属性设置、需要过滤、排序的时候用到

                 sql_attr_uint  
= typeid

                 sql_attr_uint  
= siteid

                 sql_attr_uint  
= id

                 sql_attr_timestamp  
= adddate

                 sql_query_info  
= SELECT * FROM
v9_search WHERE searchid
=$id

                
}

 source delta

                
{

                 type     
= mysql
   
#数据库类型

                 sql_host    
= 10.228.134.211 #数据库ip

                 sql_user    
= admin
   
#数据库用户名

                 sql_pass    
= admin
   
#数据库密码

                 sql_db     
= phpcms_v9
  
#数据库名

                 sql_port    
= 3306  
 
# 数据库端口

     sql_query_pre = SET NAMES utf8

                    sql_query 
= SELECT
searchid
, adddate, siteid, typeid, id, data
FROM v9_search 
\

                  WHERE searchid 
>( SELECT
max_doc_id FROM v9_sphinx_counter WHERE counter_id
=1 )

                 sql_query_post 
= REPLACE
INTO v9_sphinx_counter SELECT 
1, MAX(searchid) FROM
v9_search

                 
#字符串属性设置、需要过滤、排序的时候用到

                 sql_attr_uint  
= typeid

                 sql_attr_uint  
= siteid

                 sql_attr_uint  
= id

                 sql_attr_timestamp  
= adddate

                 sql_query_info  
= SELECT * FROM
v9_search WHERE searchid
=$id

                

抱歉!评论已关闭.