Sphinx获取代理模式

时间:2016-01-27 08:48:51

标签: sphinx

这是我的第一个问题,请原谅我的错误:)。 作为一个框架,我正在使用Yii2,在任何请求的开头,我都有一个问题,就是通过命令在sphinx中接收分布式索引代理的答案:

DESCRIBE `10.0.0.22:9312:indexName`;

我明白了:

ERROR 1064 (42000): sphinxql: syntax error, unexpected $undefined, expecting IDENT (or 49 other tokens) near '`10.0.0.22:9312:indexName`'

我的分布式conf:

index indexName {
    type = distributed
    agent = 10.0.13.24:9312|10.0.0.22:9312:indexName
    ha_strategy = noerrors
}

其他conf:

index indexName
{
    type            = rt

    path            = /var/lib/sphinxsearch/data/indexName

    rt_field        = code
    rt_field        = title
    rt_field        = article
    rt_field        = docket

    rt_attr_uint        = code
    rt_attr_string      = title
    rt_attr_string      = article
    rt_attr_string      = docket

    morphology = lemmatize_ru, stem_enru
    charset_table   = 0..9, U+410..U+42F->U+430..U+44F, U+430..U+44F, _
    blend_chars     = +, &, @
    dict        = keywords
    min_word_len    = 1
    min_prefix_len  = 1
}

我的搜索内容是默认设置。

此外,我还有一个查询问题,其中字段名称带有反引号,例如:

SELECT `id`, weight() as relevance from indexName where match('asus');

我明白了:

ERROR 1064 (42000): index indexName: agent 10.0.0.22:9312: remote error: select: syntax error, unexpected '`', expecting $end near '`, weight() as relevance'

我也在控制台中尝试过此查询,并显示相同的错误。但是,如果我进行简单的查询,如“SELECT * FROM indexName WHERE MATCH('asus')”,一切正常。

1 个答案:

答案 0 :(得分:0)

唉,非常确定狮身人面像不能代理'虽然' DESCRIBE'要求。您只能描述本地索引和分布式索引本身(以获取其组件)。

无法获取远程索引的feilds / attributes,客户端必须直接连接到远程代理才能获取设置。 (虽然当然可以通过运行查询来获取属性列表(SELECT * FROM dist LIMIT 1)

关于引号的问题,它是一个已知的错误,但不知道修复它的状态。在没有反引号的情况下运行查询通常效果更好。