首先數據是分為 結構化 和 非結構化的:
非結構化數據的檢索一般用下面2個方法:
- 順序掃描法
- 全文搜索
順序掃描法,例:找一個包含 某字符 的文件,那么它會一個文件一個文件的查找,這個文件從頭查到尾,直到找到為止。【適用於小數據量文件,因為要擔心效率】
全文搜索:把一些非結構化的數據 轉為 結構化的數據,然后創建索引,實現搜索的目的【一般查詢大文件、多文件 什么的..】,例:字典,里面有拼音、偏旁部首、筆畫..這些就是 規則 或者說是 索引(結構化了)。
全文搜索實現原理:
建立文本庫 數據源
建立索引 提取規律
執行搜索 用戶發起
過濾結構 查詢到的有些可能是臟數據等。。
返回結果 用戶接受
全文搜索實現技術
基於Java開源實現:
- Lucene
- ElasticSearch
- Solr
Lucene:基於全文檢索和搜尋的開源程序庫,由Apache軟件基金會支持和提供,有一個簡單卻強大的應用程序接口(API),能夠做全文索引和搜尋,在Java開發環境里Lucene是一個成熟的免費開放源代碼工具,但它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎。
Elasticsearch是一個基於Lucene的搜索服務器。它提供了一個分布式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch是用Java語言開發的,並作為Apache許可條款下的開放源碼發布,是一種流行的企業級搜索引擎。Elasticsearch用於雲計算中,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。官方客戶端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和許多其他語言中都是可用的。根據DB-Engines的排名顯示,Elasticsearch是最受歡迎的企業搜索引擎,其次是Apache Solr,也是基於Lucene。
Solr是一個獨立的企業級搜索應用服務器,它對外提供類似於Web-service的API接口。用戶可以通過http請求,向搜索引擎服務器提交一定格式的XML文件,生成索引;也可以通過Http Get操作提出查找請求,並得到XML格式的返回結果。【貌似僅支持Json 和 Xml ,但未證實】