【整理】Linux下中文檢索引擎coreseek4安裝,以及PHP使用sphinx的三種方式(sphinxapi,sphinx的php擴展,SphinxSe做爲mysql存儲引擎)

一,軟件準備
  1. coreseek4.1 (包含coreseek測試版和mmseg最新版本,以及測試數據包【內置中文分詞與搜索、單字切分、mysql數據源、python數據源、RT實時索引等測試配置】) 
  2. Mysql源碼包必須選擇與你已安裝mysql的版本一致

  爲了不安裝中出現依賴包缺失,你須要打一句雞血:php

yum install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel
#或
apt-get install make gcc g++ automake libtool mysql-client libmysqlclient15-dev libxml2-dev libexpat1-dev
#更多系統配置請點此傳送查看

 

二,coreseek快速安裝

1,安裝mmseg3

##前提:需提早安裝操做系統基礎開發庫及mysql依賴庫以支持mysql數據源和xml數據源
##安裝mmseg
$ cd mmseg-3.2.14
$ ./bootstrap    #輸出的warning信息能夠忽略,若是出現error則須要解決
$ ./configure --prefix=/usr/local/mmseg3 
$ make && make install
$ cd ..

【注意】若是編譯mmseg提示cannot find input file: src/Makefile.in失敗,能夠嘗試下面解決方法:html

#下面命令提示沒有安裝,則先安裝
aclocal
libtoolize --force 運行後有一個錯誤,不用管它。
automake --add-missing
autoconf
autoheader
make clean
./configure --prefix=/usr/local/mmseg3

 

 2,安裝coreseek

##安裝coreseek
$ cd csft-4.1
$ sh buildconf.sh    #輸出的warning信息能夠忽略,若是出現error則須要解決
$ ./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    ##若是提示mysql問題,能夠查看MySQL數據源安裝說明

#不想麻煩,能夠直接使用下面這句
$ ./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-includes=《mysql安裝目錄》/include --with-mysql-libs=《mysql安裝目錄》/lib
$ make && make install
$ cd ..

【注意】若是出現Sphinx/Coreseek 4.1 執行 buildconf.sh 報錯,沒法生成configure文件的問題,點此傳送解決。值得一提的是vi‘替換全部’小技巧:末行模式下輸入「:1,$s/T val = ExprEval ( this->m_pArg, tMatch )/T val = this->ExprEval ( this->m_pArg, tMatch )/g」從第一行開始替換到最後一行python

 

3,測試mmseg分詞,coreseek搜索

##測試mmseg分詞,coreseek搜索(須要預先設置好字符集爲zh_CN.UTF-8,確保正確顯示中文)
$ cd testpack
$ cat var/test/test.xml    #此時應該正確顯示中文
$ /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml
$ /usr/local/coreseek/bin/indexer -c etc/csft.conf --all
$ /usr/local/coreseek/bin/search -c etc/csft.conf 網絡搜索

【注意】 mysql

  1,若是輸入/usr/local/coreseek/bin/indexer -c etc/csft.conf --all 時報/usr/local/coreseek/bin/indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory 錯誤,能夠經過vi編輯 /etc/ld.so.conf文件來修復這個錯,將 /usr/local/mysql/lib  加到文件到尾部,並保存文件,而後運行ldconfig命令便可。linux

  2,若是輸入/usr/local/coreseek/bin/indexer -c etc/csft.conf --all,報xmlpipe2 support NOT compiled in. To use xmlpipe2, install missing錯誤,則apt-get install expat-* 或yum install expat-devel*安裝後從新編輯安裝coreseek。c++

 

