簡體   English   中英

使用Hibernate Search在多值上添加構面到應用程序

[英]Add faceting over multivalued to application using Hibernate Search

我們在應用程序中使用了Hibernate Search。 我們使用刻面。 最近,我們發現了一個很大的限制。 在具有多個值的字段上進行切面操作無法在Hibernate Search中正常工作-如果文檔中有多個值用於切面字段(例如,多個類別),則僅考慮其中一個值。

我目前可以想到兩種解決方案:

  • 使用bobo-browse(http://code.google.com/p/bobo-browse/)
  • solr(http://lucene.apache.org/solr/)

在這兩種解決方案中,我們將繼續使用Hiberante Search維護索引並像以前一樣進行查詢(使用Hiberante Search),並在需要時運行其他bobo-browse或solr查詢以進行構面(bobo-browse或solr將使用實物索引) “只讀”方式)。 問題在於我們經常更新索引,並且希望在分面查詢中獲得真正的新鮮數據。 Bobo瀏覽器不會自動與Hiberante搜索集成,為了使搜索保持最新狀態,我可能會遇到一些問題(例如https://groups.google.com/forum/?fromgroups=#!topic/bobo-瀏覽/ sn_Efc-YClU )。 該文檔看起來有點凌亂,但尚未完成。 另一方面,Solr似乎是一件很重要的事情,只是為了使構面正常工作。 而且我仍然擔心在更新/刷新索引時會遇到一些問題。

您對此事有經驗嗎? 有什么建議么?

作為Hibernate Search開發人員,我建議您加入我們,並幫助您實現所需的工具。

我們當中沒有人真正需要多值分面,因此我們不確定是否選擇哪種解決方案。 看來您確實有需求,這是探索替代方案並進行嘗試的完美之選。

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

我想我們可以用Bobo-browse做同樣的事情。 我希望Solr不添加其他依賴項,但是如果bobo-browse證明是一種出色的解決方案,為什么不呢?。但是您可以在這種選擇上幫助我們。

你會得到什么交換?

  • 我們將繼續維護:與任何將來的版本都將保持兼容性。 希望您會有所幫助。
  • 來自其他用戶的永恆感激;)
  • 數千其他用戶的堅實測試
  • 錯誤修正和改進。
  • 簡歷上的搖滾明星徽章

需要什么?

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

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

我還將Bobo Browse與Hibernate Search結合使用。 我也有定期更新和只讀問題。 Bobo並不是最簡單的庫,我已經多次研究了與Hibernate Search集成的方法,但由於復雜性而放棄了。

我使用索引的定時重裝以確保新鮮度,但這會產生大量垃圾。 隨着時間的流逝,Lucene已經優化了重新打開索引讀取器的過程,但是Bobo團隊並沒有真正致力於支持它。 https://linkedin.jira.com/browse/BOBO-31描述了此問題。

Hibernate Search基礎結構應提供足夠的靈活性來進行集成。 Zoie是與Bobo集成的類似於Hibernate Search的實時索引系統https://linkedin.jira.com/wiki/display/BOBO/Realtime+Faceting+with+Zoie也許它可以激發您的努力

這是對休眠搜索的多值構面計數問題的一種解決方案。

博客: 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進行過濾。

日期范圍和一對多(單值)構面組以及多對多(多值)構面組的組合。

然后調用該解決方案以正確導出每個構面組的構面計數。

該解決方案可促進類似於以下jsFiddle仿真的結果: http : //goo.gl/y5C9UO (除了該仿真不會演示范圍刻面之外)。

jsFiddle是較大的博客的一部分,該博客總體上探討了構面搜索的概念: http : //outbottle.com/understanding-faceted-searching/ 如果您像我一樣,並且發現整個方面搜索的概念相當混亂,那么這將有所幫助。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM