我们正在致力于无头应用程序的设计和开发。目前,我们面临着一个**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 实现?
因此,请帮助我们找到解决我们目前面临的上述两个问题的方法。