三,Sphinx配置mysql數據源:

  1,首先,要搞清楚coreseek的bin目錄下的 三個主要文件是幹嗎的:

  1./usr/local/coreseek/bin/indexer indexer文件,用於創建/更新/合併數據源的索引
   /usr/local/coreseek/bin/indexer -c etc/csft_mysql.conf --all 爲csft_mysql.conf配置文件中配置的全部數據源創建索引
  2./usr/local/coreseek/bin/search search文件,用於測試數據源的搜索

   /usr/local/coreseek/bin/search -c etc/csft_mysql.conf 網絡搜索 測試csft_mysql.conf配置文件中配置的數據源是否有「網絡搜索」這個內容
  3./usr/local/coreseek/bin/searchd searchd文件,負責接受查詢、處理查詢和返回數據集的服務

   /usr/local/coreseek/bin/searchd -c etc/csft_mysql.conf 經過csft_mysql.conf的searchd配置開啓負責接受查詢、處理查詢和返回數據集的服務
   

  2,再者,搞清楚咱們要爲mysql中的某個數據庫中哪(幾)個表創建索引。

  下面以一個案例做爲例子講解:
  一個在線聊天項目,使用了數據庫test_qq,以say做爲存儲聊天內容表,此項目有一個「查找聊天記錄」的功能,此表內容基本會達到海量的,所以爲了提升查找速度,爲表say創建索引(sphinx的數據源),表say有以下結構:
mysql> use test_qq;
Database changed
mysql> desc say;
+---------+------------------+------+-----+---------+----------------+
| Field   | Type             | Null | Key | Default | Extra          |
+---------+------------------+------+-----+---------+----------------+
| id      | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| fromid  | int(10) unsigned | NO   |     | 0       |                |
| toid    | int(10) unsigned | NO   |     | 0       |                |
| content | text             | NO   |     | NULL    |                |
+---------+------------------+------+-----+---------+----------------+

要配置mysql數據源,咱們將coreseek安裝包/testpack/etc 下的csft_mysql.conf文件複製到coreseek 的etc目錄中:
cp /coreseek安裝包位置/testpack/etc/csft_mysql.conf /usr/local/coreseek/etc/
修改csft_mysql.conf

 1 #源定義
 2 source mysql #源名,自定義
 3 {
 4     type                    = mysql ## 說明數據源的類型。數據源的類型能夠是:mysql,pgsql,mssql,xmlpipe,odbc,python
 5     sql_host                = localhost
 6     sql_user                = root
 7     sql_pass                = 123
 8     sql_db                  = test_qq
 9     sql_port                = 3306
10     sql_query_pre           = SET NAMES utf8
11     sql_query               = SELECT id,fromid,toid,content FROM say
12     sql_attr_uint           = id      #從SQL讀取到的值必須爲整數(unsigned)
13     sql_attr_timestamp      = date_added #從SQL讀取到的值必須爲整數,做爲時間戳屬性,常常被用於作排序
14 
15     sql_query_info_pre      = SET NAMES utf8   #命令行查詢時,設置正確的字符集
16     sql_query_info          = SELECT * FROM say WHERE id=$id #命令行查詢時,從數據庫讀取原始數據信息
17 }
18 
19 #index定義
20 index mysql #索引名,自定義
21 {
22     source            = mysql  #對應的source源名稱
23     path            = /usr/local/coreseek/var/data/mysql #索引文件所在位置,文件名通常是索引名,請修改成實際使用的絕對路徑
24     docinfo            = extern
25     mlock            = 0
26     morphology        = none
27     min_word_len        = 1
28     html_strip                = 0
29     ngram_len = 0
30     charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux環境下設置
31     charset_type        = zh_cn.utf-8
32 }
33 
34 #searchd服務定義
35 searchd
36 {
37     listen                  =   9312
38     read_timeout        = 5
39     max_children        = 30
40     max_matches            = 1000
41     seamless_rotate        = 0
42     preopen_indexes        = 0
43     unlink_old            = 1
44     pid_file =/usr/local/coreseek/var/log/searchd_mysql.pid  #請修改成實際使用的絕對路徑,例如:/usr/local/coreseek/var/...
45     log = /usr/local/coreseek/var/log/searchd_mysql.log        #請修改成實際使用的絕對路徑,例如:/usr/local/coreseek/var/...
46     query_log = /usr/local/coreseek/var/log/query_mysql.log #請修改成實際使用的絕對路徑,例如:/usr/local/coreseek/var/...
47     binlog_path =                                #關閉binlog日誌
48     compat_sphinxql_magics = 0
49 }
View Code


修改後,先開啓searchd後臺服務
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft_mysql.conf

再執行總體索引
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf --all

此時即可以使用search 來測試搜索
/usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/csft_mysql.conf 你好

得出搜索結果,即爲配置成功

