亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

全文搜索Sphinx怎么實現

發布時間:2021-12-30 17:43:18 來源:億速云 閱讀:164 作者:iii 欄目:開發技術

本篇內容介紹了“全文搜索Sphinx怎么實現”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

1.Sphinx簡介

1.1.Sphinx是什么

Sphinx是由俄羅斯人Andrew Aksyonoff開發的一個全文檢索引擎。意圖為其他應用提供高速、低空間占用、高結果 相關度的全文搜索功能。Sphinx可以非常容易的與SQL數據庫和腳本語言集成。當前系統內置MySQL和PostgreSQL 數據庫數據源的支持,也支持從標準輸入讀取特定格式 的XML數據。通過修改源代碼,用戶可以自行增加新的數據源(例如:其他類型的DBMS 的原生支持)

1.2.Sphinx的特性

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

  • 高性能的搜索(在2 – 4GB 的文本數據上,平均每次檢索響應時間小于0.1秒);

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

  • 提供了優秀的相關度算法,基于短語相似度和統計(BM25)的復合Ranking方法;

  • 支持分布式搜索;

  • 支持短語搜索

  • 提供文檔摘要生成

  • 可作為MySQL的存儲引擎提供搜索服務;

  • 支持布爾、短語、詞語相似度等多種檢索模式;

  • 文檔支持多個全文檢索字段(最大不超過32個);

  • 文檔支持多個額外的屬性信息(例如:分組信息,時間戳等);

  • 支持斷詞;

1.3.Sphinx中文分詞

中文的全文檢索和英文等latin系列不一樣,后者是根據空格等特殊字符來斷詞,而中文是根據語義來分詞。目前大多數數據庫尚未支持中文全文檢索,如Mysql。故,國內出現了一些Mysql的中文全文檢索的插件,做的比較好的有hightman的中文分詞。Sphinx如果需要對中文進行全文檢索,也得需要一些插件來補充。其中我知道的插件有 coreseek 和 sfc 。

  • Coreseek是現在用的最多的sphinx中文全文檢索,它提供了為Sphinx設計的中文分詞包LibMMSeg 。并提供了多個系統的二進制發行版,其中有rpm,deb及windows下的二進制包。另外,coreseek也為sphinx貢獻了以下事項:

    • GBK編碼的數據源支持

    • 采用Chih-Hao Tsai MMSEG算法的中文分詞器

    • 中文使用手冊(這份中文手冊對國內使用sphinx新手——特別是英語不太好的人來說,提供了極大的便利

  • sfc(sphinx-for-chinese)是由網友happy兄提供的另外一個中文分詞插件。其中文詞典采用的是xdict。據其介紹,經過測試,目前版本在索引速度上(Linux 測試平臺)基本上能夠達到索引UTF-8英文的一半,即官方宣稱速度的一半。(時間主要是消耗在分詞上)。 現提供了與sphinx最新版(sphinx 0.9.10)同步的sphinx-for-chinese-0.9.10-dev-r2006.tar.gz 。此版本增加了sql_attr_string,經過本人的測試。其安裝和配置都非常方便。happy兄在分詞方面還有另外一個貢獻——php-mmseg,這是php對中文分詞的一個擴展庫。

在此,對以上二位作者謹以最大的敬意

  • 此外,如果你對中文分詞不感興趣。或者說僅需要實現類似sql中like的功能,如: select * from product where prodName like ‘%手機%’。sphinx也不會讓你失望,這個或許就是官網對中文的簡單實現——直接對字索引。并且搜索速度還不錯^_^ 。

本文會對以上三種中文應用進行測試,并以文檔的方式記錄下來,這也許正是本文檔的重點。

2.安裝配置實例

2.1在GNU/Linux/unix系統上安裝

Sphinx在mysql上的應用有兩種方式:
①、采用API調用,如使用PHP、java等的API函數或方法查詢。優點是可不必對mysql重新編譯,服務端進程“低耦合”,且程序可靈活、方便的調用;
缺點是如已有搜索程序的條件下,需修改部分程序。推薦程序員使用。
②、使用插件方式(sphinxSE)把sphinx編譯成一個mysql插件并使用特定的sql語句進行檢索。其特點是,在sql端方便組合,且能直接返回數據給客戶端
不必二次查詢(注),在程序上僅需要修改對應的sql,但這對使用框架開發的程序很不方便,比如使用了ORM。另外還需要對mysql進行重新編譯,且需要mysql-5.1以上版本
支持插件存儲。系統管理員可使用這種方式
二次查詢注:到現在發布版本為止——sphinx-0.9.9,sphinx在檢索到結果后只能返回記錄的ID,而非要查的sql數據,故需要重新根據這些ID再次從數據庫中查詢,
正在開發的sphinx 0.9.10版本已可存儲這些文本數據,作者曾試過,性能和存儲上的效果都不佳,畢竟還沒出正式版

本文采用的是第一種方式

在*nix系統下安裝,首先需要以下一些軟件支持

軟件環境:

  • 操作系統:Centos-5.2

  • 數據庫:mysql-5.0.77-3.el5 mysql-devel(如果要使用sphinxSE插件存儲請使用mysql-5.1以上版本)

  • 編譯軟件:gcc gcc-c++ autoconf automake

中文的全文檢索和英文等latin系列不一樣,后者是根據空格等特殊字符來斷詞,而中文是根據語義來分詞。中文分詞主要有2個插件

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

sfcsphinx-for-chinese是由網友happy兄提供的另外一個中文分詞插件。其中文詞典采用的是xdict

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

四、  Coreseek(支持中文檢索的sphinx)安裝

因為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將詞典和sphinx源程序放在了一個包中,因此只需要下載coreseek包就可以了。

http://pan.baidu.com/s/1dEK4x3r

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

如果出現這種報錯config.status: error: cannot find input file: src/Makefile.in,就在configure 之前執行如下命令
aclocal

libtoolize --force
automake --add-missing
autoconf
autoheader
make clean

“全文搜索Sphinx怎么實現”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绥化市| 白城市| 定兴县| 邹城市| 柳河县| 普宁市| 泾源县| 青海省| 娄烦县| 泰和县| 无锡市| 盐山县| 西充县| 潼关县| 肥西县| 台北市| 鲁山县| 游戏| 永仁县| 镇巴县| 双鸭山市| 遵义市| 白朗县| 宜兴市| 和平县| 汉沽区| 天台县| 云霄县| 阿城市| 江山市| 淮北市| 平阳县| 杭锦后旗| 靖江市| 吉水县| 本溪市| 酉阳| 博白县| 昌乐县| 太仓市| 焉耆|