summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--container-search/abi-spec.json1
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/PhraseItem.java15
-rw-r--r--dependency-versions/pom.xml8
-rw-r--r--streamingvisitors/src/vespa/vsm/searcher/strchrfieldsearcher.cpp46
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;
}
}