可是問題來了,indexer索引是一次性的,若是是10:00am執行索引,search就只能搜索到10:00am之前的內容,那若是更多的人在10:00am後發消息,say表中多出的聊天內容行就沒法被索引到,search測試也就沒法搜索到多出的內容,咱們就考慮到增量索引。

•配置增量索引:

  1.在mysql中建立索引記錄偏移表sph_say_counter,當執行一次索引後,sph_say_counter表更新該次索引最大id,等下次執行索引時,便從該記錄的最大id開始執行索引,執行後再將該次索引最大id記錄到sph_say_counter中。如此重複。

    sph_say_counter表結構:sql

mysql> desc sph_say_counter;
+------------+---------------------+------+-----+---------+----------------+
| Field      | Type                | Null | Key | Default | Extra          |
+------------+---------------------+------+-----+---------+----------------+
| id         | tinyint(3) unsigned | NO   | PRI | NULL    | auto_increment |
| max_offset | int(10) unsigned    | NO   |     | 0       |                |
+------------+---------------------+------+-----+---------+----------------+

  2. 在csft_mysql.conf增長增量索引配置shell

#增長如下配置
source delta : mysql #此寫法爲delta繼承mysql源中的全部配置,若是子配置中有相同配置,則覆蓋父配置
{
        sql_query       =       SELECT id,fromid,toid,content FROM say WHERE id > (SELECT max_offset FROM sph_say_counter WHERE id = 1) #從記錄大於max_offset後的數據開始索引
        sql_query_post  =       REPLACE INTO sph_say_counter(id,max_offset) SELECT 1,MAX(id) FROM say #索引後更新最大記錄,sql_query_pre是執行查詢前執行的語句,sql_query_post是執行查詢後再執行的語句
}
index delta : mysql
{
        source          =       delta
        path            =       /usr/local/coreseek/var/data/delta
}

  此時執行增量索引 /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf delta --rotate  後,即可以經過search搜索到多出內容的搜索結果數據庫

  能夠經過合併索引 /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf --merge mysql delta --rotate --merge-dst-range deleted 0 0  來合併mysql源和delta源的索引 (--merge-dst-range deleted 0 0 是爲了防止多個關鍵字指向同一個文檔)bootstrap

  

  爲了在執行索引時也能夠更新sph_say_counter表,在source mysql內也加入這句:

sql_query_pre           = REPLACE INTO sph_say_counter(id,max_offset) SELECT 1,MAX(id) FROM say

  此時執行 /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf --all --rotate 即可以從新創建全部索引並更新sph_say_counter表

  

  到此csft_mysql.conf完整配置爲:

 1 #源定義
 2 source mysql #源名,自定義
 3 {
 4     type                    = mysql ## 說明數據源的類型。數據源的類型能夠是:mysql,pgsql,mssql,xmlpipe,odbc,python
 5 
 6     sql_host                = localhost
 7     sql_user                = root
 8     sql_pass                = 123
 9     sql_db                  = test_qq
10     sql_port                = 3306
11     sql_query_pre           = SET NAMES utf8
12     sql_query_pre           = REPLACE INTO sph_say_counter(id,max_offset) SELECT 1,MAX(id) FROM say
13     sql_query               = SELECT id,fromid,toid,content FROM say
14     sql_attr_uint            = id           #從SQL讀取到的值必須爲整數
15     sql_attr_timestamp        = date_added #從SQL讀取到的值必須爲整數,做爲時間屬性
16 
17      sql_query_info_pre      = SET NAMES utf8                                        #命令行查詢時,設置正確的字符集
18     sql_query_info            = SELECT * FROM say WHERE id=$id #命令行查詢時,從數據庫讀取原始數據信息
19 }
20 
21 #index定義
22 index mysql #索引名,自定義
23 {
24     source            = mysql             #對應的source名稱
25     path            = /usr/local/coreseek/var/data/mysql #請修改成實際使用的絕對路徑,例如:/usr/local/coreseek/var/...
26     docinfo            = extern
27     mlock            = 0
28     morphology        = none
29     min_word_len        = 1
30     html_strip                = 0
31     ngram_len = 0
32     charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux環境下設置,/符號結尾
33     charset_type        = zh_cn.utf-8
34 }
35 
36 source delta : mysql #繼承名爲mysql源配置的delta
37 {
38         sql_query_pre   =
39         sql_query       =       SELECT id,fromid,toid,content FROM say WHERE id > (SELECT max_offset FROM sph_say_counter WHERE id = 1)
40         sql_query_post  =       REPLACE INTO sph_say_counter(id,max_offset) SELECT 1,MAX(id) FROM say
41 }
42 index delta : mysql
43 {
44         source          =       delta
45         path            =       /usr/local/coreseek/var/data/delta
46 }
47 
48 
49 #全局index定義
50 indexer
51 {
52     mem_limit            =32M
53 }
54 
55 #searchd服務定義
56 searchd
57 {
58     listen                  =   9312
59     read_timeout        = 5
60     max_children        = 30
61     max_matches            = 1000
62     seamless_rotate        = 0
63     preopen_indexes        = 0
64     unlink_old            = 1
65     pid_file =/usr/local/coreseek/var/log/searchd_mysql.pid  #請修改成實際使用的絕對路徑,例如:/usr/local/coreseek/var/...
66     log = /usr/local/coreseek/var/log/searchd_mysql.log        #請修改成實際使用的絕對路徑,例如:/usr/local/coreseek/var/...
67     query_log = /usr/local/coreseek/var/log/query_mysql.log #請修改成實際使用的絕對路徑,例如:/usr/local/coreseek/var/...
68     binlog_path =                                #關閉binlog日誌
69     compat_sphinxql_magics = 0
70 }
View Code

 

  3.將執行索引加入到Linux計劃任務中,定時執行更新,合併,總體索引 

  爲了方便,咱們將執行總體索引,增量索引,合併索引分別寫到3個shell文件中

