मुझे किसी SQLite डेटाबेस में किसी तालिका को क्वेरी करने की आवश्यकता है जो किसी पंक्ति में सभी पंक्तियों को वापस करने के लिए है जो शब्दों के दिए गए सेट से मेल खाते हैं।SQLite - पंक्तियों वाले टेक्स्ट को वापस कैसे करें जिसमें एक या अधिक तार हैं?
अधिक सटीक होने के लिए: मेरे पास ~ 80,000 रिकॉर्ड वाले डेटाबेस हैं। फ़ील्ड में से एक रिकॉर्ड फ़ील्ड है जिसमें प्रति रिकॉर्ड लगभग 100-200 शब्द हैं। मैं जो करने में सक्षम होना चाहता हूं वह 200 एकल शब्द कीवर्ड {"सेब", "नारंगी", "नाशपाती", ...} की सूची लेता है और तालिका में सभी रिकॉर्ड्स का एक सेट पुनर्प्राप्त करता है जिसमें कम से कम एक होता है वर्णन कॉलम में कीवर्ड शब्द का।
SELECT stuff FROM table
WHERE (description LIKE '% apple %') or (description LIKE '% orange %') or ...
अगर मैं 200 मामले है, मैं एक बड़ा और बुरा लग रही एसक्यूएल बयान है कि मुझे लगता है अनाड़ी होने के लिए के साथ खत्म, बू आती:
यह करने के लिए तुरंत स्पष्ट तरीका कुछ इस तरह से है बुरी आदत का, और आश्चर्यजनक रूप से प्रक्रिया करने में लंबा समय नहीं लगता - एक प्रति 1000 रिकॉर्ड से अधिक।
यह उत्तर Better performance for SQLite Select Statement मुझे जो चाहिए, उसके करीब लग रहा था, और नतीजतन मैंने एक इंडेक्स बनाया, लेकिन http://www.sqlite.org/optoverview.html एसक्लाइट के अनुसार किसी भी अनुकूलन का उपयोग नहीं करता है यदि LIKE ऑपरेटर को प्रारंभिक वाइल्डकार्ड के साथ उपयोग किया जाता है।
एक एसक्यूएल विशेषज्ञ नहीं है, मुझे लगता है कि मैं यह गूंगा तरीका कर रहा हूं। मैं सोच रहा था कि क्या अधिक अनुभव वाला कोई व्यक्ति ऐसा करने का अधिक समझदार और शायद अधिक कुशल तरीका सुझा सकता है?
वैकल्पिक रूप से, क्या समस्या का उपयोग करने के लिए एक बेहतर दृष्टिकोण है?
धन्यवाद, यह वास्तव में इस मुद्दे को संबोधित करता है। मैंने लिंक पर एक नज़र डाली और यह सही दिखता है। – Sam