围绕Lucene 4.4的建议(日志搜索)

时间:2013-10-08 05:42:50

标签: lucene

我是Lucene的新手,并尝试用它来搜索SystemA生成的日志文件/条目。

建筑

  1. 接收INPUT目录中的每个日志条目(即XML)。 SystemA将日志条目发送到MQ队列,该队列由小实用程序轮询,该实用程序选择消息并在INPUT目录中创建文件。

  2. WriteIndex.java(即IndexWriter / Lucene)继续检查INPUT目录中是否收到新文件。如果是,则接受文件,放入索引并将文件移动到OUTPUT目录。作为索引的一部分,我将文件名,路径,时间戳,内容放在索引中。 "注意:我正在创建内容索引以及将整个内容整合为StringField。"

  3. 创建了SearchIndex.java(即SeacherManager / Lucene / refereshIfChanged)。作为Creation的一部分,我开始了一个新的线程,如果Index已经改变,则每1分钟检查一次。我为每个请求获得了IndexSearcher。它工作正常。

  4. 到目前为止,一切都很好。但是我不确定在生产中会发生什么,因为我已经测试了几百个文件但是在生产中,我将在一天内获得500K日志条目,这意味着500K小文件,每个都有XML。 " WriteIndex.java"每当收到新文件时,都必须不间断地运行以更新索引。

    我有以下问题

    1. 有人做过类似的工作吗?我应该遵循的任何问题/最佳实践。

    2. 您是否发现为此类大量xml文件生成的索引文件存在任何问题。每个XML文件最大为2KB。请记住,我正在索引内容以及将内容作为String放在索引中,以便每当我在搜索时找到索引匹配时我都可以从索引中检索。

    3. 我会将SearchIndex.java公开为Servlet,以允许管理员加入WebPage并搜索日志条目。你看到的任何问题吗?

    4. 如果有人需要任何具体内容,请告诉我。

      谢谢, Rohit Goyal

1 个答案:

答案 0 :(得分:0)

架构看起来很好。

很少有事情

  • 考虑使用TextField而不是StringField。 TextField将被标记化,因此用户可以搜索令牌。 StringField未被标记化,因此要使文档与搜索匹配,全文应匹配。
  • lucene的性能没问题。查看Lucene性能图表。 Lucene可以在几分钟内生成超过十亿个维基百科文档的索引。搜索也很快。