Overview
Kotlin Syncドライバーを使用すると、 MongoDB Search およびMongoDB ベクトル検索インデックスをプログラムで管理できます。
MongoDB Search を使用すると、 MongoDB Atlasでホストされているコレクションに対して全文検索を実行できます。 MongoDB Search インデックスは、検索の動作とインデックスを作成するフィールド を指定します。
MongoDB ベクトル検索と、 MongoDB Atlasに保存されているベクトル埋め込みに対してセマンティック検索を実行できます。ベクトル検索インデックスは、ベクトル対象のベクトル埋め込みと、データを事前フィルタリングするために使用するブール値、 date、 objectId、数値、string、または UUID 値のインデックスを定義します。
コレクションに対して次のメソッドを呼び出して、 MongoDB Search およびベクトル検索インデックスを管理できます。
createSearchIndex()( MongoDB Search インデックスでのみ有効)createSearchIndexes()listSearchIndexes()updateSearchIndex()dropSearchIndex()
注意
MongoDB Search とベクトル検索 のインデックスマネジメント メソッドは非同期で実行され、正常に実行されたことを確認する前に戻る可能性があります。インデックスの現在のステータスを確認するには、listSearchIndexes() メソッドを呼び出すか、Atlas UIでインデックス リストを表示します。
次のセクションでは、前述の各メソッドの使用方法を示すコード例を示します。
検索インデックスを作成
createSearchIndex() メソッドを使用して、単一のMongoDB Searchインデックスを作成できます。このメソッドを使用してベクトル検索インデックスを作成することはできません。
createSearchIndexes() メソッドを使用して、複数のMongoDB Search またはベクトル検索インデックスを作成できます。各インデックスに対して SearchIndexModelインスタンスを作成し、 インスタンスのリストをSearchIndexModel createSearchIndexes()メソッドに渡す必要があります。
次のコード例は、 MongoDB Searchインデックスの作成方法を示しています。
val index = Document("mappings", Document("dynamic", true)) collection.createSearchIndex("mySearchIdx", index)
次のコード例は、 1 回の呼び出しでMongoDB Search とベクトル検索インデックスを作成する方法を示しています。
val searchIdxMdl = SearchIndexModel( "searchIdx", Document("analyzer", "lucene.standard").append( "mappings", Document("dynamic", true) ), SearchIndexType.search() ) val vectorSearchIdxMdl = SearchIndexModel( "vsIdx", Document( "fields", listOf( Document("type", "vector") .append("path", "embeddings") .append("numDimensions", 1536) .append("similarity", "dotProduct") ) ), SearchIndexType.vectorSearch() ) collection.createSearchIndexes( listOf(searchIdxMdl, vectorSearchIdxMdl) )
MongoDB Search インデックスの定義に使用される構文の詳細については、Atlas ドキュメントの「 MongoDB Search インデックスシンタックスの確認 」ガイドを参照してください。
検索インデックスをリストする
listSearchIndexes() メソッドを使用して、コレクション内のすべてのMongoDB Search インデックスを返すことができます。
次のコード例は、コレクション内の検索インデックスのリストを出力する方法を示しています。
val results = collection.listSearchIndexes() results.forEach { result -> println(result) }
検索インデックスをアップデートする
updateSearchIndex() メソッドを使用して、 MongoDB Searchインデックスを更新できます。
次のコードは、検索インデックスを更新する方法を示しています。
val newIndex = Document("mappings", Document("dynamic", true)) collection.updateSearchIndex("<index to update>", newIndex)
検索インデックスを削除する
dropSearchIndex() メソッドを使用して、 MongoDB Searchインデックス を削除できます。
次のコードは、コレクションから検索インデックスを削除する方法を示しています。
collection.dropIndex("<index to delete>")
詳細情報
MongoDB Search の詳細については、 「 MongoDB Search インデックス 」のドキュメントを参照してください。