2009-09-10 33 views
5

में एपेंगिन पर वाइल्डकार्ड खोज मैं Google App Engine पर एक संपर्क डेटाबेस बनाने के लिए बस पाइथन से शुरू कर रहा हूं। वाइल्डकार्ड खोज को लागू करने का सबसे अच्छा तरीका क्या है?पाइथन

उदाहरण के लिए मैं क्वेरी ('name =',% ewman%) कर सकता हूं?

+1

GAE खोज API का उपयोग करके आंशिक मिलान के लिए: http://stackoverflow.com/questions/12899083/partial-matching-gae-search-api/13171181#13171181 –

उत्तर

11

दुर्भाग्य से, Google ऐप इंजन आंशिक लेख नहीं कर सकता से मेल खाता है

From the docs:

युक्ति: क्वेरी फिल्टर एक स्पष्ट तरीका एक स्ट्रिंग मान का कोई हिस्सा मैच के लिए की जरूरत नहीं है, लेकिन आप नकली कर सकते हैं एक उपसर्ग मिलान का उपयोग असमानता फिल्टर:

db.GqlQuery("SELECT * FROM MyModel WHERE prop >= :1 AND prop < :2", "abc", u"abc" + u"\ufffd") 

यह मेल खाता ई एक स्ट्रिंग प्रॉपर्टी प्रोप के साथ बहुत मायमोडेल इकाई जो अक्षर एबीसी के साथ शुरू होती है। यूनिकोड स्ट्रिंग u "\ ufffd" सबसे बड़ा संभव यूनिकोड चरित्र का प्रतिनिधित्व करता है। जब प्रॉपर्टी मान इंडेक्स में सॉर्ट किए जाते हैं, तो इस श्रेणी में आने वाले मान सभी मान हैं जो दिए गए उपसर्ग से शुरू होते हैं।

+0

धन्यवाद सेठ। यह एक प्रमुख सीमा प्रतीत होता है। आश्चर्य है कि वे contact.google.com में आंशिक मिलान कैसे कार्यान्वित करते हैं? शायद एक सामान्य SQL डेटाबेस के साथ रहना होगा। –

+0

मैं सहमत हूं। ऐसा लगता है कि कुछ प्लगइन्स हैं जो पूर्ण टेक्स्ट खोज करने की कोशिश करते हैं लेकिन मैंने कोशिश नहीं की है। यह एक सबसे लोकप्रिय लगता है: http://code.google.com/p/app-engine-patch/ – seth

+0

'सामान्य SQL डेटाबेस' के साथ चिपकने से मदद नहीं मिलती है, क्योंकि एक SQL डीबी एक पूर्ण तालिका स्कैन करता है उस क्वेरी को निष्पादित करने के लिए - स्केलेबल बिल्कुल नहीं! विवरण के लिए मेरा जवाब देखें। –

3

ऐप इंजन 'जैसे' प्रश्न नहीं कर सकता है, क्योंकि यह उन्हें कुशलतापूर्वक नहीं कर सकता है। न ही आपका एसक्यूएल डेटाबेस, हालांकि: ए 'foo LIKE "% bar%"' क्वेरी केवल संपूर्ण तालिका पर अनुक्रमिक स्कैन करके निष्पादित की जा सकती है।

आपको जो चाहिए वह एक उलटा सूचकांक है। बेसिक फुलटेक्स्ट सर्च ऐप इंजन में SearchableModel के साथ उपलब्ध है। बिल काट्ज़ ने एक उन्नत संस्करण here लिखा है, और ऐप इंजन (एक मुफ्त संस्करण के साथ) के लिए एक वाणिज्यिक समाधान है here उपलब्ध है।