0

we use Hibernate Search in our application. We use faceting. Recently we have found a big limitation. Faceting over fields that can have multiple values doesn't work properly with Hibernate Search - if a document has multiple values for faceted field (ex. multiple categories), only one of the values is taken into account.

I can currently think of a couple two solutions:

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

In both solutions we continue to maintain the index using Hiberante Search and making queries as we did before (using Hiberante Search), and run additional bobo-browse or solr query for faceting, where required (bobo-browse or solr would use index in kind of "read-only" manner). The problem is that we update index quite often, and would like to get really fresh data in faceting queries. Bobo-browse doesn't automatically integrate with Hiberante Search, and to keep search up to date, I might get into some problems (ex. https://groups.google.com/forum/?fromgroups=#!topic/bobo-browse/sn_Efc-YClU). The documentation looks a bit untidy and not yet completed. Solr on the other hand seems like a really big thing to add, just to get faceting work properly. And I'm still afraid I might run into some problems with updating/refreshing index.

Do you have any experience in that matter? Any suggestions?

4

3 回答 3

1

作为一名 Hibernate Search 开发人员,我建议加入我们并帮助实现您所需要的。

我们中没有人真正需要多值刻面,所以我们也不确定选择哪种解决方案;看来您有真正的需求,这是探索替代方案并尝试它们的完美选择。

Hibernate Search 已经依赖于许多 Solr 模块,尤其是因为有大量优秀的分析器。我相信我们可以找到一种方法来嵌入 Solr 的分面逻辑并将其很好地打包到我们一致的 API 中,而无需在服务器模式下实际启动 Solr。

我想我们可以对 Bobo-browse 做同样的事情;我希望 Solr 不添加其他依赖项,但如果 bobo-browse 证明了一个更好的解决方案,为什么不......但你可以帮助我们做出这个选择。

你会得到什么作为交换?

  • 我们会维护它:兼容性将与任何未来版本保持一致。希望你能有所帮助。
  • 其他用户的永恒感谢;)
  • 来自成千上万其他用户的坚如磐石的测试
  • 来自..的错误修正和改进
  • 简历上的摇滚明星徽章

需要什么?

  • 单元测试
  • 文档更新
  • 合理的代码

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

于 2012-10-03T22:28:11.470 回答
0

这是针对休眠搜索的多值构面计数问题的某种解决方案。

博客: 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/。如果您像我一样,并且发现构面搜索的整个概念非常混乱,那么这将有所帮助。

它可能不是世界上最好的解决方案,所以请随时反馈。

于 2013-11-20T18:53:53.623 回答
0

我还将 Bobo Browse 与 Hibernate Search 结合使用。我也有定期更新和只读问题的问题。Bobo 并不是最简单的库,我已经多次研究与 Hibernate Search 集成的方法,但由于复杂性而放弃了。

我使用索引的定时重新加载来确保新鲜度,但这会产生大量要收集的垃圾。Lucene 随着时间的推移优化了重新打开索引阅读器的过程,但 Bobo 团队并没有真正专注于支持这一点。 https://linkedin.jira.com/browse/BOBO-31描述了这个问题。

Hibernate Search 基础架构应该提供足够的集成灵活性。Zoie 是一个像 Hibernate Search 一样的实时索引系统,集成了 Bobo https://linkedin.jira.com/wiki/display/BOBO/Realtime+Faceting+with+Zoie或许它可以激发你的努力

于 2013-02-15T16:23:49.723 回答