android - क्या फायरस्टार पर उप स्ट्रिंग की खोज करने का एक तरीका है?



firebase google-cloud-firestore (1)

दुर्भाग्य से, फायरस्टार में कोई क्वेरी नहीं है जो इस तरह दिखता है:

db.collection("cities").whereContains("name", "Cali")

लेकिन छोटे डेटासेट के लिए, एक समाधान है जो आपको इसे हल करने में मदद कर सकता है, जो डेटाबेस को क्वेरी करके सभी शहर के नाम और उपयोग contains() विधि इस तरह है:

String str1 = document.getString("yourProperty");
String str2 = "Cali";
boolean b = str1.toLowerCase().contains(str2.toLowerCase());

यदि आप b का मान मुद्रित करने का प्रयास करेंगे, तो आप देखेंगे कि यह true । लेकिन उपरोक्त उदाहरण केवल छोटे डेटासेट के लिए पर्याप्त रूप से काम करता है, यह बड़े डेटासेट के लिए काम नहीं करता है और ऐसा इसलिए है क्योंकि क्लाइंट-साइड के लिए खोज करने के लिए संपूर्ण संग्रह डाउनलोड करना व्यावहारिक नहीं है। इस मामले में, जैसा कि आधिकारिक दस्तावेज अनुशंसा करता है:

अपने क्लाउड Algolia डेटा की पूर्ण पाठ खोज को सक्षम करने के लिए, Algolia जैसी तृतीय-पक्ष खोज सेवा का उपयोग करें।

एक ठोस उदाहरण के लिए, कृपया इस post से मेरा उत्तर भी देखें।

अगर फायरस्टार डेटाबेस में ' कैलिफ़ोर्निया ' नाम का एक स्ट्रिंग है और मैं एंड्रॉइड ऐप से ' कैली ' के रूप में खोजना चाहता हूं, तो फायरबेस मुझे कैलिफ़ोर्निया वापस कर देना चाहिए। मैं उस क्वेरी को कैसे कर सकता हूं?

फायरस्टार में कुछ समारोह है जैसे,

db.collection("cities").whereEqualTo("name", "Cali")
 db.collection("cities").whereLessThan("name", "Cali")
 db.collection("cities").whereGreaterThanOrEqualTo("name", "Cali")
 db.collection("cities").whereGreaterThan("name", "Cali")
 db.collection("cities").whereGreaterThanOrEqualTo("name", "Cali")

लेकिन मुझे एक फंक्शन चाहिए जैसे,

db.collection("cities").whereContain("name", "Cali")

जिसे पूर्ण स्ट्रिंग वापस करना चाहिए जिसमें 'कैली' विकल्प है।





google-cloud-firestore