cd /usr/local/coreseek/sh
vi all.sh
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf --all --rotate

vi delta.sh
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf delta --rotate 

vi merge.sh
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_mysql.conf --merge mysql delta --rotate --merge-dst-range deleted 0 0 

  而後,執行crontab -e 寫入以下內容

*/1 * * * * /bin/sh /usr/local/coreseek/sh/delta.sh >/dev/null 2>&1 ##每1分鐘執行增量索引
*/5 * * * * /bin/sh /usr/local/coreseek/sh/merge.sh >/dev/null 2>&1 ##每5分鐘合併索引
30 1 * * *  /bin/sh /usr/local/coreseek/sh/all.sh >/dev/null 2>&1   ##天天的1:30執行總體索引
具體執行時間隨本身定義,關於linux計劃任務的更多配置,你能夠點擊此傳送查看詳細。
關於rotate,能夠點此查看詳細。


此步驟後,mysql數據源配置基本完畢,詳細mysql數據源配置,能夠到點此查看,關於配置文件詳細解析,能夠點此查看


 

四,PHP使用Sphinx/Coreseek的三種方式:

 

四-1,使用sphinxapi.php

   在/coreseek安裝包/testpack/api目錄下提供了PHP的接口文件 sphinxapi.php,這個文件包含一個SphinxClient的類,你能夠複製到項目目錄下包含使用。

 1 <?php
 2 
 3 /*
 4    test_sph.php 
 5     SphinxClient類測試
 6 */
 7 
 8 $key=trim($_GET['key']);
 9 echo $key;
10 include('sphinxapi.php');
11 
12 $sp=new SphinxClient();
13 $sp->SetServer('localhost',9312);
14 $sp->SetArrayResult(true);
15 $sp->SetMatchMode(SPH_MATCH_ALL);
16 $sp->SetSortMode(SPH_SORT_RELEVANCE);
17 $res=$sp->Query($key,'mysql');
18 
19 echo '<pre>';
20 print_r($res);
21 echo '</pre>';
22 
23 if(isset($res['matches'])&&count($res['matches'])>0)
24 {
25     $mysql=new PDO("mysql:localhost;dbname=test_qq",'root','123');
26     $mysql->query('set names utf8');
27     $mysql->query('use test_qq');
28     $sql='select * from say where id in(';
29 
30     foreach ($res['matches'] as $v)
31     {
32         $sql.=$v['id'].',';
33     }
34     $sql=trim($sql,',').')';
35 
36     echo $sql;
37     foreach($mysql->query($sql) as $v)
38     {
39         echo '<pre>';
40         print_r($v);
41         echo '</pre>';
42     }
43 }
44 else
45 {
46     echo '沒有記錄';
47 }

 

   瀏覽器輸入localhost/test_sph.php?key=搜索關鍵字   查看搜索結果

 

