Solr工作原理


Solr簡介

Solr是一個獨立的企業級搜索應用服務器,它對外提供類似於Web-service的API接口。用戶可以通過http請求,向搜索引擎服務器提交一定格式的XML文件,生成索引;也可以通過Http Get操作提出查找請求,並得到XML格式的返回結果。

想要知道solr的實現原理,首先得了解什么是全文檢索、solr的索引創建過程和索引索搜過程。

1. 全文檢索

舉個例子:現在有幾個文檔,我想從這幾個文檔中查找出包含“solr工作原理”的文檔,此時有兩種做法:

1)順序掃描法:對這幾個文檔依次查找,包含目標字段的文檔就記錄下來,最后查找的結果可能在這幾個文檔中,這種查找方式叫做順序掃描法。

順序掃描法在文檔數量較少的情況下,查找速度還是很快的,但是文檔數量很多時,查找速度就明顯不行了。

2)全文檢索:對文檔內容進行分詞,對分詞后的結果創建索引,然后通過對索引進行搜索的方式叫做全文檢索。

全文檢索就相當於根據偏旁部首或讀音去查找字典,在文檔很多的情況,這種查找速度肯定比一個一個文檔查找要快。

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列表找到具體的文檔,根據出現的頻次等計算權重,最后將文檔列表按照權重排序返回


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM