इस लेख में हम 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 एटीट्रिब्यूट है।
यदि हम परिणाम को अगले प्रक्रिया में पास करना चाहते हैं, तो हमें स्थिति का उपयोग करके इनपुट एरे से दस्तावेज़ ids निकालने के लिए पोस्ट-प्रोसेसिंग कार्य करने की आवश्यकता होगी।
इस पोस्ट-प्रोसेसिंग से बचने के लिए 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 परिणाम सेट में दस्तावेज़ ids (या किसी अन्य चयनित पहचानकर्ता) हैं।
चुने गए 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)