Solr工作原理
Solr簡介
Solr是一個獨立的企業級搜索應用服務器,它對外提供類似于Web-service的API接口。用戶可以通過http請求,向搜索引擎服務器提交一定格式的XML文件,生成索引;也可以通過Http Get操作提出查找請求,并得到XML格式的返回結果。
要想知道solr的實現原理,首先得了解什么是全文檢索,solr的索引創建過程和索引搜索過程。
一、全文檢索
首先舉個例子:比如現在有5個文檔,我現在想從5個文檔中查找出包含"solr工作原理"的文檔,此時有兩種做法:
1.順序掃描法:對5個文檔依次查找,包含目標字段的文檔就記錄下來,最后查找的結果可能是在2,3文檔中,這種查找方式叫做順序掃描法。
順序掃描法在文檔數量較少的情況下,查找速度還是很快的,但是當文檔數量很多時,查找速度就差強人意了。
2.全文檢索:對文檔內容進行分詞,對分詞后的結果創建索引,然后通過對索引進行搜索的方式叫做全文檢索。
全文檢索就相當于根據偏旁部首或者拼音去查找字典,在文檔很多的情況,這種查找速度肯定比你一個一個文檔查找要快。
二、索引創建和搜索過程
1.創建索引
舉例子:
文檔一:solr是基于Lucene開發的企業級搜索引擎技術
文檔二:Solr是一個獨立的企業級搜索應用服務器,Solr是一個高性能,基于Lucene的全文搜索服務器
首先經過分詞器分詞,solr會為分詞后的結果(詞典)創建索引,然后將索引和文檔id列表對應起來,如下圖所示:
比如:solr在文檔1和文檔2中都有出現,所以對應的文檔ID列表中既包含文檔1的ID也包含文檔2的ID,文檔ID列表對應到具體的文檔,并體現該詞典在該文檔中出現的頻次,頻次越多說明權重越大,權重越大搜索的結果就會排在前面。
solr內部會對分詞的結果做如下處理:
1.去除停詞和標點符號,例如英文的this,that等, 中文的"的","一"等沒有特殊含義的詞
2.會將所有的大寫英文字母轉換成小寫,方便統一創建索引和搜索索引
3.將復數形式轉為單數形式,比如students轉為student,也是方便統一創建索引和搜索索引
2.索引搜索過程
知道了創建索引的過程,那么根據索引進行搜索就變得簡單了。
1.用戶輸入搜索條件
2.對搜索條件進行分詞處理
3.根據分詞的結果查找索引
4.根據索引找到文檔ID列表
5.根據文檔ID列表找到具體的文檔,根據出現的頻次等計算權重,最后將文檔列表按照權重排序返回
訪問我的達人課
更多博客內容詳見我的博客 Wang's Blog
總結
- 上一篇: 如何理解HTTP协议的 “无连接,无状态
- 下一篇: 如何获取服务器的地理位置,如何获取Res