aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@vespa.ai>2024-05-12 17:25:14 +0200
committerJon Bratseth <bratseth@vespa.ai>2024-05-12 17:25:14 +0200
commite1bb1b57d9cef2aba9a5c0191e649d7aac8147eb (patch)
treedf956008d24bb726743eb3e8848adbe93ce52a22
parent2721b3e11d361a01e36cc4030792d3daea01c740 (diff)
Trace no stemming due to language=UNKNOWN
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/DispatchTuning.java23
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/querytransform/StemmingSearcher.java7
-rw-r--r--container-search/src/main/java/com/yahoo/search/significance/SignificanceSearcher.java5
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java6
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/SimpleDetector.java2
5 files changed, 22 insertions, 21 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/DispatchTuning.java b/config-model/src/main/java/com/yahoo/vespa/model/content/DispatchTuning.java
index 15f3eece8a9..c39da176828 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/DispatchTuning.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/DispatchTuning.java
@@ -22,11 +22,6 @@ public class DispatchTuning {
private final Integer maxHitsPerPartition;
private final DispatchPolicy dispatchPolicy;
private final Double minActiveDocsCoverage;
-
- public Double getTopkProbability() {
- return topkProbability;
- }
-
private final Double topkProbability;
private DispatchTuning(Builder builder) {
@@ -45,6 +40,8 @@ public class DispatchTuning {
/** Returns the percentage of documents which must be available in a group for that group to receive queries */
public Double getMinActiveDocsCoverage() { return minActiveDocsCoverage; }
+ public Double getTopkProbability() { return topkProbability; }
+
public static class Builder {
private Integer maxHitsPerPartition;
@@ -71,14 +68,14 @@ public class DispatchTuning {
}
public static DispatchPolicy toDispatchPolicy(String policy) {
- switch (policy.toLowerCase()) {
- case "adaptive": case "random": return DispatchPolicy.ADAPTIVE; // TODO: Deprecate 'random' on Vespa 9
- case "round-robin": return DispatchPolicy.ROUNDROBIN;
- case "latency-amortized-over-requests" : return DispatchPolicy.LATENCY_AMORTIZED_OVER_REQUESTS;
- case "latency-amortized-over-time" : return DispatchPolicy.LATENCY_AMORTIZED_OVER_TIME;
- case "best-of-random-2" : return DispatchPolicy.BEST_OF_RANDOM_2;
- default: throw new IllegalArgumentException("Unknown dispatch policy '" + policy + "'");
- }
+ return switch (policy.toLowerCase()) {
+ case "adaptive", "random" -> DispatchPolicy.ADAPTIVE; // TODO: Deprecate 'random' on Vespa 9
+ case "round-robin" -> DispatchPolicy.ROUNDROBIN;
+ case "latency-amortized-over-requests" -> DispatchPolicy.LATENCY_AMORTIZED_OVER_REQUESTS;
+ case "latency-amortized-over-time" -> DispatchPolicy.LATENCY_AMORTIZED_OVER_TIME;
+ case "best-of-random-2" -> DispatchPolicy.BEST_OF_RANDOM_2;
+ default -> throw new IllegalArgumentException("Unknown dispatch policy '" + policy + "'");
+ };
}
public Builder setMinActiveDocsCoverage(Double minCoverage) {
diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/StemmingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/StemmingSearcher.java
index f27e9bbc281..0ea9cefc63e 100644
--- a/container-search/src/main/java/com/yahoo/prelude/querytransform/StemmingSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/StemmingSearcher.java
@@ -109,14 +109,17 @@ public class StemmingSearcher extends Searcher {
private Item replaceTerms(Query q, IndexFacts.Session indexFacts) {
Language language = q.getModel().getParsingLanguage();
- if (language == Language.UNKNOWN) return q.getModel().getQueryTree().getRoot();
+ if (language == Language.UNKNOWN) {
+ q.trace("Language is unknown, not stemming", 3);
+ return q.getModel().getQueryTree().getRoot();
+ }
StemContext context = new StemContext();
context.isCJK = language.isCjk();
context.language = language;
context.indexFacts = indexFacts;
context.reverseConnectivity = createReverseConnectivities(q.getModel().getQueryTree().getRoot());
- q.trace("Stemming with language="+language, 3);
+ q.trace("Stemming with language " + language, 3);
return scan(q.getModel().getQueryTree().getRoot(), context);
}
diff --git a/container-search/src/main/java/com/yahoo/search/significance/SignificanceSearcher.java b/container-search/src/main/java/com/yahoo/search/significance/SignificanceSearcher.java
index 6cef576f967..da0f98c50f5 100644
--- a/container-search/src/main/java/com/yahoo/search/significance/SignificanceSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/significance/SignificanceSearcher.java
@@ -26,9 +26,8 @@ import static com.yahoo.prelude.querytransform.StemmingSearcher.STEMMING;
/**
* Sets significance values on word items in the query tree.
*
- * @author MariusArhaug
+ * @author Marius Arhaug
*/
-
@Provides(SignificanceSearcher.SIGNIFICANCE)
@Before(STEMMING)
public class SignificanceSearcher extends Searcher {
@@ -39,7 +38,6 @@ public class SignificanceSearcher extends Searcher {
private final HashMap<String, Boolean> useModel = new HashMap<>();
-
@Inject
public SignificanceSearcher(SignificanceModelRegistry significanceModelRegistry, RankProfilesConfig rankProfilesConfig) {
this.significanceModelRegistry = significanceModelRegistry;
@@ -90,6 +88,7 @@ public class SignificanceSearcher extends Searcher {
public static double calculateIDF(long N, long nq_i) {
return Math.log(1 + (N - nq_i + 0.5) / (nq_i + 0.5));
}
+
}
diff --git a/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java
index 91f5984481a..5c613133221 100644
--- a/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java
@@ -17,6 +17,7 @@ import com.yahoo.prelude.query.Item;
import com.yahoo.prelude.query.MarkerWordItem;
import com.yahoo.prelude.query.NearestNeighborItem;
import com.yahoo.prelude.query.NumericInItem;
+import com.yahoo.prelude.query.OrItem;
import com.yahoo.prelude.query.PhraseItem;
import com.yahoo.prelude.query.PhraseSegmentItem;
import com.yahoo.prelude.query.PrefixItem;
@@ -30,6 +31,7 @@ import com.yahoo.prelude.query.SuffixItem;
import com.yahoo.prelude.query.WeakAndItem;
import com.yahoo.prelude.query.WordAlternativesItem;
import com.yahoo.prelude.query.WordItem;
+import com.yahoo.prelude.query.textualrepresentation.TextualQueryRepresentation;
import com.yahoo.prelude.querytransform.QueryRewrite;
import com.yahoo.processing.IllegalInputException;
import com.yahoo.search.Query;
@@ -557,8 +559,7 @@ public class YqlParserTestCase {
"title contains ({id: 1, connectivity: {\"id\": 3, weight: 7.0}}\"madonna\") " +
"and title contains ({id: 2}\"saint\") " +
"and title contains ({id: 3}\"angel\")");
- assertEquals("AND title:madonna title:saint title:angel",
- parsed.toString());
+ assertEquals("AND title:madonna title:saint title:angel", parsed.toString());
AndItem root = (AndItem) parsed.getRoot();
WordItem first = (WordItem) root.getItem(0);
WordItem second = (WordItem) root.getItem(1);
@@ -566,6 +567,7 @@ public class YqlParserTestCase {
assertEquals(first.getConnectedItem(), third);
assertEquals(first.getConnectivity(), 7.0d, 1E-6);
assertNull(second.getConnectedItem());
+ System.out.println(new TextualQueryRepresentation(root));
assertParseFail("select foo from bar where " +
"title contains ({id: 1, connectivity: {id: 4, weight: 7.0}}\"madonna\") " +
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/SimpleDetector.java b/linguistics/src/main/java/com/yahoo/language/simple/SimpleDetector.java
index f8d0dc83abc..662d4a807c5 100644
--- a/linguistics/src/main/java/com/yahoo/language/simple/SimpleDetector.java
+++ b/linguistics/src/main/java/com/yahoo/language/simple/SimpleDetector.java
@@ -47,7 +47,7 @@ public class SimpleDetector implements Detector {
}
public Language guessLanguage(String input) {
- if (input == null || input.length() == 0) {
+ if (input == null || input.isEmpty()) {
return Language.UNKNOWN;
}