Shinsuke Sugaya před 7 roky
rodič
revize
5e7a340f96

+ 3 - 5
plugin.xml

@@ -75,16 +75,14 @@
 			<param name="plugin.zip.version" value="6.3.1" />
 		</antcall>
 		<!-- learning-to-rank -->
-		<!--
 		<antcall target="install.plugin">
-			<param name="repo.url" value="${maven.snapshot.repo.url}" />
+			<param name="repo.url" value="${maven.release.repo.url}" />
 			<param name="plugin.groupId" value="org/codelibs" />
 			<param name="plugin.name.prefix" value="elasticsearch-" />
 			<param name="plugin.name" value="learning-to-rank" />
-			<param name="plugin.version" value="6.3.0-SNAPSHOT" />
-			<param name="plugin.zip.version" value="6.3.0-20180627.070011-1" />
+			<param name="plugin.version" value="6.3.0" />
+			<param name="plugin.zip.version" value="6.3.0" />
 		</antcall>
-		-->
 
 		<antcall target="remove.jars" />
 	</target>

+ 4 - 0
src/main/java/org/codelibs/fess/Constants.java

@@ -144,6 +144,10 @@ public class Constants extends CoreLibConstants {
 
     public static final String PURGE_SUGGEST_SEARCH_LOG_DAY_PROPERTY = "purge.suggest.searchlog.day";
 
+    public static final String LTR_MODEL_NAME_PROPERTY = "ltr.model.name";
+
+    public static final String LTR_WINDOW_SIZE_PROPERTY = "ltr.window.size";
+
     public static final String REQUEST_QUERIES = "fess.Queries";
 
     public static final String HIGHLIGHT_QUERIES = "fess.HighlightQueries";

+ 1 - 1
src/main/java/org/codelibs/fess/helper/QueryHelper.java

@@ -953,7 +953,7 @@ public class QueryHelper {
     }
 
     public RescorerBuilder<?>[] getRescorers(final Map<String, Object> params) {
-        return queryRescorerList.stream().map(r -> r.evaluate(params)).toArray(n -> new RescorerBuilder<?>[n]);
+        return queryRescorerList.stream().map(r -> r.evaluate(params)).filter(b -> b != null).toArray(n -> new RescorerBuilder<?>[n]);
     }
 
     public void addQueryRescorer(final QueryRescorer rescorer) {

+ 16 - 0
src/main/java/org/codelibs/fess/mylasta/direction/FessProp.java

@@ -628,6 +628,22 @@ public interface FessProp {
                 + ComponentUtil.getSystemHelper().getProductVersion() + "; +http://fess.codelibs.org/bot.html)");
     }
 
+    public default void setLtrModelName(final String value) {
+        setSystemProperty(Constants.LTR_MODEL_NAME_PROPERTY, value);
+    }
+
+    public default String getLtrModelName() {
+        return getSystemProperty(Constants.LTR_MODEL_NAME_PROPERTY, StringUtil.EMPTY);
+    }
+
+    public default void setLtrWindowSize(final int value) {
+        setSystemPropertyAsInt(Constants.LTR_WINDOW_SIZE_PROPERTY, value);
+    }
+
+    public default int getLtrWindowSize() {
+        return getSystemPropertyAsInt(Constants.LTR_WINDOW_SIZE_PROPERTY, 100);
+    }
+
     //
     // fess_*.properties
     //

+ 10 - 13
src/main/java/org/codelibs/fess/score/LtrQueryRescorer.java

@@ -17,26 +17,23 @@ package org.codelibs.fess.score;
 
 import java.util.Map;
 
+import org.codelibs.core.lang.StringUtil;
 import org.codelibs.fess.es.query.StoredLtrQueryBuilder;
+import org.codelibs.fess.mylasta.direction.FessConfig;
+import org.codelibs.fess.util.ComponentUtil;
 import org.elasticsearch.search.rescore.QueryRescorerBuilder;
 import org.elasticsearch.search.rescore.RescorerBuilder;
 
 public class LtrQueryRescorer implements QueryRescorer {
 
-    protected String modelName;
-
-    protected int windowSize = 100;
-
     @Override
     public RescorerBuilder<?> evaluate(Map<String, Object> params) {
-        return new QueryRescorerBuilder(new StoredLtrQueryBuilder().modelName(modelName).params(params)).windowSize(windowSize);
-    }
-
-    public void setModelName(String modelName) {
-        this.modelName = modelName;
-    }
-
-    public void setWindowSize(int windowSize) {
-        this.windowSize = windowSize;
+        final FessConfig fessConfig = ComponentUtil.getFessConfig();
+        final String modelName = fessConfig.getLtrModelName();
+        if (StringUtil.isBlank(modelName)) {
+            return null;
+        }
+        return new QueryRescorerBuilder(new StoredLtrQueryBuilder().modelName(modelName).params(params)).windowSize(fessConfig
+                .getLtrWindowSize());
     }
 }

+ 1 - 6
src/main/resources/app.xml

@@ -110,16 +110,11 @@
 		<postConstruct name="addHighlightField">
 			<arg>"content"</arg>
 		</postConstruct>
-		<!--
 		<postConstruct name="addQueryRescorer">
 			<arg>
-				<component class="org.codelibs.fess.score.LtrQueryRescorer">
-					<property name="modelName">"model_6"</property>
-					<property name="windowSize">100</property>
-				</component>
+				<component class="org.codelibs.fess.score.LtrQueryRescorer" />
 			</arg>
 		</postConstruct>
-		-->
 	</component>
 	<component name="viewHelper" class="org.codelibs.fess.helper.ViewHelper">
 		<postConstruct name="addFacetQueryView">