diff options
author | Eliot Horowitz <eliot@10gen.com> | 2013-01-09 16:57:50 -0500 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2013-01-09 16:57:50 -0500 |
commit | 3aff9a906f6f7b9681187813c71a17332fb6ede3 (patch) | |
tree | 4bfbe0ef1bd02b68b2c6d915ba693ebc7053c432 /src/mongo/db/fts/fts_spec.cpp | |
parent | cd8efe3eb044511e736cc9b4f6caa21ccde571ab (diff) | |
download | mongo-3aff9a906f6f7b9681187813c71a17332fb6ede3.tar.gz |
SERVER-8124: in fts, error out when creating indexes if score is too high
Diffstat (limited to 'src/mongo/db/fts/fts_spec.cpp')
-rw-r--r-- | src/mongo/db/fts/fts_spec.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/mongo/db/fts/fts_spec.cpp b/src/mongo/db/fts/fts_spec.cpp index ab541b6a7f4..21c2ba1bb00 100644 --- a/src/mongo/db/fts/fts_spec.cpp +++ b/src/mongo/db/fts/fts_spec.cpp @@ -29,7 +29,7 @@ namespace mongo { using namespace mongoutils; const double MAX_WEIGHT = 1000000000.0; - + const double MAX_WORD_WEIGHT = MAX_WEIGHT / 10000; FTSSpec::FTSSpec( const BSONObj& indexInfo ) { _defaultLanguage = indexInfo["default_language"].valuestrsafe(); @@ -55,7 +55,7 @@ namespace mongo { else { double num = e.number(); _weights[ e.fieldName() ] = num; - verify( num > 0 && num < MAX_WEIGHT ); + verify( num > 0 && num < MAX_WORD_WEIGHT ); } } verify( _wildcard || _weights.size() ); @@ -336,8 +336,11 @@ namespace mongo { BSONObj weights; { BSONObjBuilder b; - for ( map<string,int>::iterator i = m.begin(); i != m.end(); ++i ) + for ( map<string,int>::iterator i = m.begin(); i != m.end(); ++i ) { + uassert( 16674, "score for word too high", + i->second > 0 && i->second < MAX_WORD_WEIGHT ); b.append( i->first, i->second ); + } weights = b.obj(); } |