English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MongoDB-Textsuche

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.}

Textsuche aktivieren

Zunächst war "Text Search (Textsuche)" eine experimentelle Funktion, aber seit2.6Ab Version, ist diese Konfiguration standardmäßig aktiviert.

Erstellen Sie einen Textindex

Bedenken Sie folgendepostsDokumente 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
}

Verwenden Sie den Textindex

Jetzt haben wir einen Textindex im Feld post_text erstellt, wir werden suchenw3codeboxalle 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, dasw3codeboxDer Text der Veröffentlichung enthält das Wort:

{ 
   "_id" : ObjectId("53493d14d852429c10000002") 
   "post_text" : "genießen Sie die mongodb-Artikel auf w3codebox", 
   "tags" : [ "mongodb", "w3codebox"]}

Löschen Sie den Textindex

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_textist der Name des Indexes.

>db.posts.dropIndex("post_text_text")
{ "nIndexesWas": 2, "ok": 1 }