diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2018-01-09 16:07:43 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2018-01-09 16:07:43 +0100 |
commit | dc0f70fac9167acf487453daf565636c675934df (patch) | |
tree | aaccfae7aaf4a48e35655a66c75ea57412ede6a6 /config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java | |
parent | fa9fe82c82d6a562e3ae02b9577f536a16c72c92 (diff) |
Basic TensorFlow integration
This wil replace any occurrence of tensorflow(...)
in ranking expressions with the corresponding translated expression.
It is functional but these tings are outstanding
- Propagate warnings
- Import a model just once even if referred multiple times
- Add constants as tensor files rather than config
Diffstat (limited to 'config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java')
-rw-r--r-- | config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java b/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java index 1021227b0e6..cf92d1f979b 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/RankProfile.java @@ -1,7 +1,9 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.searchdefinition; +import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.search.query.ranking.Diversity; +import com.yahoo.searchdefinition.expressiontransforms.ExpressionTransforms; import com.yahoo.searchdefinition.parser.ParseException; import com.yahoo.searchlib.rankingexpression.ExpressionFunction; import com.yahoo.searchlib.rankingexpression.FeatureList; @@ -9,13 +11,22 @@ import com.yahoo.searchlib.rankingexpression.RankingExpression; import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue; import com.yahoo.searchlib.rankingexpression.evaluation.Value; import com.yahoo.searchlib.rankingexpression.rule.ReferenceNode; -import com.yahoo.searchlib.rankingexpression.rule.SetMembershipNode; -import com.yahoo.searchlib.rankingexpression.transform.ConstantDereferencer; -import com.yahoo.searchlib.rankingexpression.transform.Simplifier; -import com.yahoo.config.application.api.ApplicationPackage; -import java.io.*; -import java.util.*; +import java.io.File; +import java.io.IOException; +import java.io.Reader; +import java.io.Serializable; +import java.io.StringReader; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; /** * Represents a rank profile - a named set of ranking settings @@ -40,7 +51,7 @@ public class RankProfile implements Serializable, Cloneable { protected Set<RankSetting> rankSettings = new java.util.LinkedHashSet<>(); /** The ranking expression to be used for first phase */ - private RankingExpression firstPhaseRanking= null; + private RankingExpression firstPhaseRanking= null; /** The ranking expression to be used for second phase */ private RankingExpression secondPhaseRanking = null; @@ -485,7 +496,7 @@ public class RankProfile implements Serializable, Cloneable { /** * Returns the string form of the second phase ranking expression. - * + * * @return string form of second phase ranking expression */ public String getSecondPhaseRankingString() { @@ -702,12 +713,7 @@ public class RankProfile implements Serializable, Cloneable { Map<String, Macro> inlineMacros) { if (expression == null) return null; Map<String, String> rankPropertiesOutput = new HashMap<>(); - expression = new ConstantDereferencer(constants).transform(expression); - expression = new ConstantTensorTransformer(constants, rankPropertiesOutput).transform(expression); - expression = new MacroInliner(inlineMacros).transform(expression); - expression = new MacroShadower(getMacros()).transform(expression); - expression = new TensorTransformer(this).transform(expression); - expression = new Simplifier().transform(expression); + expression = new ExpressionTransforms().transform(expression, this, constants, inlineMacros, rankPropertiesOutput); for (Map.Entry<String, String> rankProperty : rankPropertiesOutput.entrySet()) { addRankProperty(rankProperty.getKey(), rankProperty.getValue()); } @@ -975,7 +981,7 @@ public class RankProfile implements Serializable, Cloneable { throw new IllegalArgumentException("match-phase did not set max-hits > 0"); } } - + } public static class TypeSettings { |