我是 Lucene 的新手,并试图用它来搜索由 SystemA 生成的日志文件/条目。
建筑学
接收输入目录中的每个日志条目(即 XML)。SystemA 将日志条目发送到一个 MQ 队列,该队列由一个小实用程序轮询,该实用程序选择消息并在 INPUT 目录中创建一个文件。
WriteIndex.java(即IndexWriter/Lucene)不断检查INPUT 目录中是否收到新文件。如果是,则获取文件,放入索引并将文件移动到 OUTPUT 目录。作为索引的一部分,我将文件名、路径、时间戳、内容放入索引中。“注意:我正在为内容创建索引,并将整个内容作为字符串字段。”
SearchIndex.java(即 SeacherManager/Lucene/refereshIfChanged)被创建。作为创建的一部分,我也开始了一个新线程,如果索引没有更改,则每 1 分钟检查一次。我为每个请求获取 IndexSearcher。它工作正常。
到目前为止一切都很好。但是我不确定在生产中会发生什么,因为我已经对几百个文件进行了测试,但是在生产中,我每天将获得大约 500K 的日志条目,这意味着 500K 的小文件,每个文件都有一个 XML。每当收到新文件时,“WriteIndex.java”必须不停地运行以更新索引。
我有以下问题
有人做过类似的工作吗?我应该遵循的任何问题/最佳实践。
您是否看到为如此大量的 xml 文件生成的索引文件有任何问题。每个 XML 文件最大为 2KB。请记住,我正在对内容进行索引,并将内容作为字符串放入索引中,这样每当我在搜索时发现索引匹配时,我就可以从索引中检索。
我会将 SearchIndex.java 公开为 Servlet,以允许管理员访问网页并搜索日志条目。你看到它有什么问题吗?
如果有人需要任何具体的东西,请告诉我。
谢谢,罗希特戈亚尔