Solr(一) Solr 简介及搜索原理
一、 Solr 簡介
1 為什么使用 Solr
在海量數據下,對 MySQL 或 Oracle 進行模糊查詢或條件查詢的效率是很低的。而搜索功能在絕大多數項目中都是必須的,如何提升搜索效率是很多互聯網項目必須要考慮的問題。
既然使用關系型數據庫進行搜索效率比較低,最直接的解決方案就是使用專用搜索工具進行搜索,從而提升搜索效率。
2 常見搜索解決方案
基于 Apache Lucene(全文檢索工具庫)實現搜索。但是 Lucene 的使用對于絕大多數的程序員都是“噩夢級”的。
基于谷歌 API 實現搜索。
基于百度 API 實現搜索。
3 Solr 簡介
Solr 是基于 Apache Lucene 構建的用于搜索和分析的開源解決方案。可提供可擴展索引、搜索功能、高亮顯示和文字解析功能。
Solr 本質就是一個 Java web 項目,且內嵌了 Jetty 服務器,所以安裝起來非常方便。客戶端操作 Solr 的過程和平時我們所寫項目一樣,就是請求 Solr 中控制器,處理完數據后把結果響應給客戶端。
4 正向索引和反向索引
只要討論搜索就不得不提的兩個概念:正向索引(forward index)和反向索引(inverted index)。
正向索引:從文檔內容到詞組的過程。每次搜索的時候需要搜索所有文檔,每個文檔比較搜索條件和詞組。
| 文檔 | 詞組 |
| I am a chinese | I,am,a,chinses |
反向索引:是正向索引的逆向。建立詞組和文檔的映射關系。通過找到詞組就能找到文檔內容。(和新華字典找字很像)
| 詞組 | 文檔 |
| I,am,a,chinses | I am a chinese |
二、 Solr 搜索原理
1 搜索原理
Solr 能夠提升檢索效率的主要原因就是分詞和索引(反向索引)。
分詞:會對搜索條件/存儲內容進行分詞,分成日常所使用的詞語。
索引:存儲在 Solr 中內容會按照程序員的要求來是否建立索引。如果要求建立索引會把存儲內容中關鍵字(分詞)建立索引。
2 Solr 中數據存儲說明
Solr 為了給內容建立索引,所以 Solr 就必須具備數據存儲能力。所有需要被搜索的內容都需要存儲在 Solr 中,在開發中需要把數據庫中數據添加到 Solr 中進行初始化,每次修改數據庫中數據還需要同步 Solr 中的數據。
Solr 中數據存儲是存儲在 Document 對象中,對象中可以包含的屬性和屬性類型都定義在 schema.xml 中。如果需要自定義屬性或自定義屬性類型都需要修改 schema.xml 配置文件。從 Solr5 開始 schema.xml 更改名稱為 managed-schema(沒有擴展名)
總結
以上是生活随笔為你收集整理的Solr(一) Solr 简介及搜索原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jenkins详细入门教程
- 下一篇: 北大“四大疯人院”之说