我可能正在构建一个Java servlet应用程序,它需要集成一个非常简单的Lucene索引。该索引只能在单个字段上搜索,然后我想将结果发回,可能是XML,也许是JSON,但在这一点上并不重要。主要的是索引本身不是问题。Lucene和servlet集成
我的问题是如何将这两者结合起来。我的倾向是从servlet应用程序的体裁上访问索引,因此我会运行它并将其存储在ServletContextListener中。然后,我可以构建一个相当简单的控制台来打开和关闭搜索服务。我还可以有一个应用程序来处理请求,并定期重建索引,然后交换新的索引以取代旧索引。出现的一个潜在问题是,如果/当索引被换出时,如何让servlet行为并等待一点。它应该不到一秒钟,我可以在凌晨2点这样做,但我仍然希望它尽可能地防弹。如果一个servlet向一个服务发出请求并且需要等待,那么涉及到什么样的超时?我在哪里/如何控制这个?
其他可能性是将索引作为独立的Java应用程序运行,或者在单独的servlet应用程序中运行索引,并让第一个应用程序通过servlet对其进行http调用。在最后一种方法中,我没有看到很多好处,它只是增加了更多的代码,而这些代码并没有真正起到任何作用。搜索请求无法直接从HTTP访问。
你的想法是什么?我很欣赏沿着这条线路经历过的任何人的意见。
你为什么要定期重建索引?为什么不按照需要添加文档? –
我需要每周清洁数据集。如果记录不在新的供稿中,则不应该在索引中。只是一个业务需求。 – dnuttle
所以,你基本上正在努力解决切换应用程序以在不同的索引(切换文件名)中进行查找的时间,一周一次? –