关于Lucene 4.4(日志搜索)的建议



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

建筑

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

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

  3. 搜索索引.java(即。SeacherManager/Lucene/refereshIfChanged(被创建。作为创建的一部分,我也启动了一个新线程,该线程每 1 分钟检查一次索引是否未更改。我为每个请求获取 IndexSearcher。它工作正常。

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

我有以下问题

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

  2. 您是否看到为如此大量的 xml 文件生成的索引文件有任何问题。每个 XML 文件的最大大小为 2KB。请记住,我正在对内容编制索引,并将内容作为字符串放入索引中,以便每当我在搜索时发现索引上的匹配项时,我都可以从索引中检索。

  3. 我将公开SearchIndex.java作为Servlet,以允许管理员进入网页并搜索日志条目。您看到任何问题吗?

如果有人需要任何具体的东西,请告诉我。

谢谢罗希特·戈亚尔

架构看起来不错。

几件事

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

最新更新