用于可扩展全文搜索的分布式 Lucene
Apache Lucene 是非常流行的免费开源全文搜索引擎,最初用 Java 编写,但也移植到 .NET。 Lucene 是一个独立的库,应用程序嵌入它以执行全文搜索。
NCache 已在 .NET 中通过其内存中分布式缓存(因此称为分布式 Lucene)以本机形式实现了 Lucene API。 这已经将独立的 Lucene 转变为一个非常快速和线性可扩展的 .NET 全文搜索解决方案 / .NET Core 应用程序。 而且,由于本机 Lucene API,您无需对 .NET Lucene 应用程序进行任何代码更改即可将其与 NCache.
在客户端, NCache 为您的 .NET 应用程序提供本机 Lucene.NET API,因此您不必更改应用程序中的任何代码。 而且,在后端, NCache 使用相同的 Lucene.NET 在分布式环境中构建索引,然后以分布式方式进行全文搜索。 然后将这些分布式搜索的结果合并,然后再呈现给您的应用程序。
原生 Lucene API
分布式 Lucene 与 NCache 为您提供原生 Lucene API。 因此,您可以从中获得以下好处:
- - 无代码更改: 您无需对 Lucene 应用程序进行任何代码更改即可使用分布式 Lucene。 只需将您的提供商更改为 NCache.
- - 行业标准 API: 通过在您的应用程序中使用 Lucene,您将坚持使用业界最流行的全文搜索 API。
极快且可线性扩展
分布式 Lucene 非常快速且可扩展,原因如下:
- - 内存中(快速): 分布式 Lucene 构建在 NCache 那是一个内存中分布式数据存储。 因此,分布式 Lucene 也在内存中,因此速度非常快。
- - Lucene 索引分区: 为了提供可扩展性,Lucene 索引在集群中的所有服务器上进行分区。 这样,当您向集群添加更多服务器时,Lucene 索引会自动重新分区并 redis通过使用以一种智能的方式致敬 NCache 分区副本缓存 拓扑结构。
- - 并行搜索: 由于 Lucene 索引是分区的,当您的应用程序发出全文搜索查询时,分布式 Lucene 会将其发送到集群中的所有服务器。 而且,通过这种方式,您的查询可以跨多个服务器并行运行。 然后,所有这些并行查询的结果在返回到您的应用程序之前被合并。
- - 在运行时从集群中添加/删除服务器: 您可以添加更多服务器 NCache 在运行时集群,而无需停止您的应用程序或重建您的 Lucene 索引。 Lucene 索引是自动的 redis向集群中的所有服务器致敬,没有任何中断。
- - 在运行时增长 Lucene 索引 您可以在运行时向 Lucene 索引添加更多项,而无需停止或重建整个 Lucene 索引。
高可用性
以下是分布式Lucene在该领域的一些亮点:
- - Lucene 索引已复制: Lucene 索引在集群中的所有服务器上进行分区。 然后,每个分区通过使用复制到集群中的不同服务器 分区副本缓存 拓扑结构 NCache. 这确保了高可用性,因此如果任何服务器出现故障,此分区的副本将自动可用而不会中断。
- - NCache 集群是动态的: 此 该集群的动态性质 意味着如果任何一台服务器出现故障,集群会自动调整自己以使用更少的服务器。 而且,所有这一切都在没有任何中断的情况下发生。 同样,如果您需要在运行时增加服务器的数量,集群会自动将其添加到集群中而不会出现任何中断。
- - 持久化/重新加载 Lucene 索引: 您可以将整个 Lucene 索引持久化到磁盘。 这样,如果您需要降低整个 NCache 集群进行维护,您可以快速重新启动它并重新加载整个 Lucene 索引,而无需任何自定义编程。
- - 自动加载 Lucene 索引: 使用 缓存加载器 的特点 NCache 编写自定义代码以从数据源加载文档或数据,并在集群启动时构建索引。
接下来做什么?