關於sphinx的一點了解

一、什麼是sphinx

sphinx是SQL Phrase Index(查詢詞組索引)的縮寫,Sphinx是一個基於sql的全文檢索引擎

Sphinx  全文檢索引擎

Coreseek 支持中文的全文檢索引擎

1.sphinx的機制兩部分構成:生成索引+search索引
2.sphinx索引類型:普通索引+rt實時索引+分佈式索引

二、sphinx優缺點

優點:1.高速的建立索引(在當代CPU上,可達到10MB/秒)

    2.高性能的搜索

    3、可處理海量數據

    4、提供了優秀的相關度算法,基於短語相似度和統計BM2的複合Ranking方法

     5、支持分佈式搜索

     6、提供文檔片段(摘要以及高亮)生成功能

     7、可作爲MYSQL的存儲引擎提供搜索服務

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

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

缺點:1、必須要有主鍵 2、主鍵必須爲整型  3、不負責數據存儲  4、配置不靈活

三、MySQL和Sphinx的全文檢索區別:

1、他可以提供比數據庫本身更專業的搜索功能,使得應用程序更容易實現專業化的全文檢索

2、他是一個單獨的服務器,具有很多MySQL自身不具備的擴展功能,性能更高,他存在於MySQL之前,更好的緩解數據庫的壓力等。

從根本上講,我們所有操作都是圍繞數據庫展開的,也就是說我們要通過各種方法、各種手段,最大程度的減輕數據庫的壓力。

四、sphinx的應用場景

不管是網站還是app很多產品的設計思路和產品功能多多少少都有相似之處,那麼這邊主要講以下幾個場景

描述、話題的搜索

主要的實現思路是全量索引+增量索引方式,可設定時任務定點跑索引

用戶暱稱的搜索

主要是實現思路是實時索引+分佈式索引的方式,用戶由於過多,故使用實時索引的方法進行增加,舊數據通過跑腳本重新讀取後再寫入。

搜索框聯想詞的提示

主要實現思路是分佈式索引的方式,自動聯想其他人曾經輸入過的詞語。


tip: morphology = stem_en會啓用英文單詞的提取。搜索英文時候就不會一個一個字母搜了,會提高sphinx搜索英文單詞的時候的效率。

五、sphinx 的實現原理

Sphinx的整個工作流程就是Indexer程序到數據庫裏面提取數據,對數據進行分詞,然後根據生成的分詞生成單個或多個索引,並將它們傳遞給searchd程序。然後客戶端可以通過API調用進行搜索。

六、數據搜索  sphinx xunsearch

        xunsearch與sphinx原理上略有不同,xunsearch當然在創建索引時,其實他是創建了一個自己的數據庫, 如果你用xunsearch去查尋數據時,他不會再到你的mysql數據庫中去查尋了,而是直接到它本身的數據庫中去查尋,然後返回數據,而sphinx 不是這樣的,sphinx創建一些索引文件(索引表),然後通過sphinx去查尋數據時,首先他到索引文件查尋數據,然後返回的是當前要查尋數據的 id(這裏id是主鍵),然後再通過id去到mysql數據中查尋數據,然後再返回給數據。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章