MongoDB Volltextsuche
Die Volltextsuche erstellt einen Index für jedes Wort, der angibt, wie oft und an welchen Positionen das Wort im Artikel vorkommt. Wenn ein Benutzer eine Abfrage durchführt, sucht das Retrieval-Programm anhand des vorab erstellten Indexes und gibt die Suchergebnisse an den Benutzer zurück.
Dieser Vorgang ähnelt dem Nachschlagen eines Wortes über den Index eines Wörterbuchs.
MongoDB unterstützt seit Version 2.4 die Volltextsuche und derzeit Volltextindizes für 15 Sprachen.
- Dänisch
- Niederländisch
- Englisch
- Finnisch
- Französisch
- Deutsch
- Ungarisch
- italian
- Norwegisch
- Portugiesisch
- Rumänisch
- Russisch
- Spanisch
- Schwedisch
- Türkisch
Volltextsuche aktivieren
MongoDB hat ab Version 2.6 die Volltextsuche standardmäßig aktiviert. Wenn Sie eine frühere Version verwenden, müssen Sie den folgenden Code verwenden, um die Volltextsuche zu aktivieren:
>db.adminCommand({setParameter:true,textSearchEnabled:true})
Oder verwenden Sie den Befehl:
mongod --setParameter textSearchEnabled=true
Volltextindex erstellen
Betrachten Sie die folgenden Dokumentdaten in der posts-Sammlung, die Artikelinhalte (post_text) und Tags enthält:
{
"post_text": "enjoy the mongodb articles on Example",
"tags": [
"mongodb",
"example"
]
}
Wir können einen Volltextindex für das Feld post_text erstellen, damit wir den Inhalt innerhalb der Artikel durchsuchen können:
>db.posts.ensureIndex({post_text:"text"})
Volltextindex verwenden
Nachdem wir nun einen Volltextindex für post_text erstellt haben, können wir in den Artikeln nach dem Schlüsselwort example suchen:
>db.posts.find({$text:{$search:"example"}})
Der folgende Befehl gibt die Dokumentdaten zurück, die das Schlüsselwort example enthalten:
{
"_id" : ObjectId("53493d14d852429c10000002"),
"post_text" : "enjoy the mongodb articles on Example",
"tags" : [ "mongodb", "example" ]
}
Wenn Sie eine ältere Version von MongoDB verwenden, können Sie den folgenden Befehl verwenden:
>db.posts.runCommand("text",{search:"example"})
Die Verwendung von Volltextindizes kann die Sucheffizienz verbessern.
Volltextindex löschen
Um einen vorhandenen Volltextindex zu löschen, können Sie den Befehl find verwenden, um den Indexnamen zu finden:
>db.posts.getIndexes()
Rufen Sie den Indexnamen über den obigen Befehl ab. In diesem Beispiel ist der Indexname post_text_text. Führen Sie den folgenden Befehl aus, um den Index zu löschen:
>db.posts.dropIndex("post_text_text")
Andere Erweiterungen