四-2,安裝php的sphinx擴展

   除了能夠直接包含 sphinxapi.php文件,還能夠經過安裝php的sphinx擴展模塊來直接調用SphinxClient,且效率比包含api文件要高,安裝sphinx須要依賴libsphinxclient包,所以先安裝。

  1,安裝libsphinxevent

 1 # cd /coreseek安裝包目錄/csft-4.1/api/libsphinxclient/
 2 # ./configure  --prefix=/usr/local/sphinxclient
 3 
 4 configure: creating ./config.status
 5 config.status: creating Makefile
 6 config.status: error: cannot find input file: Makefile.in   #報錯configure失敗    
 7 
 8 //處理configure報錯
 9 編譯過程當中報了一個config.status: error: cannot find input file: src/Makefile.in這個的錯誤,而後運行下列指令再次編譯就能經過了:
10 # aclocal
11 # libtoolize --force
12 # automake --add-missing
13 # autoconf
14 # autoheader
15 # make clean
16 
17 //重新configure編譯
18 # ./configure
19 
20 # make && make install

  2,安裝sphinx的PHP擴展

 1 http://pecl.php.net/package/sphinx
 2 # wget http://pecl.php.net/get/sphinx-1.3.0.tgz
 3 # tar zxvf sphinx-1.3.0.tgz
 4 # cd sphinx-1.3.0
 5 # phpize
 6 # ./configure --with-php-config=/usr/bin/php-config --with-sphinx=/usr/local/sphinxclient
 7 # make && make install
 8 # cd /etc/php.d/
 9 # cp gd.ini  sphinx.ini
10 # vi sphinx.ini
11 
12 extension=sphinx.so
13 
14 # service php-fpm restart

 

  安裝完畢後,你可使用四-2的 test_sqh.php測試搜索

  

  分頁測試:

 1 <?php
 2     header("Content-type: text/html; charset=utf-8");
 3     require("./sphinxapi.php");
 4     $s = new SphinxClient;
 5     $s->setServer("192.168.252.132", 9312);
 6     
 7     //SPH_MATCH_ALL, 匹配全部查詢詞(默認模式); SPH_MATCH_ANY, 匹配查詢詞中的任意一個; SPH_MATCH_EXTENDED2, 支持特殊運算符查詢
 8     $s->setMatchMode(SPH_MATCH_ALL);
 9     $s->setMaxQueryTime(30);                                        //設置最大搜索時間
10     $s->SetArrayResult(false);                                        //是否將Matches的key用ID代替
11     $s->SetSelect ( "*" );                                            //設置返回信息的內容,等同於SQL
12     $s->SetRankingMode(SPH_RANK_BM25);                                //設置評分模式,SPH_RANK_BM25可能使包含多個詞的查詢的結果質量降低。 
13     //$s->SetSortMode(SPH_SORT_EXTENDED);                            //發現增長此參數會使結果不許確
14     //$s->SetSortMode(SPH_SORT_EXTENDED,"from_id asc,id desc");        //設置匹配項的排序模式, SPH_SORT_EXTENDED按一種相似SQL的方式將列組合起來,升序或降序排列。
15     $weights = array ('company_name' => 20);
16     $s->SetFieldWeights($weights);                                    //設置字段權重
17     $s->SetLimits ( 0, 30, 1000, 0 );                                //設置結果集偏移量  SetLimits (便宜量,匹配項數目,查詢的結果集數默認1000,閥值達到後中止)
18     //$s->SetFilter ( $attribute, $values, $exclude=false );        //設置屬性過濾
19     //$s->SetGroupBy ( $attribute, $func, $groupsort="@group desc" );    //設置分組的屬性
20     $res = $s->query('@* "汽車"','main','--single-0-query--'); #[寶馬]關鍵字,[news]數據源source
21     
22     
23     //代碼高亮
24     $tags = array();
25     $tags_name = array();
26     foreach($res['matches'] as $key=>$value){
27         $tags[] = $value['attrs'];
28           $company_name[] = $value['attrs']['company_name'];
29           $description[] = $value['attrs']['description'];
30     }
31     $company_name = $s->BuildExcerpts ($company_name, 'main', '汽車', $opts=array() );        //執行高亮,這裏索引名字千萬不能用*
32     $description = $s->BuildExcerpts ($description, 'main', '汽車', $opts=array() );        //執行高亮,這裏索引名字千萬不能用*
33     foreach($tags as $k=>$v)
34     {
35         $tags[$k]['company_name'] = $company_name[$k];    //高亮後覆蓋
36         $tags[$k]['description'] = $description[$k];    //高亮後覆蓋
37     }
38     
39     // 高亮後覆蓋
40     $i = 0;
41     foreach($res['matches'] as $key=>$value){
42         $res['matches'][$key] = $tags[$i];
43         $i++;
44     }
45     
46     $err = $s->GetLastError();
47     
48     echo '<pre>';
49     var_export($res);
50     var_export($err);
51     echo '</pre>';

 

   

  更多SphinxClient類的資料,能夠參考官方文檔

 

