# 分布式搜索

Manticore 通过其分布式搜索能力设计得以有效扩展。分布式搜索有助于提升查询延迟（即搜索时间）和吞吐量（即最大查询次数/秒），适用于多服务器、多CPU或多核环境。这对于需要搜索海量数据（即数十亿记录和数TB文本）的应用至关重要。

其主要理念是将被搜索的数据水平划分到不同的搜索节点中，并行处理。

分区需要手动完成。配置步骤如下：

* 在不同服务器上部署多个 Manticore 实例
* 将数据集的不同部分分发给不同实例
* 在一些 `searchd` 实例上配置特殊的[分布式表](../Creating_a_table/Creating_a_distributed_table/Creating_a_distributed_table.md)
* 将查询路由到该分布式表

这种类型的表仅包含对其他本地和远程表的引用，因此不能直接重新索引。相反，应当重新索引它所引用的表。

当 Manticore 接收到针对分布式表的查询时，会执行以下步骤：

1. 连接到配置的远程代理
2. 将查询发送给远程代理
3. 同时搜索配置的本地表（在远程代理搜索的同时）
4. 从远程代理检索搜索结果
5. 合并所有结果，去除重复项
6. 将合并后的结果发送给客户端

从应用程序角度看，搜索常规表和分布式表没有区别。换言之，分布式表对应用程序是完全透明的，无法判断查询的是分布式表还是本地表。

了解更多关于[远程节点](../Creating_a_cluster/Remote_nodes.md)的信息。

<!-- proofread -->

