MongoDB $text
検索は部分一致をサポートしていません。 MongoDBでは、大文字と小文字の区別、区切り文字、ストップワード、ステミングをサポートする文字列コンテンツのテキスト検索クエリが可能です。また、検索文字列内の用語は、デフォルトでORされています。
(非常に便利な:)例を1つずつ取り上げます:
単一期間、部分的
// returns nothing because there is no world word with the value `Crai` in your
// text index and there is no whole word for which `Crai` is a recognised stem
db.submissions.find({"$text":{"$search":"\"Crai\""}})
複数の用語、完全
// returns the document because it contains all of these words
// note in the text index Dr. Bob is not a single entry since "." is a delimiter
db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bob\""}})
複数の用語、1つの部分
// returns the document because it contains the whole word "Craig" and it
// contains the whole word "Dr"
db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bo\""}})
複数の用語、両方とも部分的
// returns the document because it contains the whole word "Dr"
db.submissions.find({"$text":{"$search":"\"Crai\" \"Dr. Bo\""}})
$search
に注意してください 文字列は...
したがって、$search
に少なくとも1つの用語がある場合 文字列が一致すると、MongoDBはそのドキュメントと一致します。
この動作を確認するには、Dr. Bob
DrBob
へ 次のクエリはいいえを返します ドキュメント:
db.submissions.find({"$text":{"$search":"\"Craig\" \"Dr. Bo\""}})
db.submissions.find({"$text":{"$search":"\"Crai\" \"Dr. Bo\""}})
Dr
のため、これらは一致を返さないようになりました .
が後に続かないため、テキストインデックスの単語全体ではなくなりました。 区切り文字。