我想知道狮身人面像的实时索引及其配置。我有一个包含以下列的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_field
和rt_attr_json
感到困惑。据我所知,Sphinx可以在rt_attr_json
时搜索json。那么,为什么我需要将其复制为rt_field
?或者我应该查询rt_field
而不是属性?
答案 0 :(得分:0)
rt_attr_json已编入索引,数据以属性的形式提供。因此,您可以对它们进行排序,排序,分组和过滤。
但您需要将要“全文”搜索的任何值复制到字段。只有字段是全文索引的。 (即在文本'query'/ MATCH())中使用