1

我在不同的服务器(即 A 和 B)上构建了 2 个 searchd 实例,并在 A 上构建了一个分布式索引。但是,当我从客户端查询 A 时,我只从 A 的索引中得到结果。我的问题是我无法从 B' 索引中获得结果,我很确定我配置正确。

我试过: * 用 IP 地址替换主机名 * 我很确定我没有从 B 的索引中得到结果

A 的 sphinx.conf

index distributed_index
{
    type = distributed
    local = A_index
    agent = 192.168.13.189:9312:B_index
    agent_connect_timeout = 1000
    agent_query_timeout = 3000
}

客户端查询代码(python)

import sphinxapi
sphinx_host = 'A'
sphinx_port = 9312
SphinxClient = sphinxapi.SphinxClient()
SphinxClient.SetServer(sphinx_host,sphinx_port)
SphinxClient.SetMatchMode(sphinxapi.SPH_MATCH_EXTENDED)
res = SphinxClient.Query("")

当我indexer --all --rotate得到一个警告:跳过非普通索引'distributed_index'

当我从客户端查询时,我期望来自 A 和 B 的结果。

4

1 回答 1

1

我明白了,伙计们,我明白了!

问题不在服务器(A&B)上,我正确配置了它们。这是因为我不熟悉 API。Query()API需要指定关键字以及查询的索引

res = SphinxClient.Query("","distributed_index_name")给我正确的结果!

如果您遇到类似的问题,请随时提出,我很乐意提供帮助。

于 2019-09-18T02:56:18.643 回答