You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by cp...@apache.org on 2018/02/09 18:06:47 UTC
lucene-solr:branch_7x: SOLR-11931: Fix contrib/ltr custom inner class
feature/normaliser/model persistence.
Repository: lucene-solr
Updated Branches:
refs/heads/branch_7x b8224ad6b -> 530a931c6
SOLR-11931: Fix contrib/ltr custom inner class feature/normaliser/model persistence.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/530a931c
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/530a931c
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/530a931c
Branch: refs/heads/branch_7x
Commit: 530a931c66a94ae247700adba3bc4f2395728008
Parents: b8224ad
Author: Christine Poerschke <cp...@apache.org>
Authored: Fri Feb 9 17:28:17 2018 +0000
Committer: Christine Poerschke <cp...@apache.org>
Committed: Fri Feb 9 18:04:25 2018 +0000
----------------------------------------------------------------------
solr/CHANGES.txt | 2 +
.../ltr/store/rest/ManagedFeatureStore.java | 2 +-
.../solr/ltr/store/rest/ManagedModelStore.java | 4 +-
.../store/rest/TestModelManagerPersistence.java | 66 ++++++++++++++++++++
4 files changed, 71 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/530a931c/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index e6a54a0..04a5c8d 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -175,6 +175,8 @@ Bug Fixes
* SOLR-11459: In-place update of nonexistent doc following existing doc update fails to create the doc.
(Andrey Kudryavtsev via Mikhail Khludnev)
+* SOLR-11931: Fix contrib/ltr custom inner class feature/normaliser/model persistence. (Christine Poerschke)
+
Optimizations
----------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/530a931c/solr/contrib/ltr/src/java/org/apache/solr/ltr/store/rest/ManagedFeatureStore.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/store/rest/ManagedFeatureStore.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/store/rest/ManagedFeatureStore.java
index 6b415a6..9ef36b8 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/store/rest/ManagedFeatureStore.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/store/rest/ManagedFeatureStore.java
@@ -192,7 +192,7 @@ public class ManagedFeatureStore extends ManagedResource implements ManagedResou
private static LinkedHashMap<String,Object> toFeatureMap(Feature feat) {
final LinkedHashMap<String,Object> o = new LinkedHashMap<>(4, 1.0f); // 1 extra for caller to add store
o.put(NAME_KEY, feat.getName());
- o.put(CLASS_KEY, feat.getClass().getCanonicalName());
+ o.put(CLASS_KEY, feat.getClass().getName());
o.put(PARAMS_KEY, feat.paramsToMap());
return o;
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/530a931c/solr/contrib/ltr/src/java/org/apache/solr/ltr/store/rest/ManagedModelStore.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/store/rest/ManagedModelStore.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/store/rest/ManagedModelStore.java
index 342a140..bdc4cfd 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/store/rest/ManagedModelStore.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/store/rest/ManagedModelStore.java
@@ -268,7 +268,7 @@ public class ManagedModelStore extends ManagedResource implements ManagedResourc
final LinkedHashMap<String,Object> modelMap = new LinkedHashMap<>(5, 1.0f);
modelMap.put(NAME_KEY, model.getName());
- modelMap.put(CLASS_KEY, model.getClass().getCanonicalName());
+ modelMap.put(CLASS_KEY, model.getClass().getName());
modelMap.put(STORE_KEY, model.getFeatureStoreName());
final List<Map<String,Object>> features = new ArrayList<>();
@@ -321,7 +321,7 @@ public class ManagedModelStore extends ManagedResource implements ManagedResourc
private static LinkedHashMap<String,Object> toNormalizerMap(Normalizer norm) {
final LinkedHashMap<String,Object> normalizer = new LinkedHashMap<>(2, 1.0f);
- normalizer.put(CLASS_KEY, norm.getClass().getCanonicalName());
+ normalizer.put(CLASS_KEY, norm.getClass().getName());
final LinkedHashMap<String,Object> params = norm.paramsToMap();
if (params != null) {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/530a931c/solr/contrib/ltr/src/test/org/apache/solr/ltr/store/rest/TestModelManagerPersistence.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/store/rest/TestModelManagerPersistence.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/store/rest/TestModelManagerPersistence.java
index a056cf7..16a202f 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/store/rest/TestModelManagerPersistence.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/store/rest/TestModelManagerPersistence.java
@@ -22,14 +22,17 @@ import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
import org.apache.commons.io.FileUtils;
import org.apache.solr.ltr.TestRerankBase;
+import org.apache.solr.ltr.feature.Feature;
import org.apache.solr.ltr.feature.FieldValueFeature;
import org.apache.solr.ltr.feature.ValueFeature;
import org.apache.solr.ltr.model.DefaultWrapperModel;
import org.apache.solr.ltr.model.LinearModel;
+import org.apache.solr.ltr.norm.Normalizer;
import org.apache.solr.ltr.store.FeatureStore;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -261,4 +264,67 @@ public class TestModelManagerPersistence extends TestRerankBase {
// NOTE: we don't test the persistence of the deletion here because it's tested in testFilePersistence
}
+
+ public static class DummyCustomFeature extends ValueFeature {
+ public DummyCustomFeature(String name, Map<String,Object> params) {
+ super(name, params);
+ }
+ }
+
+ public static class DummyCustomModel extends LinearModel {
+ public DummyCustomModel(String name, List<Feature> features, List<Normalizer> norms, String featureStoreName,
+ List<Feature> allFeatures, Map<String,Object> params) {
+ super(name, features, norms, featureStoreName, allFeatures, params);
+ }
+ }
+
+ @Test
+ public void testInnerCustomClassesPersistence() throws Exception {
+
+ final String featureStoreName = "test42";
+
+ final String featureName = "feature42";
+ final String featureClassName;
+ if (random().nextBoolean()) {
+ featureClassName = ValueFeature.class.getName();
+ } else {
+ featureClassName = DummyCustomFeature.class.getName();
+ }
+
+ loadFeature(featureName, featureClassName, "test42",
+ "{\"value\":"+random().nextInt(100)+"}");
+ assertJQ(ManagedFeatureStore.REST_END_POINT + "/"+featureStoreName,
+ "/features/[0]/name=='"+featureName+"'");
+
+ final String modelName = "model42";
+ final String modelClassName;
+ if (random().nextBoolean()) {
+ modelClassName = LinearModel.class.getName();
+ } else {
+ modelClassName = DummyCustomModel.class.getName();
+ }
+
+ loadModel(modelName, modelClassName,
+ new String[] { featureName }, featureStoreName,
+ "{\"weights\":{\""+featureName+"\":1.0}}");
+ assertJQ(ManagedModelStore.REST_END_POINT,
+ "/models/[0]/name=='"+modelName+"'");
+
+ restTestHarness.reload();
+ assertJQ(ManagedFeatureStore.REST_END_POINT + "/"+featureStoreName,
+ "/features/[0]/name=='"+featureName+"'");
+ assertJQ(ManagedModelStore.REST_END_POINT,
+ "/models/[0]/name=='"+modelName+"'");
+
+ assertJDelete(ManagedModelStore.REST_END_POINT + "/"+modelName,
+ "/responseHeader/status==0");
+ assertJQ(ManagedModelStore.REST_END_POINT,
+ "/models/==[]");
+
+ assertJDelete(ManagedFeatureStore.REST_END_POINT + "/"+featureStoreName,
+ "/responseHeader/status==0");
+ assertJQ(ManagedFeatureStore.REST_END_POINT + "/"+featureStoreName,
+ "/features/==[]");
+ }
+
}