Indexing Lucene索引复制

Indexing Lucene索引复制,indexing,lucene,replication,Indexing,Lucene,Replication,在一个负载平衡的环境中,我有一个独立的Java线程(为了简单起见,基本上是通过一个spring启动jar,我们称之为Project 1),它读取一些元数据并在某个位置更新lucene索引 然后是一个实际的web应用程序(项目2),我想通过它查询这些索引(另一个项目1已经创建了这些索引)。但是,对于索引文件,有哪些可用选项: 定期将索引文件复制到web应用程序的lucene,这是不可能的,因为我们可能需要重新启动我信任的应用程序 在war中将两个项目作为一个包进行维护,这样两个项目都可以使用luc

在一个负载平衡的环境中,我有一个独立的Java线程(为了简单起见,基本上是通过一个spring启动jar,我们称之为Project 1),它读取一些元数据并在某个位置更新lucene索引

然后是一个实际的web应用程序(项目2),我想通过它查询这些索引(另一个项目1已经创建了这些索引)。但是,对于索引文件,有哪些可用选项:

  • 定期将索引文件复制到web应用程序的lucene,这是不可能的,因为我们可能需要重新启动我信任的应用程序
  • 在war中将两个项目作为一个包进行维护,这样两个项目都可以使用lucene的单个实例
  • 还有其他复制策略吗
  • 如有任何上述帮助,将不胜感激。 最好的
    -Vaibhav

    这实际上取决于应用程序的非功能性需求以及它们驱动的任何给定体系结构决策

    但这里有一些想法:

    • 将一个索引从folderA复制到folderB听起来是个非常糟糕的主意。特别是如果两个应用程序都必须一直运行

    • 您不希望这两个应用程序之间存在直接依赖关系,因此必须构建自己的lucene组件,该组件为您需要的API功能提供服务

    • 我建议使用适当的API构建一个组件。这个组件使用lucene作为库,如果有多个系统或实例想使用这个组件,我建议使用lucene的一个很好的NRT(近实时)实现


    为什么两个应用程序不能共享一个位置?有什么具体的原因吗?因为它们都在各自的上下文中运行,因此在一个时间点上只有一个可以访问索引文件,下面是quora中有人引用的类似问题:我不理解上下文部分,对我来说,它只是磁盘上的一个外部目录,为什么两个应用程序不能共享它?这只是目录包含lucene数据的情况,但目录绑定到一个应用程序对我来说没有意义。两个应用程序都写还是只写一个?