Latest web development tutorials

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")