首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lucene.NET集群的选项?

Lucene.NET集群的选项?
EN

Stack Overflow用户
提问于 2012-01-26 14:39:50
回答 1查看 765关注 0票数 7

我对运行在Windows集群中的应用程序运行Lucene.NET感兴趣。搜索问题本身相当小,但是仍然需要处理无状态/集群问题。

我理解SOLR处理我的场景(以及更多),但是需要一个servlet容器(和Java)给我带来了一些问题。但是,取决于基于Lucene.NET的方法的复杂性,它可能仍然是一个小选项。

我现在的问题是,我有哪些选项可以处理在多个主机上运行的问题:

  • 在共享存储上持久化,对所有节点都是公共的吗?Lucene.NET会透明地处理并发性吗?服务器会使用内存进行缓存吗?如果是这样的话,Lucene.NET将根据更新的文件Lucene.NET处理此文件的无效。每个服务器都有自己需要的所有内容的副本。在任何更新中,所有服务器都会得到一个新的副本(如果这相当简单的话,也可以使用diff )。这方面的现有工具,还是由我来进行handle?
  • Workload分区/分片?每个服务器只处理自己的数据,用于读取和更新。用于处理此问题、加入部分结果等的工具?
  • -我在初始的
  • 中可能遗漏了其他选项。

当实验一个本地版本时,我的Lucene目录大约是几百个megs。从长远来看,我可以看到1-5 GB。如果更新的频率是一个困难,我可以相当灵活地控制这一点。并行读取/搜索负载预计将非常适中。

EN

回答 1

Stack Overflow用户

发布于 2013-10-04 12:36:29

您可以在多个服务器上使用lucene.net,但必须实现索引服务器。

您所做的所有更改都应该排队,并不时地对挂起的文档进行索引。此外,如果x项在队列中,则应立即进行索引(x取决于您的合并文档设置--这对我来说是25,000 )。

上面的理由是,您需要避免对索引进行小的更改,因为这将降低性能超时,因为创建了许多小文件。Uou可以运行2个索引服务器,但是一次只有一个索引,因为锁定了索引,这样做的唯一原因是如果第一个索引失败了,则取决于您的需要。

我使用了一个15 an的索引,有3000万条记录。我对这件事的看法是天蓝色的。

用于索引的

  • 1工作者角色更改
  • 2-20个web角色,为每个内容提供索引。

每15分钟推送一次更改,索引按25,000次更改合并,每个合并索引包含250,000份文件。每个web服务器每15分钟检查一次blob存储,并锁定索引阅读器,如果下载了更改,则索引读取器无效。每个文件的最大文档基本上是停止web服务器下载许多以前的更改。

首先,我确实使用了Lucene.AzureDirectory,但在blob存储中检测更改的blob并不可靠,所以我最终迭代了blob,并在本地进行比较,并根据需要下载。

现在我还会再实现这样的东西吗?答案是很大的否定。我会使用elasticsearch或solr代替,因为您正在重新发明车轮。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9019774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档