【发布时间】:2020-09-15 19:05:24
【问题描述】:
我们正在致力于无头应用程序的设计和开发。目前,我们面临**architectural question**,我们需要找到答案才能继续设计系统,我们不是**search engine**的专家,但我们正在研究这方面。
我们的技术stack is .net Core/SQL Server 未来我们可能会plan to use Raven DB.
我们计划不使用内容交付 API,而是使用Query based content delivery 使其更加灵活,并减少每个前端框架的 API 开发开销。我们决定对大部分数据管理使用索引和索引,即减少数据库负载。所以基本上大部分内容操作都会使用索引来处理。
我们在搜索引擎中观察到的问题:
在第一次剪辑时,我们计划使用Elastic Search,但我们再次理解了以下issues。
系统将有一个dynamic field management and field data management,即用户将在系统运行时编辑字段和字段值。每次我们可能需要重建索引以更新弹性搜索中的字段(我们不是搜索引擎专家),这会增加网络负载,这对于我们在大型多租户环境中操作可能不可行。
所以我们decided to go with Lucene.net,但在继续lucene.net 之前,我们要确保可以解决以下问题。
动态更新字段而不每次都重新构建索引,lucene 是否支持这一点,或者我们可以自定义来管理它吗?
第二个问题是使用分布式架构为每个租户管理单独的索引。
我们计划为生产中的每个租户建立一个分区,这样数据就不会位于单个索引中。这是因为我们不需要在 Web 服务器上放置高负载来管理基于权限的查询结果,相反,Lucene 会这样做。所以对于任何查询结果都将根据查询它的用户的权限返回,因此最好为每个租户建立单独的索引以减少操作。
是否可以通过为每个租户专门设置一个分区来实现分布式 Lucene?
请帮助我们为我们目前面临的上述两个问题找到解决方案。
【问题讨论】:
标签: elasticsearch search-engine lucene.net search-engine-api