diff options
-rw-r--r-- | container-search/abi-spec.json | 1 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/prelude/query/PhraseItem.java | 15 | ||||
-rw-r--r-- | dependency-versions/pom.xml | 8 | ||||
-rw-r--r-- | streamingvisitors/src/vespa/vsm/searcher/strchrfieldsearcher.cpp | 46 |
4 files changed, 43 insertions, 27 deletions
diff --git a/container-search/abi-spec.json b/container-search/abi-spec.json index aedccbee46b..2304743873f 100644 --- a/container-search/abi-spec.json +++ b/container-search/abi-spec.json @@ -1154,6 +1154,7 @@ "public void addItem(int, com.yahoo.prelude.query.Item)", "public com.yahoo.prelude.query.Item setItem(int, com.yahoo.prelude.query.Item)", "public java.util.Optional extractSingleChild()", + "public void setWeight(int)", "public com.yahoo.prelude.query.WordItem getWordItem(int)", "public com.yahoo.prelude.query.BlockItem getBlockItem(int)", "protected void encodeThis(java.nio.ByteBuffer)", diff --git a/container-search/src/main/java/com/yahoo/prelude/query/PhraseItem.java b/container-search/src/main/java/com/yahoo/prelude/query/PhraseItem.java index 755e8de5e4f..ff811c97ba4 100644 --- a/container-search/src/main/java/com/yahoo/prelude/query/PhraseItem.java +++ b/container-search/src/main/java/com/yahoo/prelude/query/PhraseItem.java @@ -153,14 +153,29 @@ public class PhraseItem extends CompositeIndexedItem { private void addIndexedItem(int index, IndexedItem word) { word.setIndexName(this.getIndexName()); + if (word instanceof Item item) { + item.setWeight(this.getWeight()); + } super.addItem(index, (Item) word); } private Item setIndexedItem(int index, IndexedItem word) { word.setIndexName(this.getIndexName()); + if (word instanceof Item item) { + item.setWeight(this.getWeight()); + } return super.setItem(index, (Item) word); } + @Override + public void setWeight(int weight) { + super.setWeight(weight); + for (Iterator<Item> i = getItemIterator(); i.hasNext();) { + Item word = i.next(); + word.setWeight(weight); + } + } + /** * Returns a subitem as a word item * diff --git a/dependency-versions/pom.xml b/dependency-versions/pom.xml index f4ad767c18a..fc4887e8a9c 100644 --- a/dependency-versions/pom.xml +++ b/dependency-versions/pom.xml @@ -58,15 +58,15 @@ <antlr4.vespa.version>4.13.1</antlr4.vespa.version> <apache.httpclient.vespa.version>4.5.14</apache.httpclient.vespa.version> <apache.httpcore.vespa.version>4.4.16</apache.httpcore.vespa.version> - <apache.httpclient5.vespa.version>5.3</apache.httpclient5.vespa.version> + <apache.httpclient5.vespa.version>5.3.1</apache.httpclient5.vespa.version> <apache.httpcore5.vespa.version>5.2.4</apache.httpcore5.vespa.version> <apiguardian.vespa.version>1.1.2</apiguardian.vespa.version> <asm.vespa.version>9.6</asm.vespa.version> - <assertj.vespa.version>3.25.1</assertj.vespa.version> + <assertj.vespa.version>3.25.2</assertj.vespa.version> <!-- Athenz dependencies. Make sure these dependencies match those in Vespa's internal repositories --> <athenz.vespa.version>1.11.50</athenz.vespa.version> - <aws-sdk.vespa.version>1.12.643</aws-sdk.vespa.version> + <aws-sdk.vespa.version>1.12.644</aws-sdk.vespa.version> <!-- Athenz END --> <!-- WARNING: If you change curator version, you also need to update @@ -118,7 +118,7 @@ <maven-archiver.vespa.version>3.6.1</maven-archiver.vespa.version> <maven-wagon.vespa.version>3.5.3</maven-wagon.vespa.version> <mimepull.vespa.version>1.10.0</mimepull.vespa.version> - <mockito.vespa.version>5.9.0</mockito.vespa.version> + <mockito.vespa.version>5.10.0</mockito.vespa.version> <mojo-executor.vespa.version>2.4.0</mojo-executor.vespa.version> <netty.vespa.version>4.1.106.Final</netty.vespa.version> <netty-tcnative.vespa.version>2.0.62.Final</netty-tcnative.vespa.version> diff --git a/streamingvisitors/src/vespa/vsm/searcher/strchrfieldsearcher.cpp b/streamingvisitors/src/vespa/vsm/searcher/strchrfieldsearcher.cpp index 98e88e45b3a..ba52444101d 100644 --- a/streamingvisitors/src/vespa/vsm/searcher/strchrfieldsearcher.cpp +++ b/streamingvisitors/src/vespa/vsm/searcher/strchrfieldsearcher.cpp @@ -25,36 +25,36 @@ void StrChrFieldSearcher::onValue(const document::FieldValue & fv) bool StrChrFieldSearcher::matchDoc(const FieldRef & fieldRef) { - if (_qtl.size() > 1) { - size_t mintsz = shortestTerm(); - if (fieldRef.size() >= mintsz) { - _words += matchTerms(fieldRef, mintsz); + if (_qtl.size() > 1) { + size_t mintsz = shortestTerm(); + if (fieldRef.size() >= mintsz) { + _words += matchTerms(fieldRef, mintsz); + } else { + _words += countWords(fieldRef); + } } else { - _words += countWords(fieldRef); + for (auto qt : _qtl) { + if (fieldRef.size() >= qt->termLen() || qt->isRegex() || qt->isFuzzy()) { + _words += matchTerm(fieldRef, *qt); + } else { + _words += countWords(fieldRef); + } + } } - } else { - for (auto qt : _qtl) { - if (fieldRef.size() >= qt->termLen() || qt->isRegex() || qt->isFuzzy()) { - _words += matchTerm(fieldRef, *qt); - } else { - _words += countWords(fieldRef); - } - } - } - return true; + return true; } size_t StrChrFieldSearcher::shortestTerm() const { - size_t mintsz(_qtl.front()->termLen()); - for (auto it=_qtl.begin()+1, mt=_qtl.end(); it != mt; it++) { - const QueryTerm & qt = **it; - if (qt.isRegex() || qt.isFuzzy()) { - return 0; // Must avoid "too short query term" optimization when using regex or fuzzy + size_t mintsz(_qtl.front()->termLen()); + for (auto it=_qtl.begin()+1, mt=_qtl.end(); it != mt; it++) { + const QueryTerm & qt = **it; + if (qt.isRegex() || qt.isFuzzy()) { + return 0; // Must avoid "too short query term" optimization when using regex or fuzzy + } + mintsz = std::min(mintsz, qt.termLen()); } - mintsz = std::min(mintsz, qt.termLen()); - } - return mintsz; + return mintsz; } } |