Apache Lucene 5.0發布,不再兼容3.X系列版本
原文 http://www.infoq.com/cn/news/2015/02/apache-lucene5-release
近日,Apache軟件基金會正式發布了 Apache Lucene 5.0 版本,該版本的重大改進包括實現了更強大且安全的索引和降低了內存堆的使用。同時,該版本還實現了其他方面的一些改進和大量Bug的修改。本次更新共包括32項新特性、18項改進、30個Bug、40個API的修改以及其它方面的改進。
Lucene 5.0實現主要更新內容包括:
- 所有文件的訪問方法都已基于Java NIO2的相關API進行了改進,這就使得Lucene的索引操作能夠更加安全地處理異常
- Lucene已實現了為每個segment和每次提交都存儲了唯一的id,從而使得Lucene能夠更加精確地實現索引文件的復制
- 在索引合并的過程中,IndexWriter總會在合并前檢測已經損壞的segment,這就意味著當升級到5.0版本時,對4.X系列的索引進行合并時,會有一定的延遲
- 新增了RoaringDocIdSet和SparseFixedBitSet兩個類,從而實現了隨機寫和advance-able稀疏BitSet,索引所需堆大小能夠按照比例來設置多少位和共有多少文檔不在索引中
- 新增Lucene50Codec編碼/解碼器,這就使得在索引合并時,減少了內存堆的使用,這是因為索引合并時,不是將所有的Field加載到堆中,而是先加載當前要合并Field,合并成功后再刪除,然后再加載其他Field
- 默認的Norms格式使用了稀疏編碼,這就意味著當進行搜索時,具有大量稀疏Field的Norms將能夠大大減少堆大小的使用
- 該版本新增了用來打印一個樹形結構以遞歸展示索引過程中占用堆大小的API
- FieldCache類已經不鼓勵使用,當要在某個Field上進行排序時,用戶應該使用Doc值來索引相應的Field,相對于使用FieldCache更加快且耗費較少的堆大小
- 新增一個基于跟蹤策略的過濾器緩存,該緩存能夠緩存高頻率使用的過濾器
- 新增DateRangeField類型,該類型能夠索引和搜索時間范圍、關于DateRangeField的多值
- 默認的編/解碼器新增了一個選項,以用來控制Filed的 BEST_SPEED或者BEST_COMPRESSION
- 用于基于多值Field排序的SortedSetSortField已從Lucene的沙箱中移到Luene的核心庫中。
Lucene 5.0已不再兼容Lucene 3.X系列版本,當打開3.X系列版本生成的索引將會引起格式異常。如果要升級到5.0版本,最好重建索引或者使用最新的4.10相關的索引工具更新舊的索引。
Lucene是一個使用Java開發的高性能的全文檢索引擎,更多關于Lucene 5.0的信息,請讀者查看其 發布公告 和其完整改進列表請看 ChangeLog 。此外,基于Lucene的Solr也更新到了5.0版本,主要在易用性、維護操作、分布式集群等方面進行了改進,讀者可以登錄其 官網 了解相關信息。目前,除了Solr外,還有有眾多著名的開源項目基于Lucene實現,如 Elasticsearch 、 Hibernate Search 、LinkedIn的 Zoie 。國內外許多公司都在使用Lucene或者基于Lucene的開源項目來構建全文檢索,如Apache軟件基金會的網站、Eclipse的幫助子系統等。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!