diff options
author | Jon Bratseth <bratseth@gmail.com> | 2021-03-26 08:24:11 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2021-03-26 08:24:11 +0100 |
commit | 487b7df266d74511d30aa048988c9f89995d97ac (patch) | |
tree | 9a4eace0c0b0c9af417acfa1afed3db547f9c9f7 /container-search | |
parent | 1a7f7f0028c579aac2ce6747b6f9e02ebc0f31d6 (diff) |
Carry weight
Diffstat (limited to 'container-search')
7 files changed, 11 insertions, 7 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/Match.java b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/Match.java index 95b53bc5809..a87338879fe 100644 --- a/container-search/src/main/java/com/yahoo/prelude/semantics/engine/Match.java +++ b/container-search/src/main/java/com/yahoo/prelude/semantics/engine/Match.java @@ -60,7 +60,9 @@ public class Match { /** Returns a new item representing this match */ public Item toItem(String label) { - return new WordItem(getReplaceValue(), label); + var newItem = new WordItem(getReplaceValue(), label); + newItem.setWeight(item.getWeight()); + return newItem; } @Override diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/LiteralTermProduction.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/LiteralTermProduction.java index 5402d74cc4e..66d1df690bb 100644 --- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/LiteralTermProduction.java +++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/LiteralTermProduction.java @@ -62,6 +62,7 @@ public class LiteralTermProduction extends TermProduction { WordItem newItem = new WordItem(literal, getLabel()); if (replacing) { Match matched = e.getNonreferencedMatch(0); + newItem.setWeight(matched.getItem().getWeight()); insertMatch(e, matched, newItem, offset); } else { diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/Production.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/Production.java index 3073e2f7727..716622a4849 100644 --- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/Production.java +++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/Production.java @@ -33,7 +33,7 @@ public abstract class Production { public void setPosition(int position) { this.position = position; } /** Sets the weight of this production as a percentage (default is 100) */ - public void setWeight(int weight) { this.weight=weight; } + public void setWeight(int weight) { this.weight = weight; } /** Returns the weight of this production as a percentage (default is 100) */ public int getWeight() { return weight; } diff --git a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/TermProduction.java b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/TermProduction.java index 5eff8f8033a..d1a74a991da 100644 --- a/container-search/src/main/java/com/yahoo/prelude/semantics/rule/TermProduction.java +++ b/container-search/src/main/java/com/yahoo/prelude/semantics/rule/TermProduction.java @@ -60,7 +60,8 @@ public abstract class TermProduction extends Production { * TODO: Move to ruleevaluation */ protected void insertMatch(RuleEvaluation e, Match matched, Item newItem, int offset) { - newItem.setWeight(getWeight()); + if (getWeight() != 100) + newItem.setWeight(getWeight()); int insertPosition = matched.getPosition()+offset; // This check is necessary (?) because earlier items may have been removed diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/RuleBaseAbstractTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/RuleBaseAbstractTestCase.java index 44dab487b71..81d359a804d 100644 --- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/RuleBaseAbstractTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/RuleBaseAbstractTestCase.java @@ -64,7 +64,6 @@ public abstract class RuleBaseAbstractTestCase { protected Query assertSemantics(String result, Query query) { createExecution(searcher).search(query); - System.out.println(query.getModel().getQueryTree().getRoot() + " is " + result); assertEquals(result, query.getModel().getQueryTree().getRoot().toString()); return query; } diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/SemanticSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/SemanticSearcherTestCase.java index 5e5df9d2005..2e43eae3775 100644 --- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/SemanticSearcherTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/SemanticSearcherTestCase.java @@ -24,7 +24,6 @@ import static org.junit.Assert.assertEquals; * * @author bratseth */ -@SuppressWarnings("deprecation") public class SemanticSearcherTestCase extends RuleBaseAbstractTestCase { public SemanticSearcherTestCase() { @@ -35,6 +34,8 @@ public class SemanticSearcherTestCase extends RuleBaseAbstractTestCase { public void testSingleShopping() { assertSemantics("brand:sony", "sony"); + assertSemantics("brand:sony!150", + "sony!150"); } @Test @@ -63,7 +64,7 @@ public class SemanticSearcherTestCase extends RuleBaseAbstractTestCase { @Test public void testLiteralReplacing() { - assertSemantics("AND lord of rings","lotr"); + assertSemantics("AND lord of rings", "lotr"); } @Test diff --git a/container-search/src/test/java/com/yahoo/prelude/semantics/test/WeightingTestCase.java b/container-search/src/test/java/com/yahoo/prelude/semantics/test/WeightingTestCase.java index 49b93f0c81b..3e684ca6c04 100644 --- a/container-search/src/test/java/com/yahoo/prelude/semantics/test/WeightingTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/semantics/test/WeightingTestCase.java @@ -17,7 +17,7 @@ public class WeightingTestCase extends RuleBaseAbstractTestCase { assertSemantics("foo!150", "foo"); assertSemantics("AND foo!150 snip", "foo snip"); assertSemantics("AND foo!150 bar", "foo bar"); - assertSemantics("AND bar!57 foo", "bar foo"); + assertSemantics("AND bar!57 foo!150", "bar foo"); assertSemantics("AND foo!150 fu", "foo fu"); assertSemantics("AND foo!150 bar kanoo boat!237", "foo bar kanoo"); } |