【问题标题】:Extend JackRabbit or build up from Lucene?扩展 JackRabbit 还是从 Lucene 构建?
【发布时间】:2010-01-26 06:09:38
【问题描述】:

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

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

澄清:

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

【问题讨论】:

    标签: java grails groovy lucene jackrabbit


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • 我试图澄清我的问题,主要问题是关于 JackRabbit vs Lucene。对于这个 groovy 问题,只需仔细检查一下 JackRabbit 或 Lucene 都没有问题。
      【解决方案3】:

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

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

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

      【讨论】:

      • 那么有一种方法可以使作为元数据的子节点有效地提升搜索中的父节点吗?
      【解决方案4】:

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

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

      它还可以让你编写jsp、esp、groovy、...

      【讨论】:

      • 听起来很有趣,它是如何影响搜索结果的?
      • 我认为您不需要为此扩展 Jackrabbit/Lucene。我可能会在名为“my:score”的项目上添加一个属性,每次留下一些积极的反馈时,我都会增加值。然后我会做一个标准查询并按“my:score”降序排列项目。为了保持快速,您可能必须为“my:score”属性创建一个索引。
      猜你喜欢
      • 1970-01-01
      • 2019-05-30
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-28
      相关资源
      最近更新 更多