Sphinx RT索引并按值搜索json

时间:2018-11-01 07:36:07

标签: database sphinx

在rt索引中,我有字段-具有fields属性的rt_attr_json。 在此字段中,我具有这样的结构(相同块的集合):

{
  block_name: "a",
  block_type: 1,
  elements: {
     {
       ...
     }
  }
}

我如何从狮身人面像中获取在此块中具有block_type = 1not empty elements的所有记录?

如果知道块键,我知道如何实现:

where fields[0].block_type=1 and fields[0].elements is null;

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解这个问题,但是以下内容在Sphinx 3.1.1中效果很好:

mysql> select * from jt;
+------+-------+-----------------------------+
| id   | title | j                           |
+------+-------+-----------------------------+
|    1 |       | {"type":1}                  |
|    2 |       | {"type":1,"elements":[]}    |
|    3 |       | {"type":1,"elements":[123]} |
|    4 |       | {"type":2}                  |
|    5 |       | {"type":2,"elements":[123]} |
+------+-------+-----------------------------+
5 rows in set (0.00 sec)

mysql> select * from jt where j.type=1 and j.elements is not null;
+------+-------+-----------------------------+
| id   | title | j                           |
+------+-------+-----------------------------+
|    2 |       | {"type":1,"elements":[]}    |
|    3 |       | {"type":1,"elements":[123]} |
+------+-------+-----------------------------+
2 rows in set (0.00 sec)

请注意,以前的任何版本的行为都可能有所不同,因为NULL处理已固定到在最新的3.1.1版本中半重写的程度。