【发布时间】:2013-10-08 05:42:50
【问题描述】:
我是 Lucene 的新手,并试图用它来搜索由 SystemA 生成的日志文件/条目。
架构
接收 INPUT 目录中的每个日志条目(即 XML)。 SystemA 将日志条目发送到一个 MQ 队列,该队列由一个小实用程序轮询,该实用程序选择消息并在 INPUT 目录中创建一个文件。
WriteIndex.java(即 IndexWriter/Lucene)不断检查 INPUT 目录中是否收到新文件。如果是,则获取文件,放入索引并将文件移动到 OUTPUT 目录。作为索引的一部分,我将文件名、路径、时间戳、内容放入索引中。 “注意:我在 Content 上创建索引,并将整个 Content 作为 StringField。”
SearchIndex.java(即 SeacherManager/Lucene/refereshIfChanged)已创建。作为创建的一部分,我也开始了一个新线程,如果索引没有更改,则每 1 分钟检查一次。我为每个请求获取 IndexSearcher。它工作正常。
到目前为止一切都很好。但是我不确定在生产中会发生什么,因为我已经对几百个文件进行了测试,但是在生产中,我每天将获得 500K 日志条目,这意味着 500K 小文件,每个文件都有一个 XML。每当收到新文件时,“WriteIndex.java”必须不停地运行以更新索引。
我有以下问题
有人做过类似的工作吗?我应该遵循的任何问题/最佳实践。
您是否发现为如此大量的 xml 文件生成的索引文件有任何问题。每个 XML 文件最大为 2KB。请记住,我正在对内容进行索引,并将内容作为字符串放入索引中,这样每当我在搜索时发现索引匹配时,我就可以从索引中检索。
我会将 SearchIndex.java 公开为 Servlet,以允许管理员访问网页并搜索日志条目。您发现它有什么问题吗?
如果有人需要任何特定的东西,请告诉我。
谢谢, 罗希特·戈亚尔
【问题讨论】:
-
这里一题三题复杂。很难为这样的事情写一个有用的答案。
-
如果您需要,我可以分享更多信息。
-
我正在寻找的用于合并段的代码之一。每次添加和索引新文件时,我都可以看到在索引目录中创建了段和其他文件。我可以以某种方式合并这些段吗?
标签: lucene