Hibernate Search項目的Beta第二版剛剛發布InfoQ為此采訪了Hibernate Search項目的發起人Emmanuel Bernard以了解更多細節Emmanuel同時也是相關項目Hibernate Annotations和Hibernate EntityManager的發起人根據Emmanuel所言Hibernate Search目的是幫助Hibernate的使用者或是Java Persistence API(JPA)的使用者可以通過全文搜索索引來訪問Hibernate或JPA管理的對象Hibernate Search項目的主要特性包含以下幾個方面
·Lucene集成——作為強大高效的檢索引擎Lucene的美名早已久經考驗了
·數據的自動插入和更新——當一個對象通過Hibernate添加或更新時索引也會相應進行透明的更新
·支持眾多復雜的搜索方式——可快速的使用通配符進行搜索以及多關鍵詞全文檢索(multiword text searches)和近似或同義詞搜索(approximation/synonym searches)或根據相關性排列搜索結果
·搜索集群(Search Clustering)——Hibernate Search提供了內建搜索集群解決方案其中包括一個基於JMS的異步查詢和索引系統
·對Lucene API接口的直接調用——如果用戶打算處理某些特別復雜的問題可以在查詢中直接使用Lucene提供的API接口
·對Lucene的自動管理——Hibernate Search可以管理並優化Lucene的索引並且非常高效地使用Lucene的API接口
項目的主要目標包含以下幾個方面
·易用性——和Hibernate的ORM映射一樣Hibernate Search幫助用戶實現了業務%的工作並且使用戶專注於余下更為困難的業務實現部分
·和已有的Hibernate/JPA編程模型保持一致性——更輕松地集成Hibernate/JPA編程模型是一開始就致力要實現的目標
Emmanuel在實踐中給出了幾個具體的實例包括
·通過轉換對象構造的方式HQL查詢語句可以被轉換為搜索查詢通常只是幾行代碼——其他的因素(執行查詢結果格式等)都保持不變
·不需要啟動過程因為Hibernate Search透明地利用了已有的Hibernate/JPA基礎架構
·最小配置集合要求至少在persistencexml或者hibernatecfgxml中設置兩個屬性
關於最終發布時間表Emmanuel指出版本發布之前將在查詢和索引最優化方面做出大量的工作他就此總結道
Hibernate Search的核心代碼實際上是相當穩定的發布版之所以仍標記為Beta的原因是我們對拓展API接口還沒有充足的把握Hibernate Search內核相當靈活並且可以融入用戶自定制的搜索策略到目前為止代碼已經相對穩定我們希望看到一個具備完善特性的產品並保證API接口不會出現問題
如同平常一樣開源項目在編碼完成時發布我所要說的就是這個夏天很長並且我沒有安排什麼額外的度假計劃 )
關於Hibernate Search實現策略好處和不足的有趣爭論也隨之展開Sanjiv Jivan就此描述了他眼中的Hibernate Search優缺點隨後Emmanuel Bernard也回應了Sanjiv的看法那麼親愛的讀者對於Hibernate Search您的觀點又是如何呢?
From:http://tw.wingwit.com/Article/program/Java/ky/201311/27994.html