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添加或更新時,索引也會相應進行 透明的更新;
◆支援衆多複雜的搜尋方式——可快速的使用通配符進行搜尋,以及多關鍵詞全文檢索(multi-word text searches)和近似或同義詞搜尋(approximation/synonym searches),或根據相關性排列搜尋結果;
◆搜尋集 群(Search Clustering)——Hibernate Search提供了内建搜尋叢集解決方案,其中包括一個基于JMS的異步查詢和索引系統;
◆對Lucene API接口的直接調用——如果使用者打算處理某些特别複雜的問題,可以在查詢中直接使用Lucene提供的API接口;
◆對Lucene的自動管理 ——Hibernate Search可以管理并優化Lucene的索引,并且非常高效地使用Lucene的API接口。
項目的主要目标包含以下幾個方面:
◆易用性——和Hibernate的ORM映射一 樣,Hibernate Search幫助使用者實作了業務90%的工作,并且使使用者專注于餘下更為困難的業務實作部分;
◆和已有的 Hibernate/JPA程式設計模型保持一緻性——更輕松地內建Hibernate/JPA程式設計模型是“一開始就緻力要實作的目标”。
Emmanuel在實踐中給出了幾個具體的執行個體,包括 :
◆通過轉換對象構造的方式,HQL查詢語句可以 被轉換為搜尋查詢,“通常隻是幾行代碼”——其他的因素(執行查詢,結果格式等)都保持不變;
◆不需要啟動過程,因為Hibernate Search透明地利用了已有的Hibernate/JPA基礎架構;
◆最小配置集合要求至少在persistence.xml或者 hibernate.cfg.xml中設定兩個屬性。
關于最終釋出時間表,Emmanuel指出3.0版本釋出之前将在查詢和索引最優化方面做出大量的工作,他就此總結道:
Hibernate Search的核心代碼實際上是相當穩定的,釋出版之是以仍标記為Beta的原因是我們對拓展API接口還沒有充足的把握,Hibernate Search核心相當靈活,并且可以融入使用者自定制的搜尋政策。到目前為止,代碼已經相對穩定,我們希望看到一個具備完善特性的産品,并保證API接口不 會出現問題。
如同平常一樣,開源項目在編碼完成時釋出,我所要說的就是這個夏天很長并且我沒有安排什麼額外的度假計劃 :)
關于Hibernate Search實作政策好處和不足的有趣争論也随之展開,Sanjiv Jivan就此描述了他眼中的Hibernate Search優缺點,随後Emmanuel Bernard也回應了Sanjiv的看法。那麼,親愛的讀者,對于Hibernate Search,您的觀點又是如何呢?