# Percolate Queries: docs_id option

В этой статье мы обсуждаем параметр `docs_id`, который обеспечивает более простую работу с результатом `CALL PQ` набором.

Рассмотрим следующий пакетный вызов PQ:


```sql
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**.

Если мы хотим передать результат в следующий процесс, нам потребуется выполнить постобработку, чтобы извлечь идентификаторы документов из входного массива, используя позиции.

Чтобы избежать этой постобработки в версии 2.7.0, мы добавили новую опцию **docs\_id**, которая позволяет заменять позиции документов значением атрибута документа.


```sql
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.

Выбранный атрибут `docs_id` должен быть целочисленным атрибутом. Его значения не обязательно должны быть уникальными. Например, запросы могут быть логически сгруппированы по другому целочисленному атрибуту. Если нам нужно узнать только группы, соответствующие критерию, мы можем использовать этот атрибут вместо идентификатора документа:


```sql
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)
```
