English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
から2.4バージョンが開始すると、MongoDBはテキストインデックスをサポートし、指定された語を検索するために、ストリングフィールドでストック分析技術を使用して、ストック分析停止語(例えばa、an、Theなど)を削除して検索します。現在、MongoDBは約15言語で利用可能です。
最初は「Text Search(テキスト検索)」は実験的な機能でしたが、2.6バージョンから、この設定はデフォルトで有効になっています。
以下を考慮してくださいposts
コレクション内のドキュメント、投稿テキストおよびタグを含む-
> db.posts.insert({ "post_text": "enjoy the mongodb articles on w3codebox", "tags": ["mongodb", "w3codebox"] } { "post_text" : "writing tutorials on mongodb", "tags" : [ "mongodb", "tutorial" ] }) WriteResult({ "nInserted" : 1 })
post_textフィールド上にテキストインデックスを作成し、投稿のテキスト内で検索を行うことができます-
>db.posts.createIndex({post_text:"text"}) { "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
今、post_textフィールド上にテキストインデックスを作成しましたので、以下を検索しますw3codebox
テキストに含まれる単語のすべての投稿。
> db.posts.find({$text:{$search:"w3codebox"}}).pretty(){ "_id" : ObjectId("5dd7ce28f1dd4583e7103fe0"), "post_text" : "enjoy the mongodb articles on w3codebox", "tags" : [ "mongodb", "w3codebox" ] }
上記のコマンドは以下の結果ドキュメントを返します、その結果ドキュメントw3codebox
の投稿テキストに含まれる単語:
{ "_id" : ObjectId("53493d14d852429c10000002"), "post_text" : "enjoy the mongodb articles on w3codebox", "tags" : [ "mongodb", "w3codebox" ]}
現在のテキストインデックスを削除するには、まず以下のクエリを使用してインデックスの名前を検索してください-
>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 } ] >
上記のクエリからインデックスの名前を取得した後、以下のコマンドを実行します。ここでは、post_text_text
はインデックスの名前です。
>db.posts.dropIndex("post_text_text") { "nIndexesWas" : 2, "ok" : 1 }