पर्यावरण:MongoDB पूर्ण और आंशिक पाठ खोज
- MongoDB (3.2.0) MongoS साथ
संग्रह:
- उपयोगकर्ताओं
पाठ सूचकांक सृजन:
BasicDBObject keys = new BasicDBObject();
keys.put("name","text");
BasicDBObject options = new BasicDBObject();
options.put("name", "userTextSearch");
options.put("unique", Boolean.FALSE);
options.put("background", Boolean.TRUE);
userCollection.createIndex(keys, options); // using MongoTemplate
दस्तावेज़:
- { "नाम": "LEONEL"}
क्वेरी:
db.users.find({ "$text" : { "$search" : "LEONEL" } })
=> पायाdb.users.find({ "$text" : { "$search" : "leonel" } })
=> FOUND (खोज caseSensitive झूठा है)db.users.find({ "$text" : { "$search" : "LEONÉL" } })
=> FOUND (diacriticSensitive साथ खोज गलत है)db.users.find({ "$text" : { "$search" : "LEONE" } })
=> FOUND (आंशिक खोज)db.users.find({ "$text" : { "$search" : "LEO" } })
=> नहीं मिला (आंशिक खोज)db.users.find({ "$text" : { "$search" : "L" } })
=> नहीं मिला (आंशिक खोज)
कोई विचार मुझे 0 परिणाम "LEO" या "एल" के रूप में उपयोग करने के परिणाम क्यों मिलते हैं?
टेक्स्ट इंडेक्स खोज के साथ रेगेक्स की अनुमति नहीं है।
db.getCollection('users')
.find({ "$text" : { "$search" : "/LEO/i",
"$caseSensitive": false,
"$diacriticSensitive": false }})
.count() // 0 results
db.getCollection('users')
.find({ "$text" : { "$search" : "LEO",
"$caseSensitive": false,
"$diacriticSensitive": false }})
.count() // 0 results
मोंगो प्रलेखन:
- https://docs.mongodb.com/v3.2/text-search/
- https://docs.mongodb.com/manual/reference/operator/query/text/
- https://docs.mongodb.com/manual/core/index-text/
- https://jira.mongodb.org/browse/SERVER-15090
[मोंगोडीबी: संभावित केस-असंवेदनशील क्वेरी बनाना संभव है?] (Https://stackoverflow.com/questions/1863399/mongodb-is-it-possible-to-make-a-case- असंवेदनशील-क्वेरी) –
यह प्रश्न टेक्स्ट इंडेक्स का उपयोग करके आंशिक खोज से संबंधित है और केस संवेदनशील खोज नहीं है। @LucasCosta कृपया इस प्रश्न को डुप्लिकेट के रूप में टैग न करें। – Leonel
यह संभव है, कम से कम 5 वोटों की आवश्यकता @Leonel –