MongoDB Vollständigen und Partiellen Text-Suche

Env:

  • MongoDB (3.2.0) mit MongoS

Sammlung:

  • Benutzer

Text-Index-Erstellung:

  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

Dokument:

  • {"name":"LEONEL"}

Abfragen:

  • db.users.find( { "$text" : { "$search" : "LEONEL" } } ) => GEFUNDEN
  • db.users.find( { "$text" : { "$search" : "leonel" } } ) => GEFUNDEN (Suche caseSensitive auf false ist)
  • db.users.find( { "$text" : { "$search" : "LEONÉL" } } ) => GEFUNDEN (Suche mit diacriticSensitive false)
  • db.users.find( { "$text" : { "$search" : "LEONE" } } ) => GEFUNDEN (teilsuche)
  • db.users.find( { "$text" : { "$search" : "LEO" } } ) => NICHT GEFUNDEN (teilsuche)
  • db.users.find( { "$text" : { "$search" : "L" } } ) => NICHT GEFUNDEN (teilsuche)

Irgendeine Idee, warum bekomme ich 0 Ergebnisse bei der Verwendung als Abfrage "LEO" oder "L"?

Regex mit Text-Index-Suche ist nicht erlaubt.

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

Mongo Dokumentation:

  • Möglich, Duplikat der MongoDB: Ist es möglich, groß- / Kleinschreibung Abfrage?
  • Diese Frage ist im Zusammenhang zu partiellen Suche mit einem text-index und nicht groß-und Kleinschreibung beachten. @LucasCosta bitte nicht tag diese Frage als verdoppelt.
  • Es ist möglich, muss mindestens 5 Stimmen @Leonel
  • Haben Sie versucht /LEO/i? Sie können die Verwendung von regex in der Suche nach Wert in mongodb
  • text-index-Suche wird nicht zulassen, dass regex.
  • Suche ohne index: stackoverflow.com/a/48250561/557432

InformationsquelleAutor Leonel | 2017-06-29
Schreibe einen Kommentar