【问题标题】:Storing data in Lucene or database将数据存储在 Lucene 或数据库中
【发布时间】:2010-09-20 13:36:46
【问题描述】:

我是 Lucene 新手,正在考虑使用它来索引 RSS 提要的标题和描述元素中的单词,以便我可以记录提要中最流行单词的计数。

需要各种搜索选项,其中一些将由用户手动输入关键字,而在其他情况下,系统会自动生成热门术语。所以我可以让 Lucene 使用查询字符串来返回手动输入的关键字的命中计数和自动案例中的 TermEnums?

系统还需要能够处理来自提要的新数据,因为它们会定期轮询。

现在,我可以使用 Java 中的 hashmaps 来计算计数,但如果我使用 Lucene,我的问题是存储用于计数的单词的最佳方式。要获取单个 RSS 提要,让 Lucene 在内存中创建一个临时索引,并传递单词和命中计数以便其他程序可以将它们写入数据库是否明智?

还是为每个提要创建一个 Lucene 文档并在轮询时向其中添加新提要数据更好?因此,如果在日期 x 和 y 之间需要关键字计数,Lucene 可以返回这些值吗?这意味着我可以为我不确定的 Lucene 条目添加日期戳。

希望这是有道理的。

摩根先生。

【问题讨论】:

    标签: java lucene


    【解决方案1】:

    根据您在问题中给出的描述,我认为仅 Lucene 就足够了。 (不需要 MySQL 或 Solr)。 Lucene API 也易于使用,您无需更改前端代码。

    从每个 RSS 提要中,您可以创建一个具有三个 fieldsDocument;即标题、描述和日期。日期最好是NumericField。然后,您可以在提要到达时将每个文档附加到 lucene 索引。

    您希望系统多久自动生成一次热门词汇?例如。您想向用户展示“上周最热门的术语”等吗?如果是这样,那么您可以使用NumericRangeFilter 有效地搜索您存储的日期字段。一旦您获得满足日期范围的文档,您就可以在检索到的文档中找到每个术语的文档频率,以找到最流行的术语。 (不要忘记从您的文档中删除停用词(比如使用StopAnalyzer),否则最流行的术语将是停用词)

    【讨论】:

    • 这个问题目前是开放的,因为我玩了几天 MySQL 的 Lucene。但你的建议很好。
    【解决方案2】:

    我可以建议您查看 Apache Solr。简而言之,Solr 是一个支持 Web 的 Lucene 前端,它简化了集成并提供了增值功能。具体来说,数据导入处理程序使更新/添加新内容到您的 Lucene 索引变得非常简单。

    此外,对于您所询问的字数统计功能,Solr 有一个“分面”概念,这将完全符合您所描述的问题。

    如果您已经熟悉 Web 应用程序,我肯定会考虑:http://lucene.apache.org/solr/

    【讨论】:

    • 我的一个问题是我没有时间真正详细地学习 Lucene 或 Solr。所以我很想快速简单的解决方案。因此,我对仅使用 Lucene 来计算单词的评论 - 大多数数据将存储在数据库中以供应用程序的其他部分使用。
    【解决方案3】:

    Solr 绝对是要走的路,尽管我会警告不要在 Windows 上将它与 Apache Tomcat 一起使用,因为安装过程是一场血腥的噩梦。如果您愿意,我们非常乐意指导您完成它,因为我现在已经完美运行了。

    您还可以考虑 MySQL 的全文索引功能,Lucene 更容易。

    问候

    【讨论】:

    • 感谢您的建议,我正在 Windows 上使用 Tomcat。我有 Java hashmap 程序,可以从 RSS 提要中进行字数统计,而且速度很快。但是我听说过有关 MySQL 中全文索引的坏消息(我也在使用它),因此来到 Lucene。但我看到自己使用了两者的混合体。 Lucene 驱动来自 RSS 提要的单词和计数的索引,然后将其写入 MySQL(我不喜欢将大型 Lucene 索引缓存到文件系统并更新它们的想法),并通过 MySQL 进行全文索引以搜索标签。
    • @Morgan:为什么不想存储 Lucene 索引? Lucene 索引不会占用比使用 MySQL 创建的数据库更多的空间。此外,在 Lucene 中检索(即搜索)要快得多。您还可以利用 Lucene 中的各种评分机制来更好地回答用户查询。除非你有非常具体的理由使用 MySQL,否则我认为你应该使用 Lucene 索引。
    猜你喜欢
    • 1970-01-01
    • 2012-04-15
    • 2010-10-05
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 2011-06-17
    相关资源
    最近更新 更多