summaryrefslogtreecommitdiff
path: root/src/mongo/db/matcher/expression_parser_text.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/matcher/expression_parser_text.cpp')
-rw-r--r--src/mongo/db/matcher/expression_parser_text.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/mongo/db/matcher/expression_parser_text.cpp b/src/mongo/db/matcher/expression_parser_text.cpp
index a01529bee91..6968dc6c0cb 100644
--- a/src/mongo/db/matcher/expression_parser_text.cpp
+++ b/src/mongo/db/matcher/expression_parser_text.cpp
@@ -79,12 +79,23 @@ StatusWithMatchExpression expressionParserTextCallbackReal(const BSONObj& queryO
caseSensitive = caseSensitiveElt.trueValue();
}
+ BSONElement diacriticSensitiveElt = queryObj["$diacriticSensitive"];
+ bool diacriticSensitive = fts::FTSQuery::diacriticSensitiveDefault;
+ if (!diacriticSensitiveElt.eoo()) {
+ expectedFieldCount++;
+ if (mongo::Bool != diacriticSensitiveElt.type()) {
+ return StatusWithMatchExpression(ErrorCodes::TypeMismatch,
+ "$diacriticSensitive requires a boolean value");
+ }
+ diacriticSensitive = diacriticSensitiveElt.trueValue();
+ }
+
if (queryObj.nFields() != expectedFieldCount) {
return StatusWithMatchExpression(ErrorCodes::BadValue, "extra fields in $text");
}
unique_ptr<TextMatchExpression> e(new TextMatchExpression());
- Status s = e->init(query, language, caseSensitive);
+ Status s = e->init(query, language, caseSensitive, diacriticSensitive);
if (!s.isOK()) {
return StatusWithMatchExpression(s);
}