程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Lucene全方檢索框架,Lucene檢索框架

Lucene全方檢索框架,Lucene檢索框架

編輯:C#入門知識

Lucene全方檢索框架,Lucene檢索框架


1、什麼時Lucene?
是一個全文搜索框架,而不是應用產品,他只是一種工具讓你能實現某些產品,並不像www.baidu.com拿來就能用
是apache組織的一個用java實現的全文搜索引擎的開源項目

2、Luncen的工作方式?
提供的服務實際包含兩部分:一入一出
入:寫入,即將你提供的數據源寫入索引
出:讀出,向用戶提供全文搜索服務,讓用戶可以通過關鍵詞定位源

3、寫入流程
數據源首先經過analyzer處理,包括:分詞,分成一個個單詞
將數據源中需要的信息加入Document的各個Field中,並把需要索引的字段按照分詞的順序索引起來,把需要存儲的Field存儲起來。
將索引寫入存儲器,存儲器可以是內存或磁盤

4、讀出流程

用戶提供搜索關鍵詞,經過analyzer處理。

對處理後的關鍵詞搜索索引找出對應的Document。
用戶根據需要從找到的Document中提取需要的Field。

5、Lucene專業術語
Lucene 其實很簡單的,它最主要就是做兩件事:建立索引和進行搜索
來看一些在lucene中使用的術語,這裡並不打算作詳細的介紹,只是點一下而已----因為這一個世界有一種好東西,叫搜索。
IndexWriter:lucene中最重要的的類之一,它主要是用來將文檔加入索引,同時控制索引過程中的一些參數使用。
Analyzer:分析器,主要用於分析搜索引擎遇到的各種文本。常用的有StandardAnalyzer分析器,StopAnalyzer分析器,WhitespaceAnalyzer分析器等。
Directory:索引存放的位置;lucene提供了兩種索引存放的位置,一種是磁盤,一種是內存。一般情況將索引放在磁盤上;相應地lucene提供了FSDirectory和RAMDirectory兩個類。
Document:文檔;Document相當於一個要進行索引的單元,任何可以想要被索引的文件都必須轉化為Document對象才能進行索引。
Field:字段。
IndexSearcher:是lucene中最基本的檢索工具,所有的檢索都會用到IndexSearcher工具;
Query:查詢,lucene中支持模糊查詢,語義查詢,短語查詢,組合查詢等等,如有TermQuery,BooleanQuery,RangeQuery,WildcardQuery等一些類。
QueryParser: 是一個解析用戶輸入的工具,可以通過掃描用戶輸入的字符串,生成Query對象。
Hits:在搜索完成之後,需要把搜索結果返回並顯示給用戶,只有這樣才算是完成搜索的目的。在lucene中,搜索的結果的集合是用Hits類的實例來表示的。

6、Lucene注意事項
索引不能太大,要不然效率會很低,大於1G的時候必須考慮公布索引問題
不建議用多線程來建索引,產生的互鎖問題很麻煩,經常發現索引被lock,無法重新建議的情況
中文分詞是個大問題,目前免費的分詞效果都很差。如果有能力還是自己實現一個分詞模塊,用最短路徑的切分方法,網上有教材和demo源碼,可以參考。
建增量索引的時候很耗cpu,在訪問量大的時候會導致cpu的idle為0
默認的評分機制不太合理,需要根據自己的業務定制

整體來說lucene要用好不容易,必須在上述方面擴充他的功能,才能作為一個商用的搜索引擎

ElasticSearch是基於Lucene開發的分布式搜索框架,包含如下特性:
分布式索引、搜索
索引自動分片、負載均衡
自動發現機器、組建集群
支持Restful 風格接口
配置簡單等。

一、國外優秀的ElasticSearch使用案例
GitHub
GitHub使用ElasticSearch搜索20TB的數據,包括13億的文件和1300億行代碼
GitHub在2013年1月升級了他們的代碼搜索,由solr轉為ElasticSearch,目前集群規模為26個索引存儲節點+8個客戶端節點(負責處理搜索請求)

Mozilla
Mozilla公司以火狐著名,它目前使用WarOnOrange這個項目來進行單元或功能測試,測試結果以json方式索引到ElasticSearch中,開發人員可以非常方便的查找Bug

Sony
Sony公司使用ElasticSearch作為信息搜索引擎 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved