2012-12-26 15 views
8

एंड्रॉइड डेवलपर मैनुअल एसक्यूएलएट डीबी में एफटीएस 3 पसंद करते हैं जब खोज की आवश्यकता होती है। मैंने एफटीएस 3 विवरण पढ़ा और ऐसा प्रतीत होता है कि यह स्थायी तालिका के बजाय वर्चुअल टेबल बनाता है। SQLite में आभासी तालिका (FTS3) और सामान्य तालिका के बीच क्या अंतर है? वर्चुअल टेबल स्थायी है और ऐप छोड़ने के बाद भी डेटाबेस में रहता है? धन्यवाद।वर्चुअल टेबल बनाम वर्चुअल टेबल SQLite डीबी

उत्तर

5

एक आभासी तालिका SQLite इंजन को (आमतौर पर) गैर-SQLite कोड का उपयोग करके डेटा स्टोर की सामग्री तक पहुंचने की अनुमति देती है। यह डेवलपर को SQLite को कस्टम कार्यक्षमता जोड़ने की अनुमति देता है।

एफटीएस के मामले में, यह मूल रूप से SQLite इंजन का हिस्सा नहीं था। यह कोड था जो SQLite के बाहर था, जिसने अंतिम उपयोगकर्ता को डेटा पर पूर्ण टेक्स्ट खोज करने की अनुमति दी।

वर्चुअल टेबल स्थायी है? यह कार्यान्वयन पर निर्भर करता है। एफटीएस के लिए डेटा स्थायी है। हालांकि, आप एक कार्यान्वयन बना सकते हैं जो भंडारण के लिए रैम का उपयोग करता है - एप्लिकेशन समाप्त होने पर यह स्पष्ट रूप से गायब हो जाएगा।

आभासी टेबल पर अधिक: http://www.sqlite.org/vtab.html

0

मुझे लगता है कि यह एक खोज इंटरफ़ेस बनाने के लिए API मार्गदर्शिका लिखते हैं कि कि FTS3 करता है की तुलना में बहुत तेजी से पूर्ण-पाठ खोज कहने के लिए और अधिक सटीक है, की विशेषताओं के आधार पर खोज। उदाहरण के लिए, LIKE का उपयोग करके एक नियमित SQLite क्वेरी वाइल्डकार्ड की अनुमति देती है, जबकि MATCH का उपयोग कर एक FTS3 क्वेरी नहीं है। यदि आप टोकन खोजना चाहते हैं, तो आप एफटीएस 3 के साथ जाना चाह सकते हैं। यदि आप अपरिहार्य मैच कर रहे हैं, तो आपको निश्चित रूप से पसंद करना होगा।

+0

मुझे लगता है कि MATCH का उपयोग करते समय वाइल्डकार्ड की अनुमति है। SQLite वेबसाइट पर जो मैंने पढ़ा है उसके आधार पर आपको बस * डालना होगा। – androidnerd