search - Lucene中同一存储位置上的多个索引器

标签 search solr lucene scalability elasticsearch

我想构建一个高度可扩展的应用程序,并打算将Lucene用作我的搜索引擎库。在浏览文档和常见问题时,我意识到通过在索引目录中创建一些write.lock,它只允许在存储位置打开一个索引编写器。我们可以在该索引上打开多个IndexReader。

我对建立一个体系结构感兴趣,在该体系结构中,有许多索引器运行在不同的机器/服务器上,并且多个搜索器在这些索引器创建的索引上回答各种类型的查询。搜索器和索引器都将在不同的计算机上运行。

在这种情况下,最好让多个索引器使用相同的索引存储位置来索引文档。如何实现呢?我应该使用NFS(网络文件系统)之类的东西吗? Solr或Lucene之上的其他框架是否已解决了此问题?我想到的一个显而易见的解决方案是为每个索引器创建一个索引,然后要求搜索者跨多个索引目录进行查询。但是,这些将导致创建大量不同的索引目录,与创建索引服务器的数量一样多,我猜这不是很理想。我想要(索引目录数)<<(索引器数)<(搜索者数)

在这种情况下,我有哪些其他选择?

最佳答案

首先:切勿将NFS与Lucene一起使用,因为它速度慢且危险。

如果涉及到可扩展性和高可用性,我建议您让Elasticsearch为您完成所有艰苦的工作,以便您可以专注于数据。您当然可以有多个线程为数据建立索引。

如果您想进一步了解elasticsearch的分布式性质,建议您看看this video

关于search - Lucene中同一存储位置上的多个索引器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12179069/

相关文章:

使用自联接搜索多值字段

mongodb - 使用 MongoDB 在 Grails 应用程序上运行基于 Lucene 的搜索

java - 为什么 Web 应用程序的 Solr 搜索引擎在搜索 ‘Java Spring’ 时会返回 ‘Spring Fertility’ 结果?如何解决这个问题?

ruby-on-rails - 将 SOLR/Lucene 搜索与 Rails 应用程序集成 - 哪些 gem ?提示?

java - Lucene - 无法导入 EnglishAnalyzer

javascript - 阿尔戈利亚即时搜索 : filter by specific facet

php - 将命名参数与 PDO 一起用于 LIKE

python - 向 Django 应用程序添加简单搜索

ios - 按名称搜索核心数据用户

ruby-on-rails - sunspot_rails 保存后不重新索引模型