1
6
最好的解决方案似乎是将两台服务器上的文档索引到它们自己的索引副本中。 如果您担心索引在一台服务器上成功而在另一台服务器上失败,那么您需要跟踪每台服务器的成功/失败,以便在问题解决后重新尝试失败的文档。这种跟踪将在Lucene之外的任何系统中进行,您使用这些系统来呈现要索引到Lucene的文档。根据索引的完整性对您有多重要,您可能还必须从正在使用的任何负载平衡器中删除发生故障的服务器,直到问题得到解决,并且索引已重新处理任何未完成的文档。 |
2
1
+肖恩·卡彭特的答案是1。在两台服务器上建立索引似乎是最明智和最安全的选择。 如果要索引的文档很复杂(Word/PDF和排序),可以在单个服务器上执行一些预处理,然后将其提供给索引服务器,以节省一些处理时间。
我以前使用过的解决方案包括在一台服务器上创建一个索引块,然后
|
3
1
在Java世界中,我们通过在索引前面放置一个MQ来解决这个问题。只有当从队列中提取的bean成功时,插入才完成,否则它只是回滚它所采取的任何操作,并在文档上标记为挂起,稍后再试。 |
4
1
我知道这是一个古老的问题,但我只是遇到了这个问题,我想给其他人2美分,以寻求关于多服务器实现的建议。 为什么不将索引文件保存在共享的NAS文件夹上?它与将索引存储在您正在考虑的数据库中有什么不同?可以复制数据库以获得高可用性,也可以复制为NAS! 我将配置负载均衡器后面的两个应用服务器。任何传入的索引请求都将为NAS上特定于计算机的文件夹中的文档编制索引。也就是说,NAS上的索引与应用服务器上的索引一样多。当一个搜索请求出现时,您将使用Lucene进行多索引搜索。Lucene内置了构造(多搜索器)来实现这一点,而且性能仍然很好。 |
5
0
我们保持负载平衡服务器同步的方法是在其他服务器上执行任务,每5分钟运行一次,命令每个负载平衡服务器将其索引更新到某个时间戳。 例如,该任务向所有负载平衡服务器发送时间戳“12/1/2013 12:35:02.423”(该任务通过querystring将时间戳提交到每个负载平衡网站上的一个网页),然后每个服务器使用该时间戳查询数据库中自上次更新到该时间戳后发生的所有更新,并且U更新他们的本地Lucene指数。 每个服务器还将时间戳存储在数据库中,因此它知道每个服务器上次更新的时间。因此,如果服务器脱机,当它重新联机时,下次收到时间戳命令时,它将获取脱机时丢失的所有更新。 |
vishnu · 内存索引和lucene文件索引有什么区别? 6 年前 |
Fabio B. · 如何在Solr中排序/增强产品搜索结果 6 年前 |
Alex Torrisi · 文档中短语查询匹配数 6 年前 |
NoName2 · 平均结果的弹性Luence查询 6 年前 |
hayfreed · Lucene API查询始终返回第一个字典结果 6 年前 |