2

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

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

澄清:

我想根据项目的平均用户评分来提升项目,JackRabbit 是否足够开放或可扩展,以便我可以捕获用户评分然后对 JackRabbit 中的索引产生影响,或者它是否远离 JackRabbit I 的核心应该从 Lucene 构建?

4

4 回答 4

2

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

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

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

于 2010-02-01T01:33:56.960 回答
1

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

并不真地。您可能已经知道,您可以将任何 Java 库与 Groovy/Grails 一起使用,因此您可以在 Java 中做任何在 Groovy 中做不到的事情。虽然相反也是如此,但根据我的经验,在 Java 中完成工作需要更多(样板)代码。

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

至于你应该使用 Lucene/Searchable 还是 JackRabbit,如果不知道你能实现什么,很难说。到目前为止,您告诉我们的只是您想要索引文档并提升索引中的某些项目。您当然可以使用 Lucene 完成这两项工作。

于 2010-01-26T15:59:36.833 回答
1

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

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

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

于 2010-01-26T17:07:05.803 回答
1

我建议你使用Apache Sling,它内置了 Jackrabbit/Lucene。大多数提交者也参与了 Jackrabbit,因此它被设计为可以很好地与它配合使用——甚至更好的是,它被设计为在它之上运行。

Sling 的优点之一是它将整个 JCR 存储库安装在 URL 空间中,并通过 REST 端点公开它。因此,您可以通过对它进行简单的 HTTP 请求来非常轻松地访问您的文档/元数据。它还允许您编写自己的 servlet 并将它们公开为 REST 端点。(这非常简单——无需摆弄 applicationContext.xml 文件,只需 1 个注释)

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

于 2010-02-13T12:18:06.977 回答