Sphinx : 高性能SQL全文檢索引擎

jopen 9年前發布 | 15K 次閱讀 Sphinx 搜索引擎

Sphinx是一款基于SQL的高性能全文檢索引擎,Sphinx的性能在眾多全文檢索引擎中也是數一數二的,利用Sphinx,我們可以完成比數據庫本身更專業的搜索功能,而且可以有很多針對性的性能優化。

Sphinx : 高性能SQL全文檢索引擎

Sphinx的特點

  • 快速創建索引:3分鐘左右即可創建近100萬條記錄的索引,并且采用了增量索引的方式,重建索引非常迅速。
  • 閃電般的檢索速度:盡管是1千萬條的大數據量,查詢數據的速度也在毫秒級以上,2-4G的文本量中平均查詢速度不到0.1秒。
  • 為很多腳本語言設計了檢索API,如PHP,Python,Perl,Ruby等,因此你可以在大部分編程應用中很方便地調用Sphinx的相關接口。
  • 為MySQL設計了一個存儲引擎插件,因此如果你在MySQL上使用Sphinx,那簡直就方便到家了。
  • 支持分布式搜索,可以橫向擴展系統性能。
  • </ul>

    PHP+MySQL+Sphinx 搜索引擎架構圖

    Sphinx : 高性能SQL全文檢索引擎

    在MySQL中安裝Sphinx

    Sphinx在MySQL上安裝有兩種方式:

    • 第一種方式是采用API調用,我們可以使用PHP,Python,Perl,Ruby等編程語言的API函數進行查詢,這種方式不必重新編譯MySQL,模塊間改動比較少,相對靈活。
    • 第二種需要重新編譯MySQL,將Sphinx以插件的方式編譯到MySQL中去,這種方式對程序改動比較少,僅僅需要改動SQL語句即可,但前提是你的MySQL版本必須在5.1以上。
    • </ul>

      下面是第一種安裝方式:

      #下載最新穩定版
      wget http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz
      tar xzvf sphinx-0.9.9.tar.gz
      cd sphinx-0.9.9
      ./configure --prefix=/usr/local/sphinx/   --with-mysql  --enable-id64
      make
      make install

      Sphinx中文分詞插件Coreseek安裝

      注:coreseek的安裝教程來自這里,下面是詳細過程:

      安裝升級autoconf

      因為coreseek需要autoconf 2.64以上版本,因此需要升級autoconf,不然會報錯。從http://download.chinaunix.net/download.php?id=29328&ResourceID=648 下載autoconf-2.64.tar.bz2,安裝方法如下:

      tar -jxvf autoconf-2.64.tar.bz2
      cd autoconf-2.64
      ./configure
      make
      make install

      下載coreseek

      新版本的coreseek將詞典和sphinx源程序放在了一個包中,因此只需要下載coreseek包就可以了。

      wget http://www.wapm.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz

      安裝mmseg(coreseek所使用的詞典)

      tar xzvf coreseek-3.2.14.tar.gz
      cd mmseg-3.2.14
      ./bootstrap    #輸出的warning信息可以忽略,如果出現error則需要解決
      ./configure --prefix=/usr/local/mmseg3
      make && make install
      cd ..

      安裝coreseek(sphinx)

      cd csft-3.2.14
      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
      make && make install
      cd ..

      測試mmseg分詞和coreseek搜索

      備注:需要預先設置好字符集為zh_CN.UTF-8,確保正確顯示中文,我的系統字符集為en_US.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 網絡搜索
      此時正確的應該返回
      words:

      1. '網絡': 1 documents, 1 hits
      2. '搜索': 2 documents, 5 hits</pre>

        生成 mmseg詞庫及配置文件

        新版本的已經自動生成。

        總結

        Sphinx作為一款高性能的SQL全文檢索引擎,值得開發者繼續關注,尤其是它多語言的API支持,使開發者可以更方便地應用。

        來源: http://www.codeceo.com/article/sphinx-sql-search-engine.html
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!