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