⚠️ 此页面为自动翻译,翻译可能不完美。

Percolate Queries: docs_id option

在本文中,我们讨论 docs_id 选项,该选项提供了更简便的 CALL PQ 结果集操作方式。

让我们考虑以下 PQ 批量调用:

mysql> CALL PQ ('pq', ('{"title":"butter is good as", "id":3}',
                       '{"title":"was butter","id":4}',
                       '{"title":"sas was butter","id":5}',
                       '{"title":"bas was butter", "id":6}',
                       '{"title":"butter is good as","id":7}'),
                 1 as docs_json ,1 as docs,1 as query);
+------+-----------+------------+------+---------+
| UID  | Documents | Query      | Tags | Filters |
+------+-----------+------------+------+---------+
|    1 | 1,5       | butter is  |      |         |
|    2 | 2,3,4     | butter was |      |         |
+------+-----------+------------+------+---------+
2 rows in set (0.00 sec)

这个输出有什么问题?

我们得到的是查询与输入数组中文档位置之间的配对列表,然而我们的文档具有一个标识符——id 属性。

如果我们希望将结果传递给下一个处理过程,就需要进行后处理工作,从输入数组中提取文档 id,使用这些位置信息。

为了避免这种后处理,在 2.7.0 版本中我们新增了一个名为 docs_id 的选项,该选项允许将文档位置替换为文档属性的值。

mysql> CALL PQ ('pq', ('{"title":"butter is good as", "id":3}',
                       '{"title":"was butter","id":4}',
                       '{"title":"sas was butter","id":5}',
                       '{"title":"bas was butter", "id":6}',
                       '{"title":"butter is good as","id":7}'),
                1 as docs_json ,1 as docs,1 as query, 'id' as docs_id);
+------+-----------+------------+------+---------+
| UID  | Documents | Query      | Tags | Filters |
+------+-----------+------------+------+---------+
|    1 | 3,7       | butter is  |      |         |
|    2 | 4,5,6     | butter was |      |         |
+------+-----------+------------+------+---------+
2 rows in set (0.01 sec)

现在我们在 PQ 结果集中获得了文档 id(或根据需要选择的其他标识符)。

所选的 docs_id 属性必须是整数属性。其值不需要唯一。例如,查询可能通过另一个整数属性进行逻辑分组。如果我们只想找出符合特定条件的组,可以使用该属性代替文档 id:

mysql> CALL PQ ('pq', ('{"title":"butter is good as", "id":3,"gid":10}',
                       '{"title":"was butter","id":4,"gid":20}',
                       '{"title":"sas was butter","id":5,"gid":10}',
                       '{"title":"bas was butter", "id":6,"gid":20}',
                       '{"title":"butter is good as","id":7,"gid":10}'),
                1 as docs_json ,1 as docs,1 as query, 'gid' as docs_id);
+------+-----------+------------+------+---------+
| UID  | Documents | Query      | Tags | Filters |
+------+-----------+------------+------+---------+
|    1 | 10        | butter is  |      |         |
|    2 | 10,20     | butter was |      |         |
+------+-----------+------------+------+---------+
2 rows in set (0.00 sec)

安装Manticore Search

安装Manticore Search