2012-10-01 54 views
0

我們在我們的應用程序中使用Hibernate Search。我們使用刻面。最近我們發現了一個很大的侷限性。面向可以具有多個值的字段在Hibernate Search中無法正常工作 - 如果文檔具有多個分面字段值(例如多個類別),則只會考慮其中一個值。使用Hibernate搜索在多值化應用程序中添加分面

我目前能想到的一對夫婦的兩個解決方案:

  • 使用BOBO-瀏覽(http://code.google.com/p/bobo-browse/)
  • Solr的(HTTP:/ /lucene.apache.org/solr/)

在兩種方案中,我們繼續使用的Hiberante搜索和我們(使用的Hiberante搜索)以前那樣進行查詢,以維持指數,並運行其他博博瀏覽或查詢的Solr在需要時進行分面(bobo-browse或solr將使用索引類型爲「只讀」方式)。問題是我們經常更新索引,並希望在查詢中獲得真正新的數據。 Bobo瀏覽不會自動與Hiberante Search整合,爲了不斷搜索最新信息,我可能會遇到一些問題(例如,https://groups.google.com/forum/?fromgroups=#!topic/bobo-browse/sn_Efc-YClU)。該文件看起來有點不整潔,尚未完成。另一方面,Solr似乎是一件非常重要的事情,只是爲了正確地開展工作。我仍然擔心我會遇到更新/刷新索引的一些問題。

你有什麼經驗嗎?有什麼建議麼?

回答

1

作爲一名Hibernate Search開發人員,我建議加入我們並幫助實施您所需要的。

我們中的任何一個人實際上都需要多值化分面,所以我們不太確定選擇哪種解決方案;看起來你有一個真正的需求,這是完美的探索替代品,並嘗試出來。

Hibernate Search已經依賴於許多Solr模塊,尤其是因爲大量優秀的分析器。我相信我們可以找到一種方法來嵌入Solr的分面邏輯,並將其很好地打包到我們一致的API中,而無需在服務器模式下真正啓動Solr。

我想我們可以用波波瀏覽器做同樣的事情;我更喜歡Solr不添加其他依賴項,但如果瀏覽證明一個優越的解決方案爲什麼不......但你可以幫助我們在這個選擇。

你會得到什麼樣的交換?

  • 我們會保留它:兼容性將保留任何未來版本。希望你會有所幫助。
  • 來自其他用戶的感恩永恆;)從上千個其他用戶
  • 堅如磐石的測試
  • 錯誤修正和改進,從..
  • 搖滾明星徽章上你的簡歷

需要什麼?

  • 單元測試
  • 文檔更新
  • 明智代碼

https://community.jboss.org/wiki/ContributingToHibernateSearch

0

我也用波波瀏覽與Hibernate Search的組合。我也遇到了定期更新和只讀問題的問題。 Bobo並不是最簡單的庫,我已經多次尋找與Hibernate Search集成的方法,並且因爲複雜性而放棄了。

我使用索引的定時重新加載來確保新鮮度,但是這會產生大量垃圾進行收集。隨着時間的推移,Lucene優化了重新打開索引讀取器的過程,但Bobo團隊並沒有真正專注於支持這一點。 https://linkedin.jira.com/browse/BOBO-31描述了這個問題。

Hibernate搜索基礎結構應該提供足夠的靈活性來進行集成。 Zoie是一個實時索引系統,如Hibernate Search,與Bobo https://linkedin.jira.com/wiki/display/BOBO/Realtime+Faceting+with+Zoie集成可能會激發你的努力

0

這是解決hibernate搜索的多值facet-count問題的方法。

博客:http://outbottle.com/hibernate-search-multivalue-facet-counts/

博客是完整的一個Java類,可重複使用,以產生刻面計數單值和多值字段。

提供的解決方案是基於這裏提供的解決方案的BitSet:http://sujitpal.blogspot.ie/2007/04/lucene-search-within-search-with.html

的博客有一個Maven項目,該項目演示解決方案非常全面。該項目演示如何使用hibernate-search faceting API進行過濾...。

日期範圍AND 1對多(單值)facet-group AND多對多(多值)值)facet-group組合。

然後調用該解決方案以正確導出每個方面組的facet-counts。

該解決方案有利於類似於這個jsFiddle仿真的結果:http://goo.gl/y5C9UO(除了仿真沒有演示範圍分面)。

jsFiddle是一個更大的博客的一部分,該博客探索一般情況下的方面搜索的概念:http://outbottle.com/understanding-faceted-searching/。如果你像我一樣,並且正在發現面向搜索的整個概念相當混亂,那麼這將有所幫助。

它可能不是世界上最好的解決方案,所以請隨時反饋。

相關問題