diff options
-rw-r--r-- | vsm/src/tests/searcher/searcher.cpp | 118 | ||||
-rw-r--r-- | vsm/src/vespa/vsm/searcher/floatfieldsearcher.cpp | 21 | ||||
-rw-r--r-- | vsm/src/vespa/vsm/searcher/intfieldsearcher.cpp | 25 |
3 files changed, 83 insertions, 81 deletions
diff --git a/vsm/src/tests/searcher/searcher.cpp b/vsm/src/tests/searcher/searcher.cpp index 3d1f6939887..8bde7dce7e0 100644 --- a/vsm/src/tests/searcher/searcher.cpp +++ b/vsm/src/tests/searcher/searcher.cpp @@ -598,70 +598,70 @@ TEST("utf8 flexible searcher"){ TEST("integer search") { IntFieldSearcher fs; - assertInt(fs, "10", 10, true); - assertInt(fs, "9", 10, false); - assertInt(fs, ">9", 10, true); - assertInt(fs, ">9", 9, false); - assertInt(fs, "<11", 10, true); - assertInt(fs, "<11", 11, false); - assertInt(fs, "-10", -10, true); - assertInt(fs, "-9", -10, false); - assertInt(fs, "a", 10, false); - assertInt(fs, "[-5;5]", -5, true); - assertInt(fs, "[-5;5]", 0, true); - assertInt(fs, "[-5;5]", 5, true); - assertInt(fs, "[-5;5]", -6, false); - assertInt(fs, "[-5;5]", 6, false); - - assertInt(fs, StringList().add("9").add("11"), 10, BoolList().add(false).add(false)); - assertInt(fs, StringList().add("9").add("10"), 10, BoolList().add(false).add(true)); - assertInt(fs, StringList().add("10").add(">9"), 10, BoolList().add(true).add(true)); - - assertInt(fs, "10", LongList().add(10).add(20).add(10).add(30), Hits().add(0).add(2)); - assertInt(fs, StringList().add("10").add("20"), LongList().add(10).add(20).add(10).add(30), - HitsList().add(Hits().add(0).add(2)).add(Hits().add(1))); - - assertFieldInfo(fs, "10", 10, QTFieldInfo(0, 1, 1)); - assertFieldInfo(fs, "10", LongList().add(10).add(20).add(10).add(30), QTFieldInfo(0, 2, 4)); - assertFieldInfo(fs, StringList().add("10").add("20"), 10, - FieldInfoList().add(QTFieldInfo(0, 1, 1)).add(QTFieldInfo(0, 0, 1))); - assertFieldInfo(fs, StringList().add("10").add("20"), LongList().add(10).add(20).add(10).add(30), - FieldInfoList().add(QTFieldInfo(0, 2, 4)).add(QTFieldInfo(0, 1, 4))); + TEST_DO(assertInt(fs, "10", 10, true)); + TEST_DO(assertInt(fs, "9", 10, false)); + TEST_DO(assertInt(fs, ">9", 10, true)); + TEST_DO(assertInt(fs, ">9", 9, false)); + TEST_DO(assertInt(fs, "<11", 10, true)); + TEST_DO(assertInt(fs, "<11", 11, false)); + TEST_DO(assertInt(fs, "-10", -10, true)); + TEST_DO(assertInt(fs, "-9", -10, false)); + TEST_DO(assertInt(fs, "a", 10, false)); + TEST_DO(assertInt(fs, "[-5;5]", -5, true)); + TEST_DO(assertInt(fs, "[-5;5]", 0, true)); + TEST_DO(assertInt(fs, "[-5;5]", 5, true)); + TEST_DO(assertInt(fs, "[-5;5]", -6, false)); + TEST_DO(assertInt(fs, "[-5;5]", 6, false)); + + TEST_DO(assertInt(fs, StringList().add("9").add("11"), 10, BoolList().add(false).add(false))); + TEST_DO(assertInt(fs, StringList().add("9").add("10"), 10, BoolList().add(false).add(true))); + TEST_DO(assertInt(fs, StringList().add("10").add(">9"), 10, BoolList().add(true).add(true))); + + TEST_DO(assertInt(fs, "10", LongList().add(10).add(20).add(10).add(30), Hits().add(0).add(2))); + TEST_DO(assertInt(fs, StringList().add("10").add("20"), LongList().add(10).add(20).add(10).add(30), + HitsList().add(Hits().add(0).add(2)).add(Hits().add(1)))); + + TEST_DO(assertFieldInfo(fs, "10", 10, QTFieldInfo(0, 1, 1))); + TEST_DO(assertFieldInfo(fs, "10", LongList().add(10).add(20).add(10).add(30), QTFieldInfo(0, 2, 4))); + TEST_DO(assertFieldInfo(fs, StringList().add("10").add("20"), 10, + FieldInfoList().add(QTFieldInfo(0, 1, 1)).add(QTFieldInfo(0, 0, 1)))); + TEST_DO(assertFieldInfo(fs, StringList().add("10").add("20"), LongList().add(10).add(20).add(10).add(30), + FieldInfoList().add(QTFieldInfo(0, 2, 4)).add(QTFieldInfo(0, 1, 4)))); } TEST("floating point search") { FloatFieldSearcher fs; - assertFloat(fs, "10", 10, true); - assertFloat(fs, "10.5", 10.5, true); - assertFloat(fs, "-10.5", -10.5, true); - assertFloat(fs, ">10.5", 10.6, true); - assertFloat(fs, ">10.5", 10.5, false); - assertFloat(fs, "<10.5", 10.4, true); - assertFloat(fs, "<10.5", 10.5, false); - assertFloat(fs, "10.4", 10.5, false); - assertFloat(fs, "-10.4", -10.5, false); - assertFloat(fs, "a", 10.5, false); - assertFloat(fs, "[-5.5;5.5]", -5.5, true); - assertFloat(fs, "[-5.5;5.5]", 0, true); - assertFloat(fs, "[-5.5;5.5]", 5.5, true); - assertFloat(fs, "[-5.5;5.5]", -5.6, false); - assertFloat(fs, "[-5.5;5.5]", 5.6, false); - - assertFloat(fs, StringList().add("10").add("11"), 10.5, BoolList().add(false).add(false)); - assertFloat(fs, StringList().add("10").add("10.5"), 10.5, BoolList().add(false).add(true)); - assertFloat(fs, StringList().add(">10.4").add("10.5"), 10.5, BoolList().add(true).add(true)); - - assertFloat(fs, "10.5", FloatList().add(10.5).add(20.5).add(10.5).add(30.5), Hits().add(0).add(2)); - assertFloat(fs, StringList().add("10.5").add("20.5"), FloatList().add(10.5).add(20.5).add(10.5).add(30.5), - HitsList().add(Hits().add(0).add(2)).add(Hits().add(1))); - - assertFieldInfo(fs, "10.5", 10.5, QTFieldInfo(0, 1, 1)); - assertFieldInfo(fs, "10.5", FloatList().add(10.5).add(20.5).add(10.5).add(30.5), QTFieldInfo(0, 2, 4)); - assertFieldInfo(fs, StringList().add("10.5").add("20.5"), 10.5, - FieldInfoList().add(QTFieldInfo(0, 1, 1)).add(QTFieldInfo(0, 0, 1))); - assertFieldInfo(fs, StringList().add("10.5").add("20.5"), FloatList().add(10.5).add(20.5).add(10.5).add(30.5), - FieldInfoList().add(QTFieldInfo(0, 2, 4)).add(QTFieldInfo(0, 1, 4))); + TEST_DO(assertFloat(fs, "10", 10, true)); + TEST_DO(assertFloat(fs, "10.5", 10.5, true)); + TEST_DO(assertFloat(fs, "-10.5", -10.5, true)); + TEST_DO(assertFloat(fs, ">10.5", 10.6, true)); + TEST_DO(assertFloat(fs, ">10.5", 10.5, false)); + TEST_DO(assertFloat(fs, "<10.5", 10.4, true)); + TEST_DO(assertFloat(fs, "<10.5", 10.5, false)); + TEST_DO(assertFloat(fs, "10.4", 10.5, false)); + TEST_DO(assertFloat(fs, "-10.4", -10.5, false)); + TEST_DO(assertFloat(fs, "a", 10.5, false)); + TEST_DO(assertFloat(fs, "[-5.5;5.5]", -5.5, true)); + TEST_DO(assertFloat(fs, "[-5.5;5.5]", 0, true)); + TEST_DO(assertFloat(fs, "[-5.5;5.5]", 5.5, true)); + TEST_DO(assertFloat(fs, "[-5.5;5.5]", -5.6, false)); + TEST_DO(assertFloat(fs, "[-5.5;5.5]", 5.6, false)); + + TEST_DO(assertFloat(fs, StringList().add("10").add("11"), 10.5, BoolList().add(false).add(false))); + TEST_DO(assertFloat(fs, StringList().add("10").add("10.5"), 10.5, BoolList().add(false).add(true))); + TEST_DO(assertFloat(fs, StringList().add(">10.4").add("10.5"), 10.5, BoolList().add(true).add(true))); + + TEST_DO(assertFloat(fs, "10.5", FloatList().add(10.5).add(20.5).add(10.5).add(30.5), Hits().add(0).add(2))); + TEST_DO(assertFloat(fs, StringList().add("10.5").add("20.5"), FloatList().add(10.5).add(20.5).add(10.5).add(30.5), + HitsList().add(Hits().add(0).add(2)).add(Hits().add(1)))); + + TEST_DO(assertFieldInfo(fs, "10.5", 10.5, QTFieldInfo(0, 1, 1))); + TEST_DO(assertFieldInfo(fs, "10.5", FloatList().add(10.5).add(20.5).add(10.5).add(30.5), QTFieldInfo(0, 2, 4))); + TEST_DO(assertFieldInfo(fs, StringList().add("10.5").add("20.5"), 10.5, + FieldInfoList().add(QTFieldInfo(0, 1, 1)).add(QTFieldInfo(0, 0, 1)))); + TEST_DO(assertFieldInfo(fs, StringList().add("10.5").add("20.5"), FloatList().add(10.5).add(20.5).add(10.5).add(30.5), + FieldInfoList().add(QTFieldInfo(0, 2, 4)).add(QTFieldInfo(0, 1, 4)))); } TEST("Snippet modifier search") { diff --git a/vsm/src/vespa/vsm/searcher/floatfieldsearcher.cpp b/vsm/src/vespa/vsm/searcher/floatfieldsearcher.cpp index eb18e99fc58..6abfac2dc1e 100644 --- a/vsm/src/vespa/vsm/searcher/floatfieldsearcher.cpp +++ b/vsm/src/vespa/vsm/searcher/floatfieldsearcher.cpp @@ -12,8 +12,8 @@ IMPLEMENT_DUPLICATE(DoubleFieldSearcher); template<typename T> FloatFieldSearcherT<T>::FloatFieldSearcherT(FieldIdT fId) : - FieldSearcher(fId), - _floatTerm() + FieldSearcher(fId), + _floatTerm() {} template<typename T> @@ -22,17 +22,18 @@ FloatFieldSearcherT<T>::~FloatFieldSearcherT() {} template<typename T> void FloatFieldSearcherT<T>::prepare(QueryTermList & qtl, const SharedSearcherBuf & buf) { - FieldSearcher::prepare(qtl, buf); - for (QueryTermList::const_iterator it=qtl.begin(); it < qtl.end(); it++) { + _floatTerm.clear(); + FieldSearcher::prepare(qtl, buf); + for (QueryTermList::const_iterator it=qtl.begin(); it < qtl.end(); it++) { const QueryTerm * qt = *it; size_t sz(qt->termLen()); - if (sz) { - double low; - double high; - bool valid = qt->getAsDoubleTerm(low, high); - _floatTerm.push_back(FloatInfo(low, high, valid)); + if (sz) { + double low; + double high; + bool valid = qt->getAsDoubleTerm(low, high); + _floatTerm.push_back(FloatInfo(low, high, valid)); + } } - } } diff --git a/vsm/src/vespa/vsm/searcher/intfieldsearcher.cpp b/vsm/src/vespa/vsm/searcher/intfieldsearcher.cpp index eaa3110f821..9fc15cf919a 100644 --- a/vsm/src/vespa/vsm/searcher/intfieldsearcher.cpp +++ b/vsm/src/vespa/vsm/searcher/intfieldsearcher.cpp @@ -9,25 +9,26 @@ namespace vsm { IMPLEMENT_DUPLICATE(IntFieldSearcher); IntFieldSearcher::IntFieldSearcher(FieldIdT fId) : - FieldSearcher(fId), - _intTerm() + FieldSearcher(fId), + _intTerm() { } IntFieldSearcher::~IntFieldSearcher() {} void IntFieldSearcher::prepare(QueryTermList & qtl, const SharedSearcherBuf & buf) { - FieldSearcher::prepare(qtl, buf); - for (QueryTermList::const_iterator it=qtl.begin(); it < qtl.end(); it++) { - const QueryTerm * qt = *it; - size_t sz(qt->termLen()); - if (sz) { - int64_t low; - int64_t high; - bool valid = qt->getAsIntegerTerm(low, high); - _intTerm.push_back(IntInfo(low, high, valid)); + _intTerm.clear(); + FieldSearcher::prepare(qtl, buf); + for (QueryTermList::const_iterator it=qtl.begin(); it < qtl.end(); it++) { + const QueryTerm * qt = *it; + size_t sz(qt->termLen()); + if (sz) { + int64_t low; + int64_t high; + bool valid = qt->getAsIntegerTerm(low, high); + _intTerm.push_back(IntInfo(low, high, valid)); + } } - } } void IntFieldSearcher::onValue(const document::FieldValue & fv) |