Manticore क्वेरी और अंतिम परिणाम के बीच उपयोगकर्ता को अतिरिक्त प्रोसेसिंग हो सकती है। अधिकांश मामलों में, रुचि प्रासंगिकता स्कोर द्वारा क्रमबद्ध करने की होती है, इसलिए इस क्रम को खोना महत्वपूर्ण नहीं है।
Manticore Search के साथ एक डेटाबेस का उपयोग करते हुए एक सामान्य कार्यप्रवाह इस प्रकार दिखता है:
- Manticore क्वेरी करें
- परिणाम सेट से दस्तावेज़ आइडी की सूची प्राप्त करें
- आउटपुट के लिए अंतिम परिणाम प्राप्त करने के लिए दस्तावेज़ आइडी का उपयोग करके डेटाबेस क्वेरी करें
डेटाबेस से संबंधित रिकॉर्ड प्राप्त करना IN(ids) प्रेडिकेट का उपयोग करके एकल क्वेरी में किया जा सकता है।
mysql> SELECT * FROM mytable WHERE id IN(20,10,3,4,6)
इस प्रकार की क्वेरी बहुत तेज होती है, लेकिन परिणाम सेट अपेक्षित क्रम में नहीं हो सकता है। चूंकि कोई क्रम सेट नहीं है, डेटाबेस इंजन रिकॉर्ड को परिणाम सेट में जोड़ देगा जैसे ही वह तालिका में उन्हें खोजते समय उन्हें पाएगा। इसका मतलब है कि हमें Manticore क्वेरी से प्राप्त क्रम को बनाए रखने के लिए क्वेरी में स्पष्ट क्रम जोड़ने की आवश्यकता है।
MySQL में हम सेट को उस तरह से क्रमबद्ध करने के लिए FIELD() फ़ंक्शन का उपयोग कर सकते हैं:
mysql> SELECT * FROM mytable WHERE id IN(20,10,3,4,6) ORDER BY FIELD(id,20,10,3,4,6).
अन्य डेटाबेस में समान विधियाँ मौजूद हैं। PostgreSQL में इसे कई तरीकों से किया जा सकता है, जैसे ORDER BY CASE, WITH ORDINALITY (9.4+) या array_position() (9.6+).
वैकल्पिक रूप से, Manticore परिणाम से क्रम बनाए रखना एप्लिकेशन कोड में भी किया जा सकता है। एक सरल कोड इस तरह दिख सकता है:
$ids = [];
foreach($ms_conn($manticore_query as $row)
{
$ids[] = $row['id'];
}
$tmpdocs = [];
foreach($db_conn->query($database_query) as $row)
{
$tmpdocs[$row['id']] = $row
}
$final_result = [];
foreach($ids as $id)
{
$final_result[] = $tmpdocs[$id];
}
अंत में, यदि आप Manticore क्वेरी से आईडी का उपयोग करके एक भंडार से डेटा प्राप्त करते हैं, तो सुनिश्चित करें कि Manticore क्वेरी परिणाम सेट द्वारा प्रदान किए गए क्रम को न खोएं।