package org.vertexium.elasticsearch.score;
import org.vertexium.GraphConfiguration;
import org.vertexium.util.VertexiumLogger;
import org.vertexium.util.VertexiumLoggerFactory;
@Deprecated
public class EdgeCountScoringStrategyConfiguration {
private static final VertexiumLogger LOGGER = VertexiumLoggerFactory.getLogger(EdgeCountScoringStrategyConfiguration.class);
public static final String IN_EDGE_COUNT_FIELD_NAME = "__inEdgeCount";
public static final String OUT_EDGE_COUNT_FIELD_NAME = "__outEdgeCount";
public static final String CONFIG_USE_EDGE_BOOST = "useEdgeBoost";
public static final boolean DEFAULT_USE_EDGE_BOOST = true;
public static final String CONFIG_UPDATE_EDGE_BOOST = "updateEdgeBoost";
public static final boolean DEFAULT_UPDATE_EDGE_BOOST = true;
public static final String CONFIG_IN_EDGE_BOOST = "inEdgeBoost";
public static final double DEFAULT_IN_EDGE_BOOST = 1.2;
public static final String CONFIG_OUT_EDGE_BOOST = "outEdgeBoost";
public static final double DEFAULT_OUT_EDGE_BOOST = 1.1;
public static final String CONFIG_SCORE_FORMULA = "formula";
public static final String DEFAULT_SCORE_FORMULA = "_score " +
" * sqrt( " +
" 1" +
" + (inEdgeMultiplier * doc['" + IN_EDGE_COUNT_FIELD_NAME + "'].value) " +
" + (outEdgeMultiplier * doc['" + OUT_EDGE_COUNT_FIELD_NAME + "'].value) " +
" )";
private final boolean useEdgeBoost;
private final boolean updateEdgeBoost;
private final double inEdgeBoost;
private final double outEdgeBoost;
private final String scoreFormula;
public EdgeCountScoringStrategyConfiguration(GraphConfiguration config) {
useEdgeBoost = getUseEdgeBoost(config);
updateEdgeBoost = getUpdateEdgeBoost(config);
inEdgeBoost = getInEdgeBoost(config);
outEdgeBoost = getOutEdgeBoost(config);
scoreFormula = getScoreFormula(config);
}
public boolean isUseEdgeBoost() {
return useEdgeBoost;
}
public boolean isUpdateEdgeBoost() {
return isUseEdgeBoost() && updateEdgeBoost;
}
public double getInEdgeBoost() {
return inEdgeBoost;
}
public double getOutEdgeBoost() {
return outEdgeBoost;
}
public String getScoreFormula() {
return scoreFormula;
}
private static boolean getUseEdgeBoost(GraphConfiguration config) {
boolean useEdgeBoost = config.getBoolean(GraphConfiguration.SEARCH_INDEX_PROP_PREFIX + "." + CONFIG_USE_EDGE_BOOST, DEFAULT_USE_EDGE_BOOST);
LOGGER.info("Use edge boost: %b", useEdgeBoost);
return useEdgeBoost;
}
private static boolean getUpdateEdgeBoost(GraphConfiguration config) {
boolean updateEdgeBoost = config.getBoolean(GraphConfiguration.SEARCH_INDEX_PROP_PREFIX + "." + CONFIG_UPDATE_EDGE_BOOST, DEFAULT_UPDATE_EDGE_BOOST);
LOGGER.info("Update edge boost: %b", updateEdgeBoost);
return updateEdgeBoost;
}
private static double getOutEdgeBoost(GraphConfiguration config) {
double outEdgeBoost = config.getDouble(GraphConfiguration.SEARCH_INDEX_PROP_PREFIX + "." + CONFIG_OUT_EDGE_BOOST, DEFAULT_OUT_EDGE_BOOST);
LOGGER.info("Out Edge Boost: %f", outEdgeBoost);
return outEdgeBoost;
}
private static double getInEdgeBoost(GraphConfiguration config) {
double inEdgeBoost = config.getDouble(GraphConfiguration.SEARCH_INDEX_PROP_PREFIX + "." + CONFIG_IN_EDGE_BOOST, DEFAULT_IN_EDGE_BOOST);
LOGGER.info("In Edge Boost: %f", inEdgeBoost);
return inEdgeBoost;
}
private static String getScoreFormula(GraphConfiguration config) {
String scoreFormula = config.getString(GraphConfiguration.SEARCH_INDEX_PROP_PREFIX + "." + CONFIG_SCORE_FORMULA, DEFAULT_SCORE_FORMULA);
LOGGER.info("Score formula: %s", scoreFormula);
return scoreFormula;
}
}