Sphinx (Sphinx(斯芬克司))

2021-07-24 04:34:30 字數 2903 閱讀 7321

sphinx是乙個基於sql的全文檢索引擎,可以結合mysql,postgresql做全文搜尋,它可以提供比資料庫本身更專業的搜尋功能,使得應用程式更容易實現專業化的全文檢索。sphinx特別為一些指令碼語言設計搜尋api介面,如php,python,perl,ruby等,同時為mysql也設計了乙個儲存引擎外掛程式。

sphinx 單一索引最大可包含1億條記錄,在1千萬條記錄情況下的查詢速度為0.x秒(毫秒級)。sphinx建立索引的速度為:建立100萬條記錄的索引只需 3~4分鐘,建立1000萬條記錄的索引可以在50分鐘內完成,而只包含最新10萬條記錄的增量索引,重建一次只需幾十秒。

sphinx的主要特性包括:

高速索引 (在**cpu上,近10 mb/秒); 高速搜尋 (2-4g的文字量中平均查詢速度不到0.1秒); 高可用性 (單cpu上最大可支援100 gb的文字,100m文件); 提供良好的相關性排名 支援分布式搜尋; 提供文件摘要生成; 提供從mysql內部的外掛程式式儲存引擎上搜尋 支援布林,短語, 和近義詞查詢; 支援每個文件多個全文檢索域(預設最大32個); 支援每個文件多屬性; 支援斷詞; 支援單位元組編碼與utf-8編碼;

「斯芬克司之謎使我們順從自然。當迷霧逝去之後,我們會更加注意目前的需要。」——索福克爾斯

編輯

斯芬克司最初源於古埃及的神話,它被描述為長有翅膀的怪,通常為雄性,是「

仁慈」和「高貴」的象徵,當時的傳說中有三種斯芬克司——人面獅身的 androsphinx,羊頭獅身的criosphinx(阿曼的聖物),鷹頭獅身的hierocosphonx。亞述人和波斯人則把斯芬克司描述為乙隻長有翅膀的公牛,長著人面、絡腮鬍子,戴有皇冠。到了希臘神話裡,斯芬克司卻變成了乙個雌性的**之物,代表著神的懲罰。「sphinx」源自希臘語 「sphiggein」,意思是「拉緊」,因為希臘人把斯芬克司想象成乙個會扼人致死的怪物。傳說天後赫拉派斯芬克司坐在忒拜城附近的懸崖上,攔住過往的路人,用繆斯所傳授的謎語問他們,猜不中者就會被它吃掉,這個謎語是:「什麼動物早晨用四條腿走路,中午用兩條腿走路,晚上用三條腿走路?腿最多的時候,也正是他走路最慢,體力最弱的時候。」俄狄浦斯猜中了正確答案,謎底是「人」。斯芬克司羞愧萬分,跳崖而死(一說為被俄狄浦斯所殺)。據阿波羅多洛斯記載,斯芬克司是厄喀德那同她的兒子雙頭犬奧特休斯所生。斯芬克司的人面象徵著智慧型和知識。

sphinx在mysql上安裝有兩種方式:

下面是第一種安裝方式:

wget

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注:coreseek的安裝教程來自這裡,下面是詳細過程:

tar -jxvf autoconf-2.64.tar.bz2

cd autoconf-2.64

./configure

make

make install

wget 

/csft/

3.2/coreseek-3.2.14.tar.gz

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 ..

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 ..

備註:需要預先設定好字符集為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

新版本的已經自動生成。

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

Sphinx(斯芬克斯的安裝及使用)

1.說明 sphinx是乙個基於sql的全文檢索引擎,可以結合 mysql,postgresql做全文搜尋,它可以提供比資料庫本身更專業的搜尋功能,使得應用程式更容易實現專業化的全文檢索。sphinx特別為一些指令碼語言設計搜尋api介面,如php,python,perl,ruby等,同時為mysq...

mysql 不用斯芬克斯 全域性模糊匹配 查詢

問題是match against對中文模糊搜尋支援不是太好 新建乙個utf8 myisam型別的表並建立乙個全文索引 create table articles id int unsigned auto increment not null primary key,title varchar 200...

GDOI2019模擬2019 3 25 芬威克樹

首先每個點x lowbit x 唯一,所以所有的點形成了一棵樹 問題變成了鏈修改單點求 考慮當k為奇數時,所有的操作不會改變x的最低非0位 即所有的點形成了以 2x 1 k d,2x 1 d 0 2x 1 k d,2x 1 0 2x 1 kd,2x 1 d 0 開頭的一堆鏈,如果能對每個數找到它所在...