summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2021-03-26 08:24:11 +0100
committerJon Bratseth <bratseth@gmail.com>2021-03-26 08:24:11 +0100
commit487b7df266d74511d30aa048988c9f89995d97ac (patch)
tree9a4eace0c0b0c9af417acfa1afed3db547f9c9f7 /container-search
parent1a7f7f0028c579aac2ce6747b6f9e02ebc0f31d6 (diff)
Carry weight
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/engine/Match.java4
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/LiteralTermProduction.java1
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/Production.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/semantics/rule/TermProduction.java3
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/RuleBaseAbstractTestCase.java1
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/SemanticSearcherTestCase.java5
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/semantics/test/WeightingTestCase.java2
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");
}