我对运行在Windows集群中的应用程序运行Lucene.NET感兴趣。搜索问题本身相当小,但是仍然需要处理无状态/集群问题。
我理解SOLR处理我的场景(以及更多),但是需要一个servlet容器(和Java)给我带来了一些问题。但是,取决于基于Lucene.NET的方法的复杂性,它可能仍然是一个小选项。
我现在的问题是,我有哪些选项可以处理在多个主机上运行的问题:
当实验一个本地版本时,我的Lucene目录大约是几百个megs。从长远来看,我可以看到1-5 GB。如果更新的频率是一个困难,我可以相当灵活地控制这一点。并行读取/搜索负载预计将非常适中。
发布于 2013-10-04 12:36:29
您可以在多个服务器上使用lucene.net,但必须实现索引服务器。
您所做的所有更改都应该排队,并不时地对挂起的文档进行索引。此外,如果x项在队列中,则应立即进行索引(x取决于您的合并文档设置--这对我来说是25,000 )。
上面的理由是,您需要避免对索引进行小的更改,因为这将降低性能超时,因为创建了许多小文件。Uou可以运行2个索引服务器,但是一次只有一个索引,因为锁定了索引,这样做的唯一原因是如果第一个索引失败了,则取决于您的需要。
我使用了一个15 an的索引,有3000万条记录。我对这件事的看法是天蓝色的。
用于索引的
每15分钟推送一次更改,索引按25,000次更改合并,每个合并索引包含250,000份文件。每个web服务器每15分钟检查一次blob存储,并锁定索引阅读器,如果下载了更改,则索引读取器无效。每个文件的最大文档基本上是停止web服务器下载许多以前的更改。
首先,我确实使用了Lucene.AzureDirectory,但在blob存储中检测更改的blob并不可靠,所以我最终迭代了blob,并在本地进行比较,并根据需要下载。
现在我还会再实现这样的东西吗?答案是很大的否定。我会使用elasticsearch或solr代替,因为您正在重新发明车轮。
https://stackoverflow.com/questions/9019774
复制相似问题