为json搜索配置Sphinx

时间:2015-11-11 19:57:20

标签: json search sphinx

我想知道狮身人面像的实时索引及其配置。我有一个包含以下列的mysql表:

filter_id       int(11) AI PK
filter_user_id  int(11)
filter_name     varchar(64)
filter_state    text

我将json存储在filter_state中。现在,我想搜索json字段,并配置Sphinx实时索引。

我的配置文件如下所示:

index rt_filters
{
    type = rt
    path = /var/sphinx/data/rt_filters

    rt_field = state 
    rt_attr_uint = filter_user_id
    rt_attr_json = filter_state

    rt_mem_limit = 256M
}

searchd
{
    listen          = 9312
    listen          = 9306:mysql41
    log             = /var/log/sphinx/searchd.log
    query_log       = /var/log/sphinx/query.log
    read_timeout    = 5
    max_children    = 30
    pid_file        = /var/run/searchd.pid
    seamless_rotate = 1
    preopen_indexes = 1
    unlink_old      = 1
    workers         = threads # for RT to work
    binlog_path     = /var/sphinx/data
}

但我对将state重复为rt_fieldrt_attr_json感到困惑。据我所知,Sphinx可以在rt_attr_json时搜索json。那么,为什么我需要将其复制为rt_field?或者我应该查询rt_field而不是属性?

1 个答案:

答案 0 :(得分:0)

rt_attr_json已编入索引,数据以属性的形式提供。因此,您可以对它们进行排序,排序,分组和过滤。

但您需要将要“全文”搜索的任何值复制到字段。只有字段是全文索引的。 (即在文本'query'/ MATCH())中使用