Java 扩展JackRabbit还是从Lucene建立?

Java 扩展JackRabbit还是从Lucene建立?,java,grails,groovy,lucene,jackrabbit,Java,Grails,Groovy,Lucene,Jackrabbit,我一直在研究一个网站理念,总体概念是对文档进行全文搜索,也允许用户根据这些评分进行评分。我想提高项目在Lucene索引中的价值。但我想知道我是应该扩展JackRabbit还是从Lucene基地开始建造。有没有什么好方法可以通过这种方式扩展JackRabbit并影响索引,或者最好直接使用Lucene 无论我走哪条路,我都强烈倾向于在grails上使用groovy和可搜索的插件,或者直接与JackRabbit一起工作。有什么主要原因让我坚持使用Java吗 澄清: 我想根据一个项目的平均用户评分提升一

我一直在研究一个网站理念,总体概念是对文档进行全文搜索,也允许用户根据这些评分进行评分。我想提高项目在Lucene索引中的价值。但我想知道我是应该扩展JackRabbit还是从Lucene基地开始建造。有没有什么好方法可以通过这种方式扩展JackRabbit并影响索引,或者最好直接使用Lucene

无论我走哪条路,我都强烈倾向于在grails上使用groovy和可搜索的插件,或者直接与JackRabbit一起工作。有什么主要原因让我坚持使用Java吗

澄清:

我想根据一个项目的平均用户评分提升一个项目,JackRabbit是否足够开放或可扩展,我可以捕获用户评分,然后在JackRabbit内影响索引,还是它远离JackRabbit的核心,我应该从Lucene开始建立

我应该坚持使用Java有什么主要原因吗

不是真的。正如您可能已经知道的那样,您可以将任何Java库与Groovy/Grails一起使用,因此在Java中没有什么是Groovy无法做到的。尽管事实也恰恰相反,但根据我的经验,用Java完成事情需要更多的样板代码

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


至于你是应该使用Lucene/Searchable还是JackRabbit,如果不知道你能实现什么,很难说。到目前为止,您告诉我们的是,您希望为文档编制索引,并增加索引中的某些项。你当然可以用Lucene来做这两件事。

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

1您的存储库结构可以随时支持文档节点和子节点,这些子节点存储您的所有元数据,包括所有者、评级、标记、注释等


2 JCR是基于文档/节点的应用程序开发的理想选择,它在框架级别提供了大量繁重的工作,而在应用程序级别不妨碍您的工作。

我建议使用JCR,并在其背后实现Jackrabbit。JCR允许您区分存储内容和存储方式

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


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

我建议您使用,它内置了Jackrabbit/Lucene。 大多数提交者也与Jackrabbit有关,因此它被设计为能够很好地与它一起工作——甚至更好的是,它被设计为在它之上运行

Sling的一个很好的特性是,它将整个JCR存储库装载在URL空间中,并通过REST端点公开它。 因此,通过对文档/元数据执行简单的HTTP请求,您可以非常轻松地访问它。它还允许您编写自己的servlet并将其公开为REST端点。这非常简单-不需要摆弄applicationContext.xml文件,只需1个注释


它还允许您编写jsp、esp、groovy等等

我试图澄清我的问题,主要问题是关于JackRabbit vs Lucene。对于groovy问题,只是反复检查JackRabbit或Lucene都没有问题。因此,有一种方法可以使作为元数据的子节点有效地提升搜索中的父节点?听起来很有趣,它如何让您影响搜索结果?我认为您不需要为此扩展JackRabbit/Lucene。我可能会在项目上添加一个名为“my:score”的属性,每次留下一些积极反馈时,我都会增加值。然后,我将执行一个标准查询,并按“my:score”降序排列项目。为了保持速度,您可能必须为“my:score”属性创建一个索引。