MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Die Volltextsuche in MongoDB liefert nicht das erwartete Ergebnis für @@@

Die Textsuche wurde entwickelt, um Zeichenfolgen basierend auf Sprachheuristiken . Die Textindizierung umfasst zwei allgemeine Schritte:Tokenisierung (Konvertieren eines Strings in einzelne Begriffe von Interesse) gefolgt von Stemming (Konvertieren jedes Begriffs in eine Stammform für die Indexierung basierend auf sprachspezifischen Regeln).

Während des Tokenisierungsschritts werden bestimmte Zeichen (z. B. Satzzeichen wie @ ) werden als Worttrennzeichen (auch bekannt als Trennzeichen) klassifiziert ) anstelle der Texteingabe und wird verwendet, um die ursprüngliche Zeichenfolge in Begriffe zu trennen. Sprachspezifische Stoppwörter (allgemeine Wörter wie "the", "is" oder "on" im Englischen) werden ebenfalls von einem Textindex ausgeschlossen.

Seit Ihrem Suchausdruck @@@ ausschließlich aus Trennzeichen besteht, gibt es keinen entsprechenden Eintrag im Textindex.

Wenn Sie generische Zeichenfolgenmuster abgleichen möchten, sollten Sie reguläre Ausdrücke statt Textsuche. Beispiel:db.getCollection('TestCollection').find({field2:/@@@/}) . Bitte beachten Sie jedoch die Vorbehalte zur Indexnutzung für reguläre Ausdrücke.