sql >> データベース >  >> NoSQL >> MongoDB

ドキュメントフィールドMongoDBで類似性を見つける方法は?

    aboutでテキストの類似性を計算する必要がある場合 フィールドでは、これを実現する1つの方法は、テキストインデックス を使用することです。 。

    たとえば(mongo シェル)、aboutにテキストインデックスを作成する場合 フィールド:

    db.collection.createIndex({about: 'text'})
    

    次のようなクエリを実行できます( https://docs.mongodb.com/manual/reference/operator/query/text/#sort-by-text-search-score ):

    db.collection.find({$text: {$search: 'similarity in comparison'}}, {score: {$meta: 'textScore'}}).sort({score: {$meta: 'textScore'}})
    

    サンプルドキュメントでは、クエリは次のようなものを返す必要があります:

    {
      "_id": "foobar1",
      "about": "similarity in comparison",
      "score": 1.5
    }
    {
      "_id": "foobar2",
      "about": "perfect similarity in comparison",
      "score": 1.3333333333333333
    }
    {
      "_id": "foobar3",
      "about": "partial similarity",
      "score": 0.75
    }
    

    これは、類似度スコアの降順で並べ替えられます。結果の例とは異なり、foobar4を文書化することに注意してください。 クエリされた単語がfoobar4に存在しないため、は返されません。 。

    テキストインデックスは、MongoDBでは特殊なタイプのインデックスと見なされるため、その使用法に関する特定のルールが付属しています。詳細については、以下を参照してください:




    1. MongoDBのネストされた配列に要素を挿入します

    2. doc配列の各要素を条件に一致させるmongodbクエリ

    3. マングースのユーザーIDで一度に2つのテーブル(ドキュメント)値を選択するにはどうすればよいですか?

    4. DjangoでGraphQLを使用してMongoDBからデータをクエリする:Get-Go(1)