Sphinx 簡介及原理

2021-09-08 11:14:34 字數 1935 閱讀 4642

1.sphinx簡介

是一款基於sql的高效能全文檢索引擎(還不支援nosql), 主要優點有:

1).建立和重建索引迅速

2).大資料量時檢索速度較快

3).為很多指令碼語言設計了檢索api(如php, python, perl, ruby), 很方便地呼叫sphinx的相關介面對資料庫進行查詢

4).為mysql, postgresql等設計了儲存引擎外掛程式, 可以很方便的使用

5).支援分布式搜尋, 可以橫向擴充套件系統效能

缺點:必須要有主鍵, 且主鍵為整型

不負責資料儲存

配置不靈活

coreseek, 支援中文的全文檢索引擎(即支援中文分詞的sphinx = sphinx + mmseg)

2.搜尋方式的改變

舊有搜尋方式

php -> mysql

sphinx搜尋方式

php -> sphinx  mysql

搜尋詞, 得到文件id, 拿id去mysql中查詢對應id文件的資訊

3.什麼是全文檢索

資料分類

結構化資料: 指具有固定格式或有限長度的資料, 如資料庫, 元資料等

非結構化資料: 指沒有固定格式或不定長的資料, 也叫全文資料

搜尋分類

對結構化資料的搜尋: 如對資料的數值、 時間等進行搜尋, 對windows的檔名、型別的搜尋等

對非結構化資料的搜尋: linux下的grep命令等, 對非結構化的資料的搜尋也叫對全文資料的搜尋

全文資料的搜尋分類

順序掃瞄: 從頭到尾的找, 如like查詢

索引掃瞄: 把非結構化資料中的內容提取出來一部分重新組織, 讓它變的有結構化, 這部分提取出來的資料就叫做索引

全文索引:是指計算機索引程式通過掃瞄文件中的每個詞, 對每個詞建立索引, 記錄在文件中的位置及次數, 當使用者查詢時,直接搜尋索引, 並返回結果的檢索方式

4.sphinx的步驟

1.索引建立

sphinx即對記錄進行分詞, 並記錄下詞所在記錄id, 建立索引表

2.搜尋索引

當請求來時, 會對請求的詞進行分詞, 查詢索引表, 返回對應的記錄id

1.mysql中建立文件(記錄)

2.把文件傳給分詞元件(tokenizer), 分詞元件把文件分成乙個個單獨的單詞(), 去除標點符號, 去除停詞(stop word)(the, a, this等), 每種分詞元件都會有乙個停詞集合, 分詞元件處理完畢後我們便得到詞元(token)

3.把詞元傳給語言處理元件(linguistic processor), 將大寫變為小寫, 複數縮減為單數形式, 過去時等變為普通詞根, 得到詞(term), 所以搜尋 drove, 也會搜尋到 drive

4.將詞傳給索引元件(indexer), 利用得到的詞建立乙個字典, 對字典按字母順序進行排序, 去除重複值

1).建立字典, 並排序, id表示記錄的id

term    id

allow   1

student 1

student 1

student 2

2).去除重複值

term    document frequency

allow      1 ->(指向乙個鍊錶, (document id 1, frequency 1))

student    2 ->(指向乙個鍊錶, (document id 1, frequency 2) -> (documentid 2, frequency 1))

總結

HBA簡介及原理

hba,即主機匯流排介面卡英文 host bus adapter 縮寫。是乙個使計算機在伺服器和儲存裝置間提供輸入 輸出 i o 處理和物理連線的電路板和 或積體電路介面卡。簡介 主機匯流排介面卡 host bus adapter,hba 是乙個在伺服器和儲存裝置 hba 間提供輸入 輸出 i o ...

Appium簡介及原理

androidbootstrap簡介 android bootstrap是專為android studio和gradle構建的乙個集模板 引導和樣板檔案於一身的開源專案,基於parse api建立,擁有著許多非常優秀的開源工具和框架,能夠幫助開發者節省大量的開發 測試與除錯時間。基於apache v...

RFID簡介及工作原理

rfid的工作原理 射頻識別系統的基本模型如圖8 1所示。其中,電子標籤又稱為射頻標籤 應答器 資料載體 閱讀器又稱為讀出裝置,掃瞄器 通訊器 讀寫器 取決於電子標籤是否可以無線改寫資料 電子標籤與閱讀器之間通過耦合元件實現射頻訊號的空間 無接觸 耦合 在耦合通道內,根據時序關係,實現能量的傳遞 資...