summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorMariusArhaug <mariusarhaug@hotmail.com>2024-04-15 12:25:06 +0200
committerMariusArhaug <mariusarhaug@hotmail.com>2024-04-16 10:33:53 +0200
commit59ccf886b9f35f12e40334a1aac66eda6819090c (patch)
tree35779d6394b40aab3c7e4b567fe159f30093fb11 /container-search
parent444cdaee63602faf3bee850b9fa4fcb5eb77bc60 (diff)
fix cr failures
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/model/federation/LocalProviderSpec.java3
-rw-r--r--container-search/src/main/java/com/yahoo/search/significance/SignificanceSearcher.java8
-rw-r--r--container-search/src/test/java/com/yahoo/search/significance/test/SignificanceSearcherTest.java50
3 files changed, 51 insertions, 10 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/LocalProviderSpec.java b/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/LocalProviderSpec.java
index 9ea35339f8d..97220725fec 100644
--- a/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/LocalProviderSpec.java
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/LocalProviderSpec.java
@@ -43,7 +43,8 @@ public class LocalProviderSpec {
com.yahoo.search.searchers.ValidateFuzzySearcher.class,
com.yahoo.search.yql.FieldFiller.class,
com.yahoo.search.searchers.InputCheckingSearcher.class,
- com.yahoo.search.searchers.ContainerLatencySearcher.class);
+ com.yahoo.search.searchers.ContainerLatencySearcher.class,
+ com.yahoo.search.significance.SignificanceSearcher.class);
public final String clusterName;
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 f1e0067b185..1a0f82cc068 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
@@ -16,6 +16,8 @@ import com.yahoo.search.Result;
import com.yahoo.search.Searcher;
import com.yahoo.search.searchchain.Execution;
+import java.util.Optional;
+
import static com.yahoo.prelude.querytransform.StemmingSearcher.STEMMING;
/**
@@ -42,7 +44,11 @@ public class SignificanceSearcher extends Searcher {
if (significanceModelRegistry == null) return execution.search(query);
Language language = query.getModel().getParsingLanguage();
- setIDF(query.getModel().getQueryTree().getRoot(), significanceModelRegistry.getModel(language));
+ Optional<SignificanceModel> model = significanceModelRegistry.getModel(language);
+
+ if (model.isEmpty()) return execution.search(query);
+
+ setIDF(query.getModel().getQueryTree().getRoot(), model.get());
return execution.search(query);
}
diff --git a/container-search/src/test/java/com/yahoo/search/significance/test/SignificanceSearcherTest.java b/container-search/src/test/java/com/yahoo/search/significance/test/SignificanceSearcherTest.java
index 56d7b53825d..890db3abb51 100644
--- a/container-search/src/test/java/com/yahoo/search/significance/test/SignificanceSearcherTest.java
+++ b/container-search/src/test/java/com/yahoo/search/significance/test/SignificanceSearcherTest.java
@@ -17,6 +17,7 @@ import org.junit.jupiter.api.Test;
import java.nio.file.Path;
import java.util.HashMap;
+
import static com.yahoo.test.JunitCompat.assertEquals;
/**
@@ -33,16 +34,19 @@ public class SignificanceSearcherTest {
map.put(Language.ENGLISH, Path.of("src/test/java/com/yahoo/search/significance/model/en.json"));
significanceModelRegistry = new DefaultSignificanceModelRegistry(map);
- // TODO change to mock
searcher = new SignificanceSearcher(significanceModelRegistry);
}
- private Execution createExecution() {
+ private Execution createExecution(SignificanceSearcher searcher) {
return new Execution(new Chain<>(searcher), Execution.Context.createContextStub());
}
+ private Execution createExecution() {
+ return new Execution(new Chain<>(), Execution.Context.createContextStub());
+ }
+
@Test
- void testSimpleSignificanceValue() {
+ void testSignificanceValueOnSimpleQuery() {
Query q = new Query();
AndItem root = new AndItem();
@@ -54,14 +58,14 @@ public class SignificanceSearcherTest {
q.getModel().getQueryTree().setRoot(root);
- SignificanceModel model = significanceModelRegistry.getModel(Language.ENGLISH);
+ SignificanceModel model = significanceModelRegistry.getModel(Language.ENGLISH).get();
var helloFrequency = model.documentFrequency("Hello");
var helloSignificanceValue = SignificanceSearcher.calculateIDF(helloFrequency.corpusSize(), helloFrequency.frequency());
var worldFrequency = model.documentFrequency("world");
var worldSignificanceValue = SignificanceSearcher.calculateIDF(worldFrequency.corpusSize(), worldFrequency.frequency());
- Result r = createExecution().search(q);
+ Result r = createExecution(searcher).search(q);
root = (AndItem) r.getQuery().getModel().getQueryTree().getRoot();
WordItem w0 = (WordItem) root.getItem(0);
@@ -73,7 +77,7 @@ public class SignificanceSearcherTest {
}
@Test
- void testRecursiveSignificanceValues() {
+ void testSignificanceValueOnRecursiveQuery() {
Query q = new Query();
AndItem root = new AndItem();
WordItem child1 = new WordItem("hello", true);
@@ -95,7 +99,7 @@ public class SignificanceSearcherTest {
q.getModel().getQueryTree().setRoot(root);
- SignificanceModel model = significanceModelRegistry.getModel(Language.ENGLISH);
+ SignificanceModel model = significanceModelRegistry.getModel(Language.ENGLISH).get();
var helloFrequency = model.documentFrequency("hello");
var helloSignificanceValue = SignificanceSearcher.calculateIDF(helloFrequency.corpusSize(), helloFrequency.frequency());
@@ -104,7 +108,7 @@ public class SignificanceSearcherTest {
- Result r = createExecution().search(q);
+ Result r = createExecution(searcher).search(q);
root = (AndItem) r.getQuery().getModel().getQueryTree().getRoot();
WordItem w0 = (WordItem) root.getItem(0);
@@ -116,4 +120,34 @@ public class SignificanceSearcherTest {
assertEquals(SignificanceSearcher.calculateIDF(10, 2), w3.getSignificance());
}
+
+ @Test
+ void testSignificanceValueOnEmptyQuery() {
+ Query q = new Query();
+ q.getModel().setLanguage(Language.NORWEGIAN_BOKMAL);
+ AndItem root = new AndItem();
+ WordItem tmp;
+ tmp = new WordItem("Hei", true);
+ root.addItem(tmp);
+ tmp = new WordItem("Verden", true);
+ root.addItem(tmp);
+
+
+ q.getModel().getQueryTree().setRoot(root);
+ Result r = createExecution(searcher).search(q);
+ root = (AndItem) r.getQuery().getModel().getQueryTree().getRoot();
+
+ WordItem w0 = (WordItem) root.getItem(0);
+ WordItem w1 = (WordItem) root.getItem(1);
+
+ Result r0 = createExecution().search(q);
+ root = (AndItem) r0.getQuery().getModel().getQueryTree().getRoot();
+
+ WordItem w0_0 = (WordItem) root.getItem(0);
+ WordItem w0_1 = (WordItem) root.getItem(1);
+
+ assertEquals(w0_0.getSignificance(), w0.getSignificance());
+ assertEquals(w0_1.getSignificance(), w1.getSignificance());
+
+ }
}