2009-11-05 4 views
26

के रूप में mongodb के साथ sphinx खोज का उपयोग करके हमने कुछ वेब एप्लिकेशन (mysql के बजाय) के लिए mongodb का उपयोग करने का निर्णय लिया है, लेकिन mongodb में संग्रहीत सभी डेटा अनुक्रमण/खोज के लिए स्फिंक्स के साथ रहना चाहता हूं। चूंकि mongodb ऑब्जेक्ट-आईडी डिफ़ॉल्ट रूप से हैश है - और हम इसके साथ रहना चाहते हैं - अब sphinx का उपयोग करने में एक समस्या है। यह स्फिंक्स प्रलेखन में कहते हैं:dongource

सभी दस्तावेज़ आईडीएस BE चाहिए अद्वितीय अहस्ताक्षरित गैर शून्य पूर्णांक संख्या (32-बिट या 64-बिट, पर निर्माण समय सेटिंग्स आधार पर)।

तो ... इस समस्या को हल करने का सबसे अच्छा तरीका क्या है ... हम mongodb ऑब्जेक्ट-आईडी को गैर-शून्य पूर्णांक (और पीछे) पर कैसे मैप कर सकते हैं?

अद्यतन

केसी का जवाब, सही दिशा में देखना है यह पता चला है तथापि में स्ट्रिंग गुण एसक्यूएल डेटा स्रोत के लिए ही उपलब्ध वर्तमान देव-संस्करण में कर रहे हैं। xmlpipe के लिए चेकआउट स्रोत पर पैच लागू करना आवश्यक है। इस पर अधिक जानकारी sphinx forum में मिल सकती है।

उत्तर

28

आप ऑब्जेक्ट आईडी का उपयोग स्फिंक्स दस्तावेज़ आईडी के रूप में नहीं कर सकते - मोंगोडीबी ऑब्जेक्ट आईडी स्फिंक्स के दस्तावेज़ आईडी के अधिकतम आकार से बड़े हैं।

इसके बजाय, आप एक्सएमएल उत्पन्न करते समय एक अद्वितीय आईडी बढ़ा सकते हैं जो स्पिंक्स प्रक्रिया करने जा रहा है (मुझे लगता है कि आप अपने मोंगो डेटा को स्फिंक्स में प्राप्त करने के लिए xmlpipe का उपयोग कर रहे हैं?) और मोंगोडीबी ऑब्जेक्ट आईडी को एक स्ट्रिंग विशेषता के रूप में स्टोर करें स्फिंक्स में

ऐसा करने के लिए स्फिंक्स के नवीनतम विकास संस्करण की आवश्यकता होगी - थोड़ा और विस्तार के लिए इस सवाल का मेरा उत्तर देखें: Sphinx without using an auto_increment id

+0

बहुत बहुत धन्यवाद ... वास्तव में मैं क्या जरूरत है लगता है! आम तौर पर मुझे विकास संस्करण चलाने में कोई समस्या नहीं है। मैं कल कोशिश करूँगा और 'उत्तर' सेट करूँगा, अगर सब कुछ अपेक्षित काम करता है। एक बार फिर धन्यवाद! – aurora