Env:
- 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
Документ
- { "имя": "Леонель" }
Запросы
-
db.users.find( { "$text" : { "$search" : "LEONEL" } } )
= > НАЙДЕНО -
db.users.find( { "$text" : { "$search" : "LEONEL" } } )
= > НАЙДЕНО (регистр поиска нечувствителен) -
db.users.find( { "$text" : { "$search" : "LEONÉL" } } )
= > НАЙДЕН (поиск с диакритической чувствительностью ложный) -
db.users.find( { "$text" : { "$search" : "LEONE" } } )
= > НАЙДЕН (Частичный поиск) -
db.users.find( { "$text" : { "$search" : "LEO" } } )
= > НЕ НАЙДЕН (Частичный поиск) -
db.users.find( { "$text" : { "$search" : "L" } } )
= > НЕ НАЙДЕН (Частичный поиск)
Любая идея, почему я получаю 0 результатов, используя в качестве запроса "LEO" или "L"?
Regex с индексом индекса не допускается.
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
Монго Документация: