在Lucene或数据库中存储数据

时间:2010-09-20 13:36:46

标签: java lucene

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

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

系统还需要能够定期处理来自Feed的新数据。

现在,我可以使用Java中的哈希映射来计算很多/所有这些,但是如果我使用Lucene,我的问题就是存储计数字的最佳方法。要获取单个RSS提要,让Lucene在内存中创建临时索引是明智的,并传递单词和命中计数,以便其他程序可以将它们写入数据库?

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

希望这是有道理的。

摩根先生。

3 个答案:

答案 0 :(得分:2)

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

从每个RSS Feed中,您可以创建一个Document,其中包含三个fields;即标题,描述和日期。日期最好为NumericField。然后,您可以在Feed到达时将每个文档附加到lucene索引。

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

答案 1 :(得分:0)

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

此外,对于您要问的单词计数功能,Solr有一个“刻面”概念,它将完全符合您所描述的问题。

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

答案 2 :(得分:0)

Solr绝对是走的路,虽然我会警告不要在Windows上使用Apache Tomcat,因为安装过程是一场血腥的噩梦。如果您愿意的话,我很乐意引导您完成它,因为我现在已经完美地工作了。

您可能还会考虑MySQL的全文索引功能,Lucene要容易得多。

此致