扩展JackRabbit还是从Lucene扩展?

时间:2010-01-26 06:09:39

标签: java grails groovy lucene jackrabbit

我一直在研究一个网站的想法,一般的概念是文档的全文搜索,也允许基于这些评级的用户评级我想提高Lucene索引中的项目值。但我试图找出是否应该扩展JackRabbit或者只是从Lucene基础构建。有没有什么好方法可以用这种方式扩展JackRabbit并影响索引,还是最好直接在Lucene上工作?

无论哪种方式,我都非常倾向于使用可搜索插件的grails上使用groovy或直接使用JackRabbit工作是否有任何主要原因我应该坚持使用Java?

澄清:

我想基于项目的平均用户评分来提升项目,JackRabbit是否足够开放或可扩展到我可以捕获用户评级然后在JackRabbit中对索引产生影响还是远远超出核心范围JackRabbit我应该从Lucene那里建立起来吗?

4 个答案:

答案 0 :(得分:2)

我建议使用JCR,背后是Jackrabbit的实现。 JCR允许您分隔存储内容和存储方式。

通过保持在JCR框架内,您应该能够轻松地在JCR实现之间切换。 (有几个,不仅仅是Apache的。)即使在Jackrabbit内也有许多持久性管理者,而不仅仅是Lucene。当您想要在存储空间和性能之间进行权衡时,这种灵活性非常有用。

JCR已包含全文搜索和维护用户评级的功能。它应该非常适合您的项目。

答案 1 :(得分:1)

  

我应该坚持使用Java吗?

不是真的。您可能已经知道,您可以使用任何带有Groovy / Grails的Java库,因此您无法在Java中执行任何在Groovy中无法执行的操作。虽然情况恰恰相反,但根据我的经验,需要更多(样板)代码来完成Java中的工作。

虽然Java比Groovy快得多,但这并不一定意味着如果用Java编写应用程序会更快,因为瓶颈可能是数据库而不是代码执行。

至于你是否应该使用Lucene / Searchable或JackRabbit,在不了解你可以实现的目标的情况下很难说。到目前为止,您所告诉我们的只是您希望索引文档并增加索引中的某些项目。你当然可以和Lucene一起做这两件事。

答案 2 :(得分:1)

我建议在Lucene之上使用JCR / Jackrabbit有几个原因:

1)您的存储库结构可以轻松支持具有子节点的文档节点,这些节点存储您的所有元数据,包括所有者,评级,标记,评论等。

2)JCR非常适合基于文档/节点的应用程序开发,在框架级别提供了大量繁重工作,同时不会妨碍应用程序级别。

答案 3 :(得分:1)

我建议你使用Apache Sling,内置Jackrabbit / Lucene。 大多数提交者也参与了Jackrabbit,所以它的设计与它一起工作得更好 - 更好的是,它被设计为在它上面运行。

Sling的一个很好的功能是它将整个JCR存储库安装在URL空间中并通过REST端点公开它。 因此,您可以通过向其发送简单的HTTP请求,轻松访问您的文档/元数据。它还允许您编写自己的servlet并将它们公开为REST端点。 (这非常简单非常容易 - 没有摆弄applicationContext.xml文件,只需1个注释)

它还允许你编写jsp,esp,groovy,...