MongoDBのフルテキスト検索
単語の数と場所を示す単語ごとにフルテキスト検索索引の確立は、ユーザーのクエリは、検索プログラムがインデックスを見つけるために、事前に確立され、検索は、ユーザーの検索方法に戻って、その結果と、記事に表示されます。
このプロセスは、単語辞書テーブルの検索処理により、検索語と類似しています。
フルテキスト検索をサポートするために、最初からMongoDBのバージョン2.4、現在15言語をサポートしていますフルテキストインデックス(一時的に中国語をサポートしていません)。
- デンマーク語
- オランダ語
- 英語
- フィンランド語
- フランス語
- ドイツ語
- ハンガリー語
- イタリア語
- ノルウェーの
- ポルトガル語
- ルーマニア
- ロシア
- スペイン語
- スウェーデン語
- トルコ語
フルテキスト検索を有効にします
MongoDBのバージョン2.6がデフォルトのフルテキスト検索で有効化された後、以前のバージョンを使用している場合、あなたはフルテキスト検索を有効にするには、次のコードを使用する必要があります。
>db.adminCommand({setParameter:true,textSearchEnabled:true})
またはコマンドを使用します。
mongod --setParameter textSearchEnabled=true
フルテキストインデックスを作成します。
記事(post_text)とラベル(タグ)の内容を含む、以下の記事の文書データセットを考えてみます。
{ "post_text": "enjoy the mongodb articles on w3cschool.cc", "tags": [ "mongodb", "w3cschool" ] }
私たちは、post_textフィールドのフルテキストインデックスを構築することができますので、私たちは、記事の内容を検索できます。
>db.posts.ensureIndex({post_text:"text"})
フルテキストインデックスを使用します
今、私たちはpost_textのフルテキストインデックスが確立されていることを、我々は記事w3cschool.ccでキーワードを検索することができます。
>db.posts.find({$text:{$search:"w3cschool.cc"}})
次のコマンドは、次のキーワードw3cschool.cc含まれる文書データを返します。
{ "_id" : ObjectId("53493d14d852429c10000002"), "post_text" : "enjoy the mongodb articles on w3cschool.cc", "tags" : [ "mongodb", "w3cschool" ] } { "_id" : ObjectId("53493d1fd852429c10000003"), "post_text" : "writing tutorials on w3cschool.cc", "tags" : [ "mongodb", "tutorial" ] }
あなたはMongoDBの古いバージョンを使用している場合は、次のコマンドを使用できます。
>db.posts.runCommand("text",{search:" w3cschool.cc"})
検索効率を向上させることができ、フルテキストインデックスを使用してください。
フルテキストインデックスを削除します
既存のフルテキストインデックスを削除するには、インデックス名を見つけるために、findコマンドを使用することができます。
>db.posts.getIndexes()
インデックスを削除するには、次のコマンドを実行し、この場合には、インデックスの名前post_text_textをコマンド上記のインデックスの名前を取得します。
>db.posts.dropIndex("post_text_text")