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

MongoDB-テキストフィールドのインデックスとテキストインデックスの違いは?

    2つのインデックスオプションは大きく異なります。

    • 文字列フィールドに通常のインデックスを作成すると、文字列内の値全体にインデックスが付けられます。完全に一致する可能性のある単一の単語の文字列(ログイン用のユーザー名など)に最も役立ちます。

    • 一方、テキストインデックスは、フィールドのコンテンツをトークン化してステム処理します。したがって、文字列を個々の単語またはトークンに分割し、それらをさらに語幹に減らして、同じ単語のバリアントが一致するようにします(たとえば、「talk」は「talks」、「talked」、「talking」に一致します。たとえば、「talk」など)。 3つすべての語幹です)。主に真のテキスト(文、段落など)に役立ちます。

      テキスト検索

      テキスト検索は、コレクションのドキュメント内の文字列コンテンツの検索をサポートします。 MongoDBは$textを提供します クエリおよび集計パイプラインでテキスト検索を実行する演算子。

      テキスト検索プロセス:

      tokenizes and stems the search term(s) during both the index creation and the text command execution.
      assigns a score to each document that contains the search term in the indexed fields. The score determines the relevance of a document to a given search query.
      

      $text オペレーターは単語やフレーズを検索できます。クエリは、完全な語幹単語に一致します。たとえば、ドキュメントフィールドにblueberryという単語が含まれている場合、blueという用語を検索してもドキュメントと一致しません。ただし、ブルーベリーまたはブルーベリーのいずれかでの検索は一致します。

    • $regex 検索は、文字列フィールドの通常のインデックスで使用して、パターンマッチングとワイルドカード検索を提供できます。インデックスのそれほど効果的なユーザーではありませんが、次のことができる場合はインデックスを使用します。

      フィールドにインデックスが存在する場合、MongoDBは正規表現をインデックスの値と照合します。これは、コレクションスキャンよりも高速です。正規表現が「プレフィックス式」である場合、さらに最適化が行われる可能性があります。これは、すべての潜在的な一致が同じ文字列で始まることを意味します。これにより、MongoDBはそのプレフィックスから「範囲」を構築し、その範囲内にあるインデックスの値とのみ一致することができます。

    http://docs.mongodb.org/manual/core/index-text/

    http://docs.mongodb.org/manual/reference/operator/query/regex/



    1. Laravelでジョブをキャンセルする

    2. MongoDBの配列内のアイテムの1つのインスタンスをプルする方法は?

    3. MongoDBでドキュメントを管理する方法

    4. CentOS8にApacheCouchDBをインストールする方法