繁体   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