Sphinx學習之sphinx的安裝篇

來源:互聯網
上載者:User

標籤:des   http   java   使用   strong   檔案   

一、  Sphinx簡介

Sphinx是由俄羅斯人Andrew Aksyonoff開發的一個全文檢索索引引擎。意圖為其他應用提供高速、低空間佔用、高結果 相關度的全文檢索搜尋功能。Sphinx可以非常容易的與SQL資料庫和指令碼語言整合。當前系統內建MySQL和PostgreSQL 資料庫資料來源的支援,也支援從標準輸入讀取特定格式 的XML資料。

Sphinx的特性如下:

a)  高速的建立索引(在當代CPU上,峰值效能可達到10 MB/秒);

b)  高效能的搜尋(在2 – 4GB 的文本資料上,平均每次檢索回應時間小於0.1秒);

c)  可處理海量資料(目前已知可以處理超過100 GB的文本資料, 在單一CPU的系統上可 處理100 M 文檔);

d)  提供了優秀的相關度演算法,基於短語相似性和統計(BM25)的複合Ranking方法;

e)  支援分布式搜尋;

f)  支援短語搜尋

g)  提供文檔摘要產生

h)  可作為MySQL的儲存引擎提供搜尋服務;

i)  支援布爾、短語、詞語相似性等多種檢索模式;

j)  文檔支援多個全文檢索索引欄位(最大不超過32個);

k)  文檔支援多個額外的屬性資訊(例如:分組資訊,時間戳記等);

l)  支援斷詞;

雖然mysql的MYISAM提供全文索引,但是效能卻不敢讓人恭維,另外資料庫畢竟不是很善於做這樣的事情,我們需要把這些活讓給更適合的程式去做,減少資料庫的壓力。因此採用Sphinx來做mysql的全文索引工具是一個很好的選擇。這個星期主要來學習這個這個工具的使用,下面將學習過程大致的記錄一下,做個備忘,也希望能對學習這個工具的其他朋友有所啟發。

二、  Sphinx安裝

Sphinx在mysql上的應用有兩種方式:

  1. 採用API調用,如使用PHP、java等的API函數或方法查詢。優點是可不必對mysql重新編譯,服務端進程“低耦合”,且程式可靈活、方便的調用;缺點是如已有搜尋程式的條件下,需修改部分程式。推薦程式員使用。
  2. 使用外掛程式方式(sphinxSE)把sphinx編譯成一個mysql外掛程式並使用特定的sql語句進行檢索。其特點是,在sql端方便組合,且能直接返回資料給用戶端。不必二次查詢,在程式上僅需要修改對應的sql,但這對使用架構開發的程式很不方便,比如使用了ORM。另外還需要對mysql進行重新編譯,且需要mysql-5.1以上版本支援外掛程式儲存。

這裡的安裝主要介紹的是第一種通過api調用的方式。Sphinx的安裝如下:

#下載最新穩定版

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中文分詞

中文的全文檢索索引和英文等latin系列不一樣,後者是根據空格等特殊字元來斷詞,而中文是根據語義來分詞。中文分詞主要有2個外掛程式

  1. Coreseek

Coreseek是現在用的最多的sphinx中文全文檢索索引,它提供了為Sphinx設計的中文分詞包LibMMSeg ,是基於sphinx的基礎上開發的。

  1. sfc(Sphinx-for-chinese)

sfcsphinx-for-chinese是由網友happy兄提供的另外一個中文分詞外掛程式。其中文詞典採用的是xdict

本文主要介紹Coreseek的安裝方法

四、  Coreseek(支援中文檢索的sphinx)安裝
  1. 安裝升級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

  1. 下載coreseek

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

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

  1. 安裝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 ..

  1. 安裝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 ..

  1. 測試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

  1. 產生 mmseg詞庫及設定檔

新版本的已經自動產生。

五、  參考文章:

Sphinx中文指南

http://www.sphinxsearch.org/sphinx-tutorial

Sphinx中文分詞應用

http://www.sphinxsearch.org/archives/82

Sphinx 0.9.8參考手冊

CoreSeek BSD/Linux下的安裝

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.