四-3,爲 MySQL 5.5.x 編譯安裝 SphinxSE

 

  直接安裝SphinxSe做爲mysql的存儲引擎,php的無需做任何改變,便可使用sphinx的全文索引。

#---------------MySQL 5.5 基本設置編譯-----------

#如下指令中的VERSION表示MySQL的版本,例如:5.5.8,或者5.5.9
$ tar xzvf coreseek-4.1-beta.tar.gz
$ tar xzvf mysql-VERSION.tar.gz #就是上面下載的mysql源碼包
$ cp -R coreseek-4.1-beta/csft-4.1/mysqlse mysql-VERSION/storage/sphinx
#上面語句是將mysqlse文件夾複製到storage文件夾下並改名爲sphinx,請注意
$ cd mysql-VERSION
$ cmake . -DCMAKE_BUILD_TYPE=Release -DWITH_SPHINX_STORAGE_ENGINE=1 #若是提示沒有命令 先"yum -y install cmake" 安裝cmake
#若是上面語句報「Warning: Bison executable not found in PATH」,則安裝bison,再運行此語句
#若是提示缺乏ncurses庫,則 apt-get install libncurses-dev 或 yum -y install ncurses-devel 安裝ncurses庫後,刪除CMakeCache.txt文件,再從新cmake便可
#如要查看cmake可用參數,請執行:cmake .
-LH $ make #----------將SphinxSE安裝到已經安裝的MySQL 5.5中----------- #首先執行:MySQL 5.5 基本設置編譯過程 #特別注意:須要選擇與當前已安裝的MySQL 5.5對應的版本進行編譯 $ cp storage/sphinx/ha_sphinx.so /path_to_your_mysql_5.5/lib/plugin $ mysql -uroot -p??? mysql>install plugin sphinx soname "ha_sphinx.so"; mysql>show engines; #ENGINE列表顯示出SPHINX表示安裝成功

 

測試使用SphinxSe:

#-------------------------測試SphinxSe--------------------------------------
mysql> use test_qq;

mysql> CREATE TABLE documents_sphinxse
-> (
-> id INTEGER UNSIGNED NOT NULL,
-> weight INTEGER NOT NULL,
-> query VARCHAR(3072) NOT NULL,
-> group_id INTEGER,
-> INDEX(query)
-> ) ENGINE=SPHINX CONNECTION="sphinx://localhost:9312/mysql";

#-----------執行sphinxse查詢-----------------------------
mysql>SELECT * FROM documents_sphinxse WHERE query='網絡搜索;mode=any';

#--------執行關聯SphinxSE查詢,獲取原始數據信息:-----------
mysql>SELECT dse.*, d.title FROM documents_sphinxse AS dse LEFT JOIN documents AS d USING(id) WHERE query='網絡搜索;mode=any';

 

 

五,參考文檔

    http://blog.csdn.net/e421083458/article/details/21529969

  http://www.coreseek.cn/products-install/sphinxse/

  http://blog.csdn.net/keyunq/article/details/45129867

  http://www.cnblogs.com/yjf512/p/3598332.html

相關文章
相關標籤/搜索