English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
von2.4Ab dem Versionsbeginn unterstützt MongoDB Textindizes, um den Inhalt von Zeichenfolgen zu durchsuchen. Text Search (Textsuche) verwendet die Stammwortanalyse, um spezifische Wörter in Zeichenfolgenfeldern zu finden, indem Stammwortanalyse-Stopwörter (wie a, an, The usw.) entfernt werden. Derzeit unterstützt MongoDB etwa15einer Sprache.}
Zunächst war "Text Search (Textsuche)" eine experimentelle Funktion, aber seit2.6Ab Version, ist diese Konfiguration standardmäßig aktiviert.
Bedenken Sie folgendeposts
Dokumente in der Sammlung, die den Text der Beiträge und die Tags enthalten-
> db.posts.insert({ "post_text": "genießen Sie die mongodb-Artikel auf w3codebox", "tags": ["mongodb", "w3codebox"] } { "post_text" : "Schreiben Sie Tutorials über mongodb", "tags" : [ "mongodb", "tutorial" ] }) WriteResult({ "nInserted" : 1 })
Wir erstellen einen Textindex im Feld post_text, um im Text der Beiträge suchen zu können-
>db.posts.createIndex({post_text:"text"}) { "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
Jetzt haben wir einen Textindex im Feld post_text erstellt, wir werden suchenw3codebox
alle Beiträge, die das Wort im Text enthalten
> db.posts.find({$text:{$search:"w3codebox"}}).pretty(){ "_id" : ObjectId("5dd7ce28f1dd4583e7103fe0") "post_text" : "genießen Sie die mongodb-Artikel auf w3codebox", "tags" : [ "mongodb", "w3codebox" ] }
Die obige Anweisung gibt das folgende Ergebnisdokument zurück, dasw3codebox
Der Text der Veröffentlichung enthält das Wort:
{ "_id" : ObjectId("53493d14d852429c10000002") "post_text" : "genießen Sie die mongodb-Artikel auf w3codebox", "tags" : [ "mongodb", "w3codebox"]}
Um bestehende Textindizes zu löschen, verwenden Sie zunächst die folgenden Abfragen, um den Namen des Indexes zu finden-
>db.posts.getIndexes()[ { "v": 2, "key": { "_id" : 1 }, "name" : "_id_", "ns": "mydb.posts" }, { "v": 2, "key": { "fts": "text", "ftsx": 1 }, "name": "post_text_text", "ns": "mydb.posts", "weights": { "post_text": 1 }, "default_language": "english", "language_override": "language", "textIndexVersion": 3 } ] >
Nachdem Sie den Namen des Indexes aus der obigen Abfrage erhalten haben, führen Sie folgenden Befehl aus. Hierbei,post_text_text
ist der Name des Indexes.
>db.posts.dropIndex("post_text_text") { "nIndexesWas": 2, "ok": 1 }