MongoDBで全文検索を実行する方法 – $text演算子の使い方
MongoDBで全文検索(フルテキスト検索)を実行するには、$text 演算子を使用します。$text は、テキストインデックスが設定されたフィールドの内容に対してテキスト検索を行うための機能です。本記事では、実際のコマンド例とともに、インデックス作成から検索実行までの手順を解説します。
1. テキストインデックスの作成
まず、createIndex() メソッドを使って、検索対象となるフィールドにテキストインデックスを作成します。以下の例では、demo654 コレクションの Name フィールドに対してテキストインデックスを設定しています。
> db.demo654.createIndex({Name:"text"});
{
"createdCollectionAutomatically" : true,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
出力結果を見ると、コレクションが自動的に作成され(createdCollectionAutomatically : true)、インデックス数が1から2に増えていることがわかります。
2. ドキュメントの挿入
続いて、insertOne() メソッドを使用して、コレクションに複数のドキュメントを挿入します。
> db.demo654.insertOne({"Name":"John Doe"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea04e924deddd72997713c8")
}
> db.demo654.insertOne({"Name":"Chris Brown"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea04e9d4deddd72997713c9")
}
> db.demo654.insertOne({"Name":"John Smith"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea04ea54deddd72997713ca")
}
> db.demo654.insertOne({"Name":"David Miller"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ea04eb24deddd72997713cb")
}
3. 登録済みドキュメントの確認
find() メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。
> db.demo654.find();
上記のコマンドを実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5ea04e924deddd72997713c8"), "Name" : "John Doe" }
{ "_id" : ObjectId("5ea04e9d4deddd72997713c9"), "Name" : "Chris Brown" }
{ "_id" : ObjectId("5ea04ea54deddd72997713ca"), "Name" : "John Smith" }
{ "_id" : ObjectId("5ea04eb24deddd72997713cb"), "Name" : "David Miller" }
4. 全文検索クエリの実行
いよいよ、MongoDBで全文検索を実行してみましょう。$text の中で $search に検索したいキーワード(ここでは「John」)を指定します。
> db.demo654.find({ $text: { $search: "John" } } );
このクエリを実行すると、Name フィールドに「John」という単語を含むドキュメントだけが抽出されます。
{ "_id" : ObjectId("5ea04ea54deddd72997713ca"), "Name" : "John Smith" }
{ "_id" : ObjectId("5ea04e924deddd72997713c8"), "Name" : "John Doe" }
まとめ
$text 演算子と $search を組み合わせることで、MongoDBでも手軽に全文検索を実現できます。重要なポイントとして、$text を使用するには事前に該当フィールドへテキストインデックスを作成しておく必要があるという点に注意してください。インデックスがない状態で $text クエリを実行するとエラーが発生します。また、$search にはスペース区切りで複数のキーワードを指定することも可能で、その場合はOR条件として扱われます。
-
MongoDBで一括挿入(バルクインサート)を実行する方法
MongoDBで多数のドキュメントをまとめて登録したい場合、一括挿入(バルクインサート)を利用すると効率的です。一括挿入を実行するには、initializeUnorderedBulkOp()メソッドを使用します。 一括挿入の手順 まず、initializeUnorderedBulkOp()でバルク操作のオブジェクトを作成し、insert()メソッドで複数のドキュメントを追加していきます。最後にexecute()を呼び出すことで、まとめてデータベースに書き込まれます。 > var bulkInsertDoc = db.demo663.initializeUnorderedBulkOp
-
MySQLで全文検索を実現する方法:FULLTEXTインデックスとMATCH…AGAINST構文の使い方
MySQLで全文検索を設定する方法MySQLで全文検索(フルテキスト検索)を実現するには、FULLTEXTインデックスを使用します。全文検索は、MATCH() ... AGAINST 構文を使って実行します。本記事では、テーブルの作成から実際に検索を行うまでの一連の手順を、サンプルコードとともに解説します。1. テーブルを作成するまず、検索対象となるサンプルテーブルを作成しましょう。mysql> create table DemoTable1542 -> ( -> Id int NOT