diff options
author | MariusArhaug <mariusarhaug@hotmail.com> | 2024-04-15 12:25:06 +0200 |
---|---|---|
committer | MariusArhaug <mariusarhaug@hotmail.com> | 2024-04-16 10:33:53 +0200 |
commit | 59ccf886b9f35f12e40334a1aac66eda6819090c (patch) | |
tree | 35779d6394b40aab3c7e4b567fe159f30093fb11 /container-search | |
parent | 444cdaee63602faf3bee850b9fa4fcb5eb77bc60 (diff) |
fix cr failures
Diffstat (limited to 'container-search')
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()); + + } } |