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 2016/10/26 18:12:51 UTC
[1/2] lucene-solr:jira/solr-8542-v2: SOLR-8542: cleanups (thank you
IDE) + tweaks
Repository: lucene-solr
Updated Branches:
refs/heads/jira/solr-8542-v2 f91f33bca -> 4e444db65
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java
index 0d8b4fa..0336bf2 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRReRankingPipeline.java
@@ -31,22 +31,18 @@ import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.Term;
-import org.apache.lucene.search.BooleanClause.Occur;
-import org.apache.lucene.search.BooleanQuery.Builder;
+import org.apache.lucene.search.BooleanClause;
+import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.Explanation;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.ScoreDoc;
-import org.apache.lucene.search.Scorer.ChildScorer;
+import org.apache.lucene.search.Scorer;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
import org.apache.solr.core.SolrResourceLoader;
-import org.apache.solr.ltr.LTRRescorer;
-import org.apache.solr.ltr.LTRScoringQuery;
-import org.apache.solr.ltr.LTRScoringQuery.ModelWeight;
-import org.apache.solr.ltr.LTRScoringQuery.ModelWeight.ModelScorer;
import org.apache.solr.ltr.feature.Feature;
import org.apache.solr.ltr.feature.FieldValueFeature;
import org.apache.solr.ltr.model.LTRScoringModel;
@@ -62,7 +58,7 @@ import org.slf4j.LoggerFactory;
public class TestLTRReRankingPipeline extends LuceneTestCase {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
+
private static final SolrResourceLoader solrResourceLoader = new SolrResourceLoader();
private IndexSearcher getSearcher(IndexReader r) {
@@ -133,9 +129,9 @@ public class TestLTRReRankingPipeline extends LuceneTestCase {
w.close();
// Do ordinary BooleanQuery:
- final Builder bqBuilder = new Builder();
- bqBuilder.add(new TermQuery(new Term("field", "wizard")), Occur.SHOULD);
- bqBuilder.add(new TermQuery(new Term("field", "oz")), Occur.SHOULD);
+ final BooleanQuery.Builder bqBuilder = new BooleanQuery.Builder();
+ bqBuilder.add(new TermQuery(new Term("field", "wizard")), BooleanClause.Occur.SHOULD);
+ bqBuilder.add(new TermQuery(new Term("field", "oz")), BooleanClause.Occur.SHOULD);
final IndexSearcher searcher = getSearcher(r);
// first run the standard query
TopDocs hits = searcher.search(bqBuilder.build(), 10);
@@ -145,7 +141,7 @@ public class TestLTRReRankingPipeline extends LuceneTestCase {
final List<Feature> features = makeFieldValueFeatures(new int[] {0, 1, 2},
"final-score");
- final List<Normalizer> norms =
+ final List<Normalizer> norms =
new ArrayList<Normalizer>(
Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
final List<Feature> allFeatures = makeFieldValueFeatures(new int[] {0, 1,
@@ -204,9 +200,9 @@ public class TestLTRReRankingPipeline extends LuceneTestCase {
w.close();
// Do ordinary BooleanQuery:
- final Builder bqBuilder = new Builder();
- bqBuilder.add(new TermQuery(new Term("field", "wizard")), Occur.SHOULD);
- bqBuilder.add(new TermQuery(new Term("field", "oz")), Occur.SHOULD);
+ final BooleanQuery.Builder bqBuilder = new BooleanQuery.Builder();
+ bqBuilder.add(new TermQuery(new Term("field", "wizard")), BooleanClause.Occur.SHOULD);
+ bqBuilder.add(new TermQuery(new Term("field", "oz")), BooleanClause.Occur.SHOULD);
final IndexSearcher searcher = getSearcher(r);
// first run the standard query
@@ -221,7 +217,7 @@ public class TestLTRReRankingPipeline extends LuceneTestCase {
final List<Feature> features = makeFieldValueFeatures(new int[] {0, 1, 2},
"final-score");
- final List<Normalizer> norms =
+ final List<Normalizer> norms =
new ArrayList<Normalizer>(
Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
final List<Feature> allFeatures = makeFieldValueFeatures(new int[] {0, 1,
@@ -271,7 +267,7 @@ public class TestLTRReRankingPipeline extends LuceneTestCase {
test.put("fake", 2);
List<Feature> features = makeFieldValueFeatures(new int[] {0},
"final-score");
- List<Normalizer> norms =
+ List<Normalizer> norms =
new ArrayList<Normalizer>(
Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
List<Feature> allFeatures = makeFieldValueFeatures(new int[] {0},
@@ -279,15 +275,15 @@ public class TestLTRReRankingPipeline extends LuceneTestCase {
MockModel ltrScoringModel = new MockModel("test",
features, norms, "test", allFeatures, null);
LTRScoringQuery query = new LTRScoringQuery(ltrScoringModel);
- ModelWeight wgt = query.createWeight(null, true, 1f);
- ModelScorer modelScr = wgt.scorer(null);
+ LTRScoringQuery.ModelWeight wgt = query.createWeight(null, true, 1f);
+ LTRScoringQuery.ModelWeight.ModelScorer modelScr = wgt.scorer(null);
modelScr.getDocInfo().setOriginalDocScore(new Float(1f));
- for (final ChildScorer feat : modelScr.getChildren()) {
+ for (final Scorer.ChildScorer feat : modelScr.getChildren()) {
assertNotNull(((Feature.FeatureWeight.FeatureScorer) feat.child).getDocInfo().getOriginalDocScore());
}
features = makeFieldValueFeatures(new int[] {0, 1, 2}, "final-score");
- norms =
+ norms =
new ArrayList<Normalizer>(
Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
allFeatures = makeFieldValueFeatures(new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8,
@@ -298,7 +294,7 @@ public class TestLTRReRankingPipeline extends LuceneTestCase {
wgt = query.createWeight(null, true, 1f);
modelScr = wgt.scorer(null);
modelScr.getDocInfo().setOriginalDocScore(new Float(1f));
- for (final ChildScorer feat : modelScr.getChildren()) {
+ for (final Scorer.ChildScorer feat : modelScr.getChildren()) {
assertNotNull(((Feature.FeatureWeight.FeatureScorer) feat.child).getDocInfo().getOriginalDocScore());
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRScoringQuery.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRScoringQuery.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRScoringQuery.java
index 1dbed26..6b14a87 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRScoringQuery.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRScoringQuery.java
@@ -32,8 +32,8 @@ import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.ReaderUtil;
import org.apache.lucene.index.Term;
-import org.apache.lucene.search.BooleanClause.Occur;
-import org.apache.lucene.search.BooleanQuery.Builder;
+import org.apache.lucene.search.BooleanClause;
+import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Scorer;
import org.apache.lucene.search.TermQuery;
@@ -43,7 +43,6 @@ import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
import org.apache.solr.core.SolrResourceLoader;
-import org.apache.solr.ltr.LTRScoringQuery.FeatureInfo;
import org.apache.solr.ltr.feature.Feature;
import org.apache.solr.ltr.feature.ValueFeature;
import org.apache.solr.ltr.model.LTRScoringModel;
@@ -129,7 +128,7 @@ public class TestLTRScoringQuery extends LuceneTestCase {
@Test
public void testLTRScoringQueryEquality() throws ModelException {
final List<Feature> features = makeFeatures(new int[] {0, 1, 2});
- final List<Normalizer> norms =
+ final List<Normalizer> norms =
new ArrayList<Normalizer>(
Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
final List<Feature> allFeatures = makeFeatures(
@@ -162,8 +161,8 @@ public class TestLTRScoringQuery extends LuceneTestCase {
// Models with same algorithm, but different efi content should not match
assertFalse(m1.equals(m0));
assertFalse(m1.hashCode() == m0.hashCode());
-
-
+
+
final LTRScoringModel algorithm2 = TestLinearModel.createLinearModel(
"testModelName2",
features, norms, "testStoreName", allFeatures, modelParams);
@@ -181,7 +180,7 @@ public class TestLTRScoringQuery extends LuceneTestCase {
assertFalse(m1.hashCode() == m4.hashCode());
}
-
+
@Test
public void testLTRScoringQuery() throws IOException, ModelException {
final Directory dir = newDirectory();
@@ -206,9 +205,9 @@ public class TestLTRScoringQuery extends LuceneTestCase {
w.close();
// Do ordinary BooleanQuery:
- final Builder bqBuilder = new Builder();
- bqBuilder.add(new TermQuery(new Term("field", "wizard")), Occur.SHOULD);
- bqBuilder.add(new TermQuery(new Term("field", "oz")), Occur.SHOULD);
+ final BooleanQuery.Builder bqBuilder = new BooleanQuery.Builder();
+ bqBuilder.add(new TermQuery(new Term("field", "wizard")), BooleanClause.Occur.SHOULD);
+ bqBuilder.add(new TermQuery(new Term("field", "oz")), BooleanClause.Occur.SHOULD);
final IndexSearcher searcher = getSearcher(r);
// first run the standard query
final TopDocs hits = searcher.search(bqBuilder.build(), 10);
@@ -219,7 +218,7 @@ public class TestLTRScoringQuery extends LuceneTestCase {
List<Feature> features = makeFeatures(new int[] {0, 1, 2});
final List<Feature> allFeatures = makeFeatures(new int[] {0, 1, 2, 3, 4, 5,
6, 7, 8, 9});
- List<Normalizer> norms =
+ List<Normalizer> norms =
new ArrayList<Normalizer>(
Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
LTRScoringModel ltrScoringModel = TestLinearModel.createLinearModel("test",
@@ -235,7 +234,7 @@ public class TestLTRScoringQuery extends LuceneTestCase {
}
int[] posVals = new int[] {0, 1, 2};
int pos = 0;
- for (FeatureInfo fInfo:modelWeight.featuresInfo) {
+ for (LTRScoringQuery.FeatureInfo fInfo:modelWeight.featuresInfo) {
if (fInfo == null){
continue;
}
@@ -246,7 +245,7 @@ public class TestLTRScoringQuery extends LuceneTestCase {
final int[] mixPositions = new int[] {8, 2, 4, 9, 0};
features = makeFeatures(mixPositions);
- norms =
+ norms =
new ArrayList<Normalizer>(
Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
ltrScoringModel = TestLinearModel.createLinearModel("test",
@@ -256,7 +255,7 @@ public class TestLTRScoringQuery extends LuceneTestCase {
new LTRScoringQuery(ltrScoringModel));
assertEquals(mixPositions.length,
modelWeight.modelFeatureWeights.length);
-
+
for (int i = 0; i < mixPositions.length; i++) {
assertEquals(mixPositions[i],
modelWeight.modelFeatureValuesNormalized[i], 0.0001);
@@ -265,7 +264,7 @@ public class TestLTRScoringQuery extends LuceneTestCase {
final ModelException expectedModelException = new ModelException("no features declared for model test");
final int[] noPositions = new int[] {};
features = makeFeatures(noPositions);
- norms =
+ norms =
new ArrayList<Normalizer>(
Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
try {
@@ -293,7 +292,7 @@ public class TestLTRScoringQuery extends LuceneTestCase {
return null;
}
};
- norms =
+ norms =
new ArrayList<Normalizer>(
Collections.nCopies(features.size(),norm));
final LTRScoringModel normMeta = TestLinearModel.createLinearModel("test",
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRWithFacet.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRWithFacet.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRWithFacet.java
index ebab516..12d7924 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRWithFacet.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRWithFacet.java
@@ -19,7 +19,6 @@ package org.apache.solr.ltr;
import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.ltr.TestRerankBase;
import org.apache.solr.ltr.feature.SolrFeature;
import org.apache.solr.ltr.model.LinearModel;
import org.junit.AfterClass;
@@ -51,7 +50,7 @@ public class TestLTRWithFacet extends TestRerankBase {
"D", "popularity", "8"));
assertU(commit());
}
-
+
@Test
public void testRankingSolrFacet() throws Exception {
// before();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRWithSort.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRWithSort.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRWithSort.java
index f9740dc..05613f6 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRWithSort.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRWithSort.java
@@ -19,7 +19,6 @@ package org.apache.solr.ltr;
import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.ltr.TestRerankBase;
import org.apache.solr.ltr.feature.SolrFeature;
import org.apache.solr.ltr.model.LinearModel;
import org.junit.AfterClass;
@@ -50,7 +49,7 @@ public class TestLTRWithSort extends TestRerankBase {
"D", "popularity", "8"));
assertU(commit());
}
-
+
@Test
public void testRankingSolrSort() throws Exception {
// before();
@@ -71,7 +70,7 @@ public class TestLTRWithSort extends TestRerankBase {
assertJQ("/query" + query.toQueryString(), "/response/docs/[1]/id=='2'");
assertJQ("/query" + query.toQueryString(), "/response/docs/[2]/id=='3'");
assertJQ("/query" + query.toQueryString(), "/response/docs/[3]/id=='4'");
-
+
//Add sort
query.add("sort", "description desc");
assertJQ("/query" + query.toQueryString(), "/response/numFound/==8");
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestParallelWeightCreation.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestParallelWeightCreation.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestParallelWeightCreation.java
index 6710ef0..2e478a6 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestParallelWeightCreation.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestParallelWeightCreation.java
@@ -20,11 +20,11 @@ import org.apache.solr.client.solrj.SolrQuery;
import org.junit.Test;
public class TestParallelWeightCreation extends TestRerankBase{
-
+
@Test
public void testLTRScoringQueryParallelWeightCreationResultOrder() throws Exception {
setuptest("solrconfig-ltr_Th10_10.xml", "schema-ltr.xml");
-
+
assertU(adoc("id", "1", "title", "w1 w3", "description", "w1", "popularity",
"1"));
assertU(adoc("id", "2", "title", "w2", "description", "w2", "popularity",
@@ -36,27 +36,27 @@ public class TestParallelWeightCreation extends TestRerankBase{
assertU(adoc("id", "5", "title", "w5", "description", "w5", "popularity",
"5"));
assertU(commit());
-
+
loadFeatures("external_features.json");
loadModels("external_model.json");
loadModels("external_model_store.json");
-
+
// check to make sure that the order of results will be the same when using parallel weight creation
final SolrQuery query = new SolrQuery();
query.setQuery("*:*");
query.add("fl", "*,score");
query.add("rows", "4");
-
+
query.add("rq", "{!ltr reRankDocs=4 model=externalmodel efi.user_query=w3}");
assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/id=='1'");
assertJQ("/query" + query.toQueryString(), "/response/docs/[1]/id=='3'");
assertJQ("/query" + query.toQueryString(), "/response/docs/[2]/id=='4'");
aftertest();
}
-
+
@Test
public void testLTRQParserThreadInitialization() throws Exception {
- // setting the value of number of threads to -ve should throw an exception
+ // setting the value of number of threads to -ve should throw an exception
String msg1 = null;
try{
new LTRThreadModule(1,-1);
@@ -64,7 +64,7 @@ public class TestParallelWeightCreation extends TestRerankBase{
msg1 = iae.getMessage();;
}
assertTrue(msg1.equals("numThreadsPerRequest cannot be less than 1"));
-
+
// set totalPoolThreads to 1 and numThreadsPerRequest to 2 and verify that an exception is thrown
String msg2 = null;
try{
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestRerankBase.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestRerankBase.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestRerankBase.java
index f224c87..0158dd0 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestRerankBase.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestRerankBase.java
@@ -41,10 +41,9 @@ import org.apache.solr.core.SolrResourceLoader;
import org.apache.solr.ltr.feature.Feature;
import org.apache.solr.ltr.feature.FeatureException;
import org.apache.solr.ltr.feature.ValueFeature;
-import org.apache.solr.ltr.feature.ValueFeature.ValueFeatureWeight;
import org.apache.solr.ltr.model.LTRScoringModel;
-import org.apache.solr.ltr.model.ModelException;
import org.apache.solr.ltr.model.LinearModel;
+import org.apache.solr.ltr.model.ModelException;
import org.apache.solr.ltr.store.rest.ManagedFeatureStore;
import org.apache.solr.ltr.store.rest.ManagedModelStore;
import org.apache.solr.request.SolrQueryRequestBase;
@@ -64,7 +63,7 @@ public class TestRerankBase extends RestTestBase {
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
protected static final SolrResourceLoader solrResourceLoader = new SolrResourceLoader();
-
+
protected static File tmpSolrHome;
protected static File tmpConfDir;
@@ -95,7 +94,7 @@ public class TestRerankBase extends RestTestBase {
public static ManagedModelStore getManagedModelStore() {
return ManagedModelStore.getManagedModelStore(h.getCore());
}
-
+
protected static SortedMap<ServletHolder,String> setupTestInit(
String solrconfig, String schema,
boolean isPersistent) throws Exception {
@@ -104,10 +103,10 @@ public class TestRerankBase extends RestTestBase {
tmpConfDir.deleteOnExit();
FileUtils.copyDirectory(new File(TEST_HOME()),
tmpSolrHome.getAbsoluteFile());
-
+
final File fstore = new File(tmpConfDir, FEATURE_FILE_NAME);
final File mstore = new File(tmpConfDir, MODEL_FILE_NAME);
-
+
if (isPersistent) {
fstorefile = fstore;
mstorefile = mstore;
@@ -146,7 +145,7 @@ public class TestRerankBase extends RestTestBase {
extraServlets.put(solrRestApi, PARENT_ENDPOINT);
System.setProperty("managed.schema.mutable", "true");
-
+
return extraServlets;
}
@@ -154,9 +153,7 @@ public class TestRerankBase extends RestTestBase {
throws Exception {
initCore(solrconfig, schema);
- File mstore = null;
- File fstore = null;
- SortedMap<ServletHolder,String> extraServlets =
+ SortedMap<ServletHolder,String> extraServlets =
setupTestInit(solrconfig,schema,false);
System.setProperty("enable.update.log", "false");
@@ -168,9 +165,9 @@ public class TestRerankBase extends RestTestBase {
throws Exception {
initCore(solrconfig, schema);
- SortedMap<ServletHolder,String> extraServlets =
+ SortedMap<ServletHolder,String> extraServlets =
setupTestInit(solrconfig,schema,true);
-
+
createJettyAndHarness(tmpSolrHome.getAbsolutePath(), solrconfig, schema,
"/solr", true, extraServlets);
}
@@ -360,7 +357,7 @@ public class TestRerankBase extends RestTestBase {
features[i] = featureName;
weights[i] = "\"" + featureName + "\":1.0";
}
- loadFeature(featureName, ValueFeatureWeight.class.getCanonicalName(),
+ loadFeature(featureName, ValueFeature.ValueFeatureWeight.class.getCanonicalName(),
"{\"value\":" + i + "}");
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestSelectiveWeightCreation.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestSelectiveWeightCreation.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestSelectiveWeightCreation.java
index 0554dc1..bda2029 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestSelectiveWeightCreation.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestSelectiveWeightCreation.java
@@ -30,8 +30,8 @@ import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.index.ReaderUtil;
import org.apache.lucene.index.Term;
-import org.apache.lucene.search.BooleanClause.Occur;
-import org.apache.lucene.search.BooleanQuery.Builder;
+import org.apache.lucene.search.BooleanClause;
+import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Scorer;
import org.apache.lucene.search.TermQuery;
@@ -40,7 +40,6 @@ import org.apache.lucene.search.Weight;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.ltr.LTRScoringQuery;
import org.apache.solr.ltr.feature.Feature;
import org.apache.solr.ltr.feature.ValueFeature;
import org.apache.solr.ltr.model.LTRScoringModel;
@@ -103,12 +102,12 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
return modelWeight;
}
-
-
+
+
@BeforeClass
public static void before() throws Exception {
setuptest("solrconfig-ltr.xml", "schema-ltr.xml");
-
+
assertU(adoc("id", "1", "title", "w1 w3", "description", "w1", "popularity",
"1"));
assertU(adoc("id", "2", "title", "w2", "description", "w2", "popularity",
@@ -120,7 +119,7 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
assertU(adoc("id", "5", "title", "w5", "description", "w5", "popularity",
"5"));
assertU(commit());
-
+
loadFeatures("external_features.json");
loadModels("external_model.json");
loadModels("external_model_store.json");
@@ -130,7 +129,7 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
public static void after() throws Exception {
aftertest();
}
-
+
@Test
public void testScoringQueryWeightCreation() throws IOException, ModelException {
final Directory dir = newDirectory();
@@ -155,9 +154,9 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
w.close();
// Do ordinary BooleanQuery:
- final Builder bqBuilder = new Builder();
- bqBuilder.add(new TermQuery(new Term("field", "wizard")), Occur.SHOULD);
- bqBuilder.add(new TermQuery(new Term("field", "oz")), Occur.SHOULD);
+ final BooleanQuery.Builder bqBuilder = new BooleanQuery.Builder();
+ bqBuilder.add(new TermQuery(new Term("field", "wizard")), BooleanClause.Occur.SHOULD);
+ bqBuilder.add(new TermQuery(new Term("field", "oz")), BooleanClause.Occur.SHOULD);
final IndexSearcher searcher = getSearcher(r);
// first run the standard query
final TopDocs hits = searcher.search(bqBuilder.build(), 10);
@@ -179,7 +178,7 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
makeFeatureWeights(features));
LTRScoringQuery.ModelWeight modelWeight = performQuery(hits, searcher,
hits.scoreDocs[0].doc, new LTRScoringQuery(ltrScoringModel1, false)); // features not requested in response
-
+
assertEquals(features.size(), modelWeight.modelFeatureValuesNormalized.length);
int validFeatures = 0;
for (int i=0; i < modelWeight.featuresInfo.length; ++i){
@@ -188,7 +187,7 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
}
}
assertEquals(validFeatures, features.size());
-
+
// when features are requested in the response, weights should be created for all features
final LTRScoringModel ltrScoringModel2 = TestLinearModel.createLinearModel("test",
features, norms, "test", allFeatures,
@@ -198,7 +197,7 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
assertEquals(features.size(), modelWeight.modelFeatureValuesNormalized.length);
assertEquals(allFeatures.size(), modelWeight.extractedFeatureWeights.length);
-
+
validFeatures = 0;
for (int i=0; i < modelWeight.featuresInfo.length; ++i){
if (modelWeight.featuresInfo[i] != null && modelWeight.featuresInfo[i].isUsed()){
@@ -206,16 +205,16 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
}
}
assertEquals(validFeatures, allFeatures.size());
-
+
assertU(delI("0"));assertU(delI("1"));
r.close();
dir.close();
}
-
-
+
+
@Test
public void testSelectiveWeightsRequestFeaturesFromDifferentStore() throws Exception {
-
+
final SolrQuery query = new SolrQuery();
query.setQuery("*:*");
query.add("fl", "*,score");
@@ -227,7 +226,7 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
assertJQ("/query" + query.toQueryString(), "/response/docs/[1]/id=='3'");
assertJQ("/query" + query.toQueryString(), "/response/docs/[2]/id=='4'");
assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/fv=='matchedTitle:1.0;titlePhraseMatch:0.40254828'"); // extract all features in default store
-
+
query.remove("fl");
query.remove("rq");
query.add("fl", "*,score");
@@ -237,8 +236,8 @@ public class TestSelectiveWeightCreation extends TestRerankBase {
assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/id=='1'");
assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/score==0.999");
assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/fv=='popularity:3.0;originalScore:1.0'"); // extract all features from fstore4
-
-
+
+
query.remove("fl");
query.remove("rq");
query.add("fl", "*,score");
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestEdisMaxSolrFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestEdisMaxSolrFeature.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestEdisMaxSolrFeature.java
index 9fce51a..16e2fe3 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestEdisMaxSolrFeature.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestEdisMaxSolrFeature.java
@@ -51,8 +51,8 @@ public class TestEdisMaxSolrFeature extends TestRerankBase {
@AfterClass
public static void after() throws Exception {
aftertest();
- }
-
+ }
+
@Test
public void testEdisMaxSolrFeature() throws Exception {
loadFeature(
@@ -70,7 +70,7 @@ public class TestEdisMaxSolrFeature extends TestRerankBase {
query.add("rq", "{!ltr model=EdisMax-model reRankDocs=4}");
query.set("debugQuery", "on");
- final String res = restTestHarness.query("/query" + query.toQueryString());
+ restTestHarness.query("/query" + query.toQueryString());
assertJQ("/query" + query.toQueryString(), "/response/numFound/==4");
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestExternalValueFeatures.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestExternalValueFeatures.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestExternalValueFeatures.java
index 707da24..83b37b8 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestExternalValueFeatures.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestExternalValueFeatures.java
@@ -84,5 +84,5 @@ public class TestExternalValueFeatures extends TestRerankBase {
assertJQ("/query" + query.toQueryString(),
"/response/docs/[0]/score==0.0");
}
-
+
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureExtractionFromMultipleSegments.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureExtractionFromMultipleSegments.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureExtractionFromMultipleSegments.java
index fc6985c..a834589 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureExtractionFromMultipleSegments.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureExtractionFromMultipleSegments.java
@@ -18,6 +18,7 @@ package org.apache.solr.ltr.feature;
import java.util.List;
import java.util.Map;
+
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.ltr.TestRerankBase;
import org.junit.AfterClass;
@@ -28,57 +29,58 @@ import org.noggit.ObjectBuilder;
public class TestFeatureExtractionFromMultipleSegments extends TestRerankBase {
static final String AB = "abcdefghijklmnopqrstuvwxyz";
-
+
static String randomString( int len ){
StringBuilder sb = new StringBuilder( len );
- for( int i = 0; i < len; i++ )
- sb.append( AB.charAt( random().nextInt(AB.length()) ) );
+ for( int i = 0; i < len; i++ ) {
+ sb.append( AB.charAt( random().nextInt(AB.length()) ) );
+ }
return sb.toString();
}
-
+
@BeforeClass
- public static void before() throws Exception {
+ public static void before() throws Exception {
// solrconfig-multiseg.xml contains the merge policy to restrict merging
setuptest("solrconfig-multiseg.xml", "schema-ltr.xml");
// index 400 documents
for(int i = 0; i<400;i=i+20) {
assertU(adoc("id", new Integer(i).toString(), "popularity", "201", "description", "apple is a company " + randomString(i%6+3), "normHits", "0.1"));
assertU(adoc("id", new Integer(i+1).toString(), "popularity", "201", "description", "d " + randomString(i%6+3), "normHits", "0.11"));
-
+
assertU(adoc("id", new Integer(i+2).toString(), "popularity", "201", "description", "apple is a company too " + randomString(i%6+3), "normHits", "0.1"));
assertU(adoc("id", new Integer(i+3).toString(), "popularity", "201", "description", "new york city is big apple " + randomString(i%6+3), "normHits", "0.11"));
-
+
assertU(adoc("id", new Integer(i+6).toString(), "popularity", "301", "description", "function name " + randomString(i%6+3), "normHits", "0.1"));
assertU(adoc("id", new Integer(i+7).toString(), "popularity", "301", "description", "function " + randomString(i%6+3), "normHits", "0.1"));
-
+
assertU(adoc("id", new Integer(i+8).toString(), "popularity", "301", "description", "This is a sample function for testing " + randomString(i%6+3), "normHits", "0.1"));
assertU(adoc("id", new Integer(i+9).toString(), "popularity", "301", "description", "Function to check out stock prices "+randomString(i%6+3), "normHits", "0.1"));
assertU(adoc("id", new Integer(i+10).toString(),"popularity", "301", "description", "Some descriptions "+randomString(i%6+3), "normHits", "0.1"));
-
+
assertU(adoc("id", new Integer(i+11).toString(), "popularity", "201", "description", "apple apple is a company " + randomString(i%6+3), "normHits", "0.1"));
assertU(adoc("id", new Integer(i+12).toString(), "popularity", "201", "description", "Big Apple is New York.", "normHits", "0.01"));
assertU(adoc("id", new Integer(i+13).toString(), "popularity", "201", "description", "New some York is Big. "+ randomString(i%6+3), "normHits", "0.1"));
-
+
assertU(adoc("id", new Integer(i+14).toString(), "popularity", "201", "description", "apple apple is a company " + randomString(i%6+3), "normHits", "0.1"));
assertU(adoc("id", new Integer(i+15).toString(), "popularity", "201", "description", "Big Apple is New York.", "normHits", "0.01"));
assertU(adoc("id", new Integer(i+16).toString(), "popularity", "401", "description", "barack h", "normHits", "0.0"));
assertU(adoc("id", new Integer(i+17).toString(), "popularity", "201", "description", "red delicious apple " + randomString(i%6+3), "normHits", "0.1"));
assertU(adoc("id", new Integer(i+18).toString(), "popularity", "201", "description", "nyc " + randomString(i%6+3), "normHits", "0.11"));
}
-
+
assertU(commit());
-
+
loadFeatures("comp_features.json");
}
-
+
@AfterClass
public static void after() throws Exception {
aftertest();
}
-
+
@Test
public void testFeatureExtractionFromMultipleSegments() throws Exception {
-
+
final SolrQuery query = new SolrQuery();
query.setQuery("{!edismax qf='description^1' boost='sum(product(pow(normHits, 0.7), 1600), .1)' v='apple'}");
// request 100 rows, if any rows are fetched from the second or subsequent segments the tests should succeed if LTRRescorer::extractFeaturesInfo() advances the doc iterator properly
@@ -88,9 +90,9 @@ public class TestFeatureExtractionFromMultipleSegments extends TestRerankBase {
query.add("fq", "popularity:201");
query.add("fl", "*, score,id,normHits,description,fv:[features store='feature-store-6' format='dense' efi.user_text='apple']");
String res = restTestHarness.query("/query" + query.toQueryString());
-
+
Map<String,Object> resultJson = (Map<String,Object>) ObjectBuilder.fromJSON(res);
-
+
List<Map<String,Object>> docs = (List<Map<String,Object>>)((Map<String,Object>)resultJson.get("response")).get("docs");
int passCount = 0;
for (final Map<String,Object> doc : docs) {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureLogging.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureLogging.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureLogging.java
index 1086c83..ee8046e 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureLogging.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureLogging.java
@@ -64,7 +64,7 @@ public class TestFeatureLogging extends TestRerankBase {
query.add("debugQuery", "on");
query.add("rq", "{!ltr reRankDocs=3 model=sum1}");
- String res = restTestHarness.query("/query" + query.toQueryString());
+ restTestHarness.query("/query" + query.toQueryString());
assertJQ(
"/query" + query.toQueryString(),
"/response/docs/[0]/=={'title':'bloomberg bloomberg ', 'description':'bloomberg','id':'7', 'popularity':2, '[fv]':'c1:1.0;c2:2.0;c3:3.0;pop:2.0;yesmatch:1.0'}");
@@ -74,7 +74,7 @@ public class TestFeatureLogging extends TestRerankBase {
query.add("rows", "3");
query.add("rq", "{!ltr reRankDocs=3 model=sum1}");
- res = restTestHarness.query("/query" + query.toQueryString());
+ restTestHarness.query("/query" + query.toQueryString());
assertJQ("/query" + query.toQueryString(),
"/response/docs/[0]/=={'[fv]':'c1:1.0;c2:2.0;c3:3.0;pop:2.0;yesmatch:1.0'}");
query.remove("rq");
@@ -159,14 +159,14 @@ public class TestFeatureLogging extends TestRerankBase {
query.add("rq", "{!ltr reRankDocs=3 model=sumgroup}");
- String res = restTestHarness.query("/query" + query.toQueryString());
+ restTestHarness.query("/query" + query.toQueryString());
assertJQ(
"/query" + query.toQueryString(),
"/grouped/title/groups/[0]/doclist/docs/[0]/=={'fv':'c1:1.0;c2:2.0;c3:3.0;pop:5.0'}");
query.remove("fl");
query.add("fl", "fv:[fv fvwt=json]");
- res = restTestHarness.query("/query" + query.toQueryString());
+ restTestHarness.query("/query" + query.toQueryString());
assertJQ(
"/query" + query.toQueryString(),
"/grouped/title/groups/[0]/doclist/docs/[0]/fv/=={'c1':1.0,'c2':2.0,'c3':3.0,'pop':5.0}");
@@ -252,5 +252,5 @@ public class TestFeatureLogging extends TestRerankBase {
"/query" + query.toQueryString(),
"/response/docs/[1]/fv/=='match:0.0;c4:1.0'");
}
-
+
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureLtrScoringModel.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureLtrScoringModel.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureLtrScoringModel.java
index aec0a07..5fcebad 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureLtrScoringModel.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureLtrScoringModel.java
@@ -19,7 +19,6 @@ package org.apache.solr.ltr.feature;
import org.apache.solr.ltr.TestRerankBase;
import org.apache.solr.ltr.store.rest.ManagedFeatureStore;
import org.apache.solr.ltr.store.rest.TestManagedFeatureStore;
-import org.apache.solr.ltr.feature.FeatureException;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -56,7 +55,7 @@ public class TestFeatureLtrScoringModel extends TestRerankBase {
public void getInvalidInstanceTest()
{
final String nonExistingClassName = "org.apache.solr.ltr.feature.LOLFeature";
- final ClassNotFoundException expectedException =
+ final ClassNotFoundException expectedException =
new ClassNotFoundException(nonExistingClassName);
try {
store.addFeature(TestManagedFeatureStore.createMap("test",
@@ -68,5 +67,5 @@ public class TestFeatureLtrScoringModel extends TestRerankBase {
assertEquals(expectedException.toString(), rootError.toString());
}
}
-
+
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureStore.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureStore.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureStore.java
index e565c50..0ed0cda 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureStore.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFeatureStore.java
@@ -46,7 +46,7 @@ public class TestFeatureStore extends TestRerankBase {
}
@Test
- public void testFeatureStoreAdd() throws FeatureException
+ public void testFeatureStoreAdd() throws FeatureException
{
final FeatureStore fs = fstore.getFeatureStore("fstore-testFeature");
for (int i = 0; i < 5; i++) {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFieldLengthFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFieldLengthFeature.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFieldLengthFeature.java
index 77d9585..6156cd7 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFieldLengthFeature.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFieldLengthFeature.java
@@ -153,6 +153,6 @@ public class TestFieldLengthFeature extends TestRerankBase {
-
+
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFilterSolrFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFilterSolrFeature.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFilterSolrFeature.java
index 0f636f4..3756abe 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFilterSolrFeature.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestFilterSolrFeature.java
@@ -85,7 +85,7 @@ public class TestFilterSolrFeature extends TestRerankBase {
assertJPut(ManagedFeatureStore.REST_END_POINT, feature,
"/responseHeader/status==500");
}
-
+
@Test
public void testFeatureNotEqualWhenNormalizerDifferent() throws Exception {
loadFeatures("fq_features.json"); // features that use filter query
@@ -94,7 +94,7 @@ public class TestFilterSolrFeature extends TestRerankBase {
query.setQuery("*:*");
query.add("fl", "*,score");
query.add("rows", "4");
-
+
query.add("rq", "{!ltr reRankDocs=4 model=fqmodel efi.user_query=w2}");
query.add("fl", "fv:[fv]");
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestNoMatchSolrFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestNoMatchSolrFeature.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestNoMatchSolrFeature.java
index 24c67a6..87b5ef5 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestNoMatchSolrFeature.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestNoMatchSolrFeature.java
@@ -21,8 +21,8 @@ import java.util.Map;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.ltr.TestRerankBase;
-import org.apache.solr.ltr.model.MultipleAdditiveTreesModel;
import org.apache.solr.ltr.model.LinearModel;
+import org.apache.solr.ltr.model.MultipleAdditiveTreesModel;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestRankingFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestRankingFeature.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestRankingFeature.java
index 787fa4c..1e5e551 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestRankingFeature.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestRankingFeature.java
@@ -52,8 +52,8 @@ public class TestRankingFeature extends TestRerankBase {
@AfterClass
public static void after() throws Exception {
aftertest();
- }
-
+ }
+
@Test
public void testRankingSolrFeature() throws Exception {
// before();
@@ -112,12 +112,12 @@ public class TestRankingFeature extends TestRerankBase {
query.remove("rq");
query.add("rq", "{!ltr model=powdesS-model reRankDocs=4}");
- assertJQ("/query" + query.toQueryString(),
+ assertJQ("/query" + query.toQueryString(),
"/error/msg/=='"+FeatureException.class.getCanonicalName()+": " +
"java.lang.UnsupportedOperationException: " +
"Unable to extract feature for powdesS'");
// aftertest();
}
-
+
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScoreWithQ.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScoreWithQ.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScoreWithQ.java
index 01eb484..b4655f0 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScoreWithQ.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScoreWithQ.java
@@ -51,8 +51,8 @@ public class TestUserTermScoreWithQ extends TestRerankBase {
@AfterClass
public static void after() throws Exception {
aftertest();
- }
-
+ }
+
@Test
public void testUserTermScoreWithQ() throws Exception {
// before();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScorerQuery.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScorerQuery.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScorerQuery.java
index 1a6d505..71f94db 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScorerQuery.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScorerQuery.java
@@ -51,8 +51,8 @@ public class TestUserTermScorerQuery extends TestRerankBase {
@AfterClass
public static void after() throws Exception {
aftertest();
- }
-
+ }
+
@Test
public void testUserTermScorerQuery() throws Exception {
// before();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScorereQDF.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScorereQDF.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScorereQDF.java
index fdbeed8..4bd7152 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScorereQDF.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestUserTermScorereQDF.java
@@ -51,8 +51,8 @@ public class TestUserTermScorereQDF extends TestRerankBase {
@AfterClass
public static void after() throws Exception {
aftertest();
- }
-
+ }
+
@Test
public void testUserTermScorerQWithDF() throws Exception {
// before();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestValueFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestValueFeature.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestValueFeature.java
index 6c9cf0e..a9f3983 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestValueFeature.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/feature/TestValueFeature.java
@@ -49,7 +49,7 @@ public class TestValueFeature extends TestRerankBase {
@Test
public void testValueFeatureWithEmptyValue() throws Exception {
- final RuntimeException expectedException =
+ final RuntimeException expectedException =
new RuntimeException("mismatch: '0'!='500' @ responseHeader/status");
try {
loadFeature("c2", ValueFeature.class.getCanonicalName(), "{\"value\":\"\"}");
@@ -61,7 +61,7 @@ public class TestValueFeature extends TestRerankBase {
@Test
public void testValueFeatureWithWhitespaceValue() throws Exception {
- final RuntimeException expectedException =
+ final RuntimeException expectedException =
new RuntimeException("mismatch: '0'!='500' @ responseHeader/status");
try {
loadFeature("c2", ValueFeature.class.getCanonicalName(),
@@ -111,7 +111,7 @@ public class TestValueFeature extends TestRerankBase {
assertJQ("/query" + query.toQueryString(), "/response/docs/[2]/score==2.0");
assertJQ("/query" + query.toQueryString(), "/response/docs/[3]/score==2.0");
}
-
+
@Test
public void testValueFeatureImplicitlyNotRequiredShouldReturnOkStatusCode() throws Exception {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/model/TestLinearModel.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/model/TestLinearModel.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/model/TestLinearModel.java
index e066ea3..e8ee224 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/model/TestLinearModel.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/model/TestLinearModel.java
@@ -23,12 +23,8 @@ import java.util.List;
import java.util.Map;
import org.apache.solr.common.SolrException;
-import org.apache.solr.common.SolrException.ErrorCode;
import org.apache.solr.ltr.TestRerankBase;
import org.apache.solr.ltr.feature.Feature;
-import org.apache.solr.ltr.model.LTRScoringModel;
-import org.apache.solr.ltr.model.ModelException;
-import org.apache.solr.ltr.model.LinearModel;
import org.apache.solr.ltr.norm.IdentityNormalizer;
import org.apache.solr.ltr.norm.Normalizer;
import org.apache.solr.ltr.store.FeatureStore;
@@ -70,7 +66,7 @@ public class TestLinearModel extends TestRerankBase {
Map<String,Object> params = new HashMap<String,Object>();
final List<Feature> features = getFeatures(new String[] {
"constant1", "constant5"});
- final List<Normalizer> norms =
+ final List<Normalizer> norms =
new ArrayList<Normalizer>(
Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
params.put("weights", weights);
@@ -85,15 +81,15 @@ public class TestLinearModel extends TestRerankBase {
@Test
public void nullFeatureWeightsTest() {
- final ModelException expectedException =
+ final ModelException expectedException =
new ModelException("Model test2 doesn't contain any weights");
try {
- final List<Feature> features = getFeatures(new String[]
+ final List<Feature> features = getFeatures(new String[]
{"constant1", "constant5"});
- final List<Normalizer> norms =
+ final List<Normalizer> norms =
new ArrayList<Normalizer>(
Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
- final LTRScoringModel ltrScoringModel = createLinearModel("test2",
+ createLinearModel("test2",
features, norms, "test", fstore.getFeatures(), null);
fail("unexpectedly got here instead of catching "+expectedException);
} catch (ModelException actualException) {
@@ -103,13 +99,13 @@ public class TestLinearModel extends TestRerankBase {
@Test
public void existingNameTest() {
- final SolrException expectedException =
- new SolrException(ErrorCode.BAD_REQUEST,
+ final SolrException expectedException =
+ new SolrException(SolrException.ErrorCode.BAD_REQUEST,
ModelException.class.getCanonicalName()+": model 'test3' already exists. Please use a different name");
try {
- final List<Feature> features = getFeatures(new String[]
+ final List<Feature> features = getFeatures(new String[]
{"constant1", "constant5"});
- final List<Normalizer> norms =
+ final List<Normalizer> norms =
new ArrayList<Normalizer>(
Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
final Map<String,Object> weights = new HashMap<>();
@@ -133,12 +129,12 @@ public class TestLinearModel extends TestRerankBase {
@Test
public void duplicateFeatureTest() {
- final ModelException expectedException =
+ final ModelException expectedException =
new ModelException("duplicated feature constant1 in model test4");
try {
- final List<Feature> features = getFeatures(new String[]
+ final List<Feature> features = getFeatures(new String[]
{"constant1", "constant1"});
- final List<Normalizer> norms =
+ final List<Normalizer> norms =
new ArrayList<Normalizer>(
Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
final Map<String,Object> weights = new HashMap<>();
@@ -160,12 +156,12 @@ public class TestLinearModel extends TestRerankBase {
@Test
public void missingFeatureWeightTest() {
- final ModelException expectedException =
+ final ModelException expectedException =
new ModelException("Model test5 lacks weight(s) for [constant5]");
try {
- final List<Feature> features = getFeatures(new String[]
+ final List<Feature> features = getFeatures(new String[]
{"constant1", "constant5"});
- final List<Normalizer> norms =
+ final List<Normalizer> norms =
new ArrayList<Normalizer>(
Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
final Map<String,Object> weights = new HashMap<>();
@@ -174,7 +170,7 @@ public class TestLinearModel extends TestRerankBase {
Map<String,Object> params = new HashMap<String,Object>();
params.put("weights", weights);
- final LTRScoringModel ltrScoringModel = createLinearModel("test5",
+ createLinearModel("test5",
features, norms, "test", fstore.getFeatures(),
params);
fail("unexpectedly got here instead of catching "+expectedException);
@@ -189,7 +185,7 @@ public class TestLinearModel extends TestRerankBase {
new ModelException("no features declared for model test6");
try {
final List<Feature> features = getFeatures(new String[] {});
- final List<Normalizer> norms =
+ final List<Normalizer> norms =
new ArrayList<Normalizer>(
Collections.nCopies(features.size(),IdentityNormalizer.INSTANCE));
final Map<String,Object> weights = new HashMap<>();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/model/TestMultipleAdditiveTreesModel.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/model/TestMultipleAdditiveTreesModel.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/model/TestMultipleAdditiveTreesModel.java
index 3414dc8..13f6c6b 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/model/TestMultipleAdditiveTreesModel.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/model/TestMultipleAdditiveTreesModel.java
@@ -21,7 +21,6 @@ package org.apache.solr.ltr.model;
import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.ltr.TestRerankBase;
-import org.apache.solr.ltr.model.ModelException;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Ignore;
@@ -52,7 +51,7 @@ public class TestMultipleAdditiveTreesModel extends TestRerankBase {
aftertest();
}
-
+
@Test
public void testMultipleAdditiveTreesScoringWithAndWithoutEfiFeatureMatches() throws Exception {
final SolrQuery query = new SolrQuery();
@@ -124,7 +123,7 @@ public class TestMultipleAdditiveTreesModel extends TestRerankBase {
@Test
public void multipleAdditiveTreesTestNoParams() throws Exception {
- final ModelException expectedException =
+ final ModelException expectedException =
new ModelException("no trees declared for model multipleadditivetreesmodel_no_params");
try {
createModelFromFiles("multipleadditivetreesmodel_no_params.json",
@@ -139,7 +138,7 @@ public class TestMultipleAdditiveTreesModel extends TestRerankBase {
@Test
public void multipleAdditiveTreesTestEmptyParams() throws Exception {
- final ModelException expectedException =
+ final ModelException expectedException =
new ModelException("no trees declared for model multipleadditivetreesmodel_no_trees");
try {
createModelFromFiles("multipleadditivetreesmodel_no_trees.json",
@@ -153,7 +152,7 @@ public class TestMultipleAdditiveTreesModel extends TestRerankBase {
@Test
public void multipleAdditiveTreesTestNoWeight() throws Exception {
- final ModelException expectedException =
+ final ModelException expectedException =
new ModelException("MultipleAdditiveTreesModel tree doesn't contain a weight");
try {
createModelFromFiles("multipleadditivetreesmodel_no_weight.json",
@@ -167,7 +166,7 @@ public class TestMultipleAdditiveTreesModel extends TestRerankBase {
@Test
public void multipleAdditiveTreesTestTreesParamDoesNotContatinTree() throws Exception {
- final ModelException expectedException =
+ final ModelException expectedException =
new ModelException("MultipleAdditiveTreesModel tree doesn't contain a tree");
try {
createModelFromFiles("multipleadditivetreesmodel_no_tree.json",
@@ -181,7 +180,7 @@ public class TestMultipleAdditiveTreesModel extends TestRerankBase {
@Test
public void multipleAdditiveTreesTestNoFeaturesSpecified() throws Exception {
- final ModelException expectedException =
+ final ModelException expectedException =
new ModelException("no features declared for model multipleadditivetreesmodel_no_features");
try {
createModelFromFiles("multipleadditivetreesmodel_no_features.json",
@@ -194,7 +193,7 @@ public class TestMultipleAdditiveTreesModel extends TestRerankBase {
@Test
public void multipleAdditiveTreesTestNoRight() throws Exception {
- final ModelException expectedException =
+ final ModelException expectedException =
new ModelException("MultipleAdditiveTreesModel tree node is missing right");
try {
createModelFromFiles("multipleadditivetreesmodel_no_right.json",
@@ -208,7 +207,7 @@ public class TestMultipleAdditiveTreesModel extends TestRerankBase {
@Test
public void multipleAdditiveTreesTestNoLeft() throws Exception {
- final ModelException expectedException =
+ final ModelException expectedException =
new ModelException("MultipleAdditiveTreesModel tree node is missing left");
try {
createModelFromFiles("multipleadditivetreesmodel_no_left.json",
@@ -222,7 +221,7 @@ public class TestMultipleAdditiveTreesModel extends TestRerankBase {
@Test
public void multipleAdditiveTreesTestNoThreshold() throws Exception {
- final ModelException expectedException =
+ final ModelException expectedException =
new ModelException("MultipleAdditiveTreesModel tree node is missing threshold");
try {
createModelFromFiles("multipleadditivetreesmodel_no_threshold.json",
@@ -236,7 +235,7 @@ public class TestMultipleAdditiveTreesModel extends TestRerankBase {
@Test
public void multipleAdditiveTreesTestMissingTreeFeature() throws Exception {
- final ModelException expectedException =
+ final ModelException expectedException =
new ModelException("MultipleAdditiveTreesModel tree node is leaf with left=-100.0 and right=75.0");
try {
createModelFromFiles("multipleadditivetreesmodel_no_feature.json",
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/norm/TestMinMaxNormalizer.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/norm/TestMinMaxNormalizer.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/norm/TestMinMaxNormalizer.java
index c569f3a..055b3bc 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/norm/TestMinMaxNormalizer.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/norm/TestMinMaxNormalizer.java
@@ -83,7 +83,7 @@ public class TestMinMaxNormalizer {
final Map<String,Object> params = new HashMap<String,Object>();
params.put("min", "10.0f");
params.put("max", "10.0f");
- final NormalizerException expectedException =
+ final NormalizerException expectedException =
new NormalizerException("MinMax Normalizer delta must not be zero "
+ "| min = 10.0,max = 10.0,delta = 0.0");
try {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/norm/TestStandardNormalizer.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/norm/TestStandardNormalizer.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/norm/TestStandardNormalizer.java
index fa8fa67..10fa972 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/norm/TestStandardNormalizer.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/norm/TestStandardNormalizer.java
@@ -54,7 +54,7 @@ public class TestStandardNormalizer {
public void testInvalidSTD() {
final Map<String,Object> params = new HashMap<String,Object>();
params.put("std", "0f");
- final NormalizerException expectedException =
+ final NormalizerException expectedException =
new NormalizerException("Standard Normalizer standard deviation must be positive "
+ "| avg = 0.0,std = 0.0");
try {
@@ -71,7 +71,7 @@ public class TestStandardNormalizer {
public void testInvalidSTD2() {
final Map<String,Object> params = new HashMap<String,Object>();
params.put("std", "-1f");
- final NormalizerException expectedException =
+ final NormalizerException expectedException =
new NormalizerException("Standard Normalizer standard deviation must be positive "
+ "| avg = 0.0,std = -1.0");
try {
@@ -89,7 +89,7 @@ public class TestStandardNormalizer {
final Map<String,Object> params = new HashMap<String,Object>();
params.put("avg", "1f");
params.put("std", "0f");
- final NormalizerException expectedException =
+ final NormalizerException expectedException =
new NormalizerException("Standard Normalizer standard deviation must be positive "
+ "| avg = 1.0,std = 0.0");
try {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/store/rest/TestModelManager.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/store/rest/TestModelManager.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/store/rest/TestModelManager.java
index 2e5a628..131ac02 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/store/rest/TestModelManager.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/store/rest/TestModelManager.java
@@ -23,8 +23,6 @@ import org.apache.solr.ltr.TestRerankBase;
import org.apache.solr.ltr.feature.FieldValueFeature;
import org.apache.solr.ltr.feature.ValueFeature;
import org.apache.solr.ltr.model.LinearModel;
-import org.apache.solr.ltr.store.rest.ManagedFeatureStore;
-import org.apache.solr.ltr.store.rest.ManagedModelStore;
import org.apache.solr.rest.ManagedResource;
import org.apache.solr.rest.ManagedResourceStorage;
import org.apache.solr.rest.RestManager;
@@ -109,7 +107,7 @@ public class TestModelManager extends TestRerankBase {
"/responseHeader/status==0");
final String fieldValueFeatureClassName = FieldValueFeature.class.getCanonicalName();
-
+
// Add bad feature (wrong params)_
final String badfeature = "{\"name\": \"fvalue\", \"class\": \""+fieldValueFeatureClassName+"\", \"params\": {\"value\": 1} }";
assertJPut(ManagedFeatureStore.REST_END_POINT, badfeature,
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/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 18baeac..a6c79e9 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
@@ -16,8 +16,8 @@
*/
package org.apache.solr.ltr.store.rest;
-import java.util.Map;
import java.util.ArrayList;
+import java.util.Map;
import org.apache.commons.io.FileUtils;
import org.apache.solr.SolrTestCaseJ4.SuppressSSL;
@@ -80,20 +80,20 @@ public class TestModelManagerPersistence extends TestRerankBase {
.readFileToString(mstorefile, "UTF-8");
//check feature/model stores on deletion
- final ArrayList<Object> fStore = (ArrayList<Object>) ((Map<String,Object>)
+ final ArrayList<Object> fStore = (ArrayList<Object>) ((Map<String,Object>)
ObjectBuilder.fromJSON(fstorecontent)).get("managedList");
for (int idx = 0;idx < fStore.size(); ++ idx) {
String store = (String) ((Map<String,Object>)fStore.get(idx)).get("store");
assertTrue(store.equals("test") || store.equals("test2") || store.equals("test1"));
}
- final ArrayList<Object> mStore = (ArrayList<Object>) ((Map<String,Object>)
+ final ArrayList<Object> mStore = (ArrayList<Object>) ((Map<String,Object>)
ObjectBuilder.fromJSON(mstorecontent)).get("managedList");
for (int idx = 0;idx < mStore.size(); ++ idx) {
String store = (String) ((Map<String,Object>)mStore.get(idx)).get("store");
assertTrue(store.equals("test") || store.equals("test1"));
}
-
+
assertJDelete(ManagedFeatureStore.REST_END_POINT + "/test2",
"/responseHeader/status==0");
assertJDelete(ManagedModelStore.REST_END_POINT + "/test-model2",
@@ -104,7 +104,7 @@ public class TestModelManagerPersistence extends TestRerankBase {
"/models/[0]/name=='test-model'");
restTestHarness.reload();
assertJQ(ManagedFeatureStore.REST_END_POINT + "/test2",
- "/features/==[]");
+ "/features/==[]");
assertJQ(ManagedModelStore.REST_END_POINT + "/test-model2",
"/models/[0]/name=='test-model'");
[2/2] lucene-solr:jira/solr-8542-v2: SOLR-8542: cleanups (thank you
IDE) + tweaks
Posted by cp...@apache.org.
SOLR-8542: cleanups (thank you IDE) + tweaks
($ = cleanup flagged this up)
* remove unused locals and privates
* make privates final where possible + LTRThreadModule lacked an accessor$
* always use blocks in if/while/for/do statements
* remove trailing whitespace
* correct indentation (for java but not for test) + FeatureLogger StringBuilder append tweak$
* organise imports (resulted in removal of some)
* within solr/contrib/ltr be consistent (for clarity) about 'import Outer.Inner' vs. 'Outer.Inner at point of use'
e.g. SolrException.ErrorCode, Map.Entry, LTRScoringQuery.Something etc.
with TODO$ identified as a result: SuppressSSL and SuppressCodecs is used in many of the tests (are they needed?)
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/4e444db6
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/4e444db6
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/4e444db6
Branch: refs/heads/jira/solr-8542-v2
Commit: 4e444db65253919120772db1722aed493741a1d5
Parents: f91f33b
Author: Christine Poerschke <cp...@apache.org>
Authored: Wed Oct 26 10:39:47 2016 -0500
Committer: Christine Poerschke <cp...@apache.org>
Committed: Wed Oct 26 13:01:21 2016 -0500
----------------------------------------------------------------------
.../java/org/apache/solr/ltr/FeatureLogger.java | 38 +++---
.../java/org/apache/solr/ltr/LTRRescorer.java | 24 ++--
.../org/apache/solr/ltr/LTRScoringQuery.java | 135 +++++++++----------
.../org/apache/solr/ltr/LTRThreadModule.java | 4 +
.../org/apache/solr/ltr/feature/Feature.java | 34 ++---
.../solr/ltr/feature/FieldLengthFeature.java | 8 +-
.../solr/ltr/feature/FieldValueFeature.java | 10 +-
.../solr/ltr/feature/OriginalScoreFeature.java | 8 +-
.../apache/solr/ltr/feature/SolrFeature.java | 20 ++-
.../apache/solr/ltr/feature/ValueFeature.java | 19 +--
.../apache/solr/ltr/model/LTRScoringModel.java | 14 +-
.../org/apache/solr/ltr/model/LinearModel.java | 6 +-
.../ltr/model/MultipleAdditiveTreesModel.java | 6 +-
.../apache/solr/ltr/norm/MinMaxNormalizer.java | 9 +-
.../org/apache/solr/ltr/norm/Normalizer.java | 6 +-
.../solr/ltr/norm/StandardNormalizer.java | 9 +-
.../ltr/store/rest/ManagedFeatureStore.java | 14 +-
.../solr/ltr/store/rest/ManagedModelStore.java | 22 ++-
.../LTRFeatureLoggerTransformerFactory.java | 26 ++--
.../solr/response/transform/package-info.java | 4 +-
.../apache/solr/search/LTRQParserPlugin.java | 38 +++---
.../org/apache/solr/search/package-info.java | 4 +-
.../org/apache/solr/ltr/TestLTROnSolrCloud.java | 17 +--
.../apache/solr/ltr/TestLTRQParserExplain.java | 5 +-
.../apache/solr/ltr/TestLTRQParserPlugin.java | 35 +++--
.../solr/ltr/TestLTRReRankingPipeline.java | 40 +++---
.../apache/solr/ltr/TestLTRScoringQuery.java | 31 +++--
.../org/apache/solr/ltr/TestLTRWithFacet.java | 3 +-
.../org/apache/solr/ltr/TestLTRWithSort.java | 5 +-
.../solr/ltr/TestParallelWeightCreation.java | 16 +--
.../org/apache/solr/ltr/TestRerankBase.java | 23 ++--
.../solr/ltr/TestSelectiveWeightCreation.java | 41 +++---
.../ltr/feature/TestEdisMaxSolrFeature.java | 6 +-
.../ltr/feature/TestExternalValueFeatures.java | 2 +-
...stFeatureExtractionFromMultipleSegments.java | 36 ++---
.../solr/ltr/feature/TestFeatureLogging.java | 10 +-
.../ltr/feature/TestFeatureLtrScoringModel.java | 5 +-
.../solr/ltr/feature/TestFeatureStore.java | 2 +-
.../ltr/feature/TestFieldLengthFeature.java | 2 +-
.../solr/ltr/feature/TestFilterSolrFeature.java | 4 +-
.../ltr/feature/TestNoMatchSolrFeature.java | 2 +-
.../solr/ltr/feature/TestRankingFeature.java | 8 +-
.../ltr/feature/TestUserTermScoreWithQ.java | 4 +-
.../ltr/feature/TestUserTermScorerQuery.java | 4 +-
.../ltr/feature/TestUserTermScorereQDF.java | 4 +-
.../solr/ltr/feature/TestValueFeature.java | 6 +-
.../apache/solr/ltr/model/TestLinearModel.java | 38 +++---
.../model/TestMultipleAdditiveTreesModel.java | 21 ++-
.../solr/ltr/norm/TestMinMaxNormalizer.java | 2 +-
.../solr/ltr/norm/TestStandardNormalizer.java | 6 +-
.../solr/ltr/store/rest/TestModelManager.java | 4 +-
.../store/rest/TestModelManagerPersistence.java | 10 +-
52 files changed, 409 insertions(+), 441 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/FeatureLogger.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/FeatureLogger.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/FeatureLogger.java
index 81efc81..a5afd05 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/FeatureLogger.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/FeatureLogger.java
@@ -21,7 +21,6 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
-import org.apache.solr.ltr.LTRScoringQuery.FeatureInfo;
import org.apache.solr.search.SolrIndexSearcher;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,11 +38,11 @@ public abstract class FeatureLogger<FV_TYPE> {
protected enum FeatureFormat {DENSE, SPARSE};
protected final FeatureFormat featureFormat;
-
+
protected FeatureLogger(FeatureFormat f) {
this.featureFormat = f;
}
-
+
/**
* Log will be called every time that the model generates the feature values
* for a document and a query.
@@ -51,14 +50,14 @@ public abstract class FeatureLogger<FV_TYPE> {
* @param docid
* Solr document id whose features we are saving
* @param featuresInfo
- * List of all the FeatureInfo objects which contain name and value
+ * List of all the {@link LTRScoringQuery.FeatureInfo} objects which contain name and value
* for all the features triggered by the result set
* @return true if the logger successfully logged the features, false
* otherwise.
*/
public boolean log(int docid, LTRScoringQuery scoringQuery,
- SolrIndexSearcher searcher, FeatureInfo[] featuresInfo) {
+ SolrIndexSearcher searcher, LTRScoringQuery.FeatureInfo[] featuresInfo) {
final FV_TYPE featureVector = makeFeatureVector(featuresInfo);
if (featureVector == null) {
return false;
@@ -76,7 +75,7 @@ public abstract class FeatureLogger<FV_TYPE> {
* format will be selected.
* 'featureFormat' param: 'dense' will write features in dense format,
* 'sparse' will write the features in sparse format, null or empty will
- * default to 'sparse'
+ * default to 'sparse'
*
*
* @return a feature logger for the format specified.
@@ -108,7 +107,7 @@ public abstract class FeatureLogger<FV_TYPE> {
}
- public abstract FV_TYPE makeFeatureVector(FeatureInfo[] featuresInfo);
+ public abstract FV_TYPE makeFeatureVector(LTRScoringQuery.FeatureInfo[] featuresInfo);
private static int fvCacheKey(LTRScoringQuery scoringQuery, int docid) {
return scoringQuery.hashCode() + (31 * docid);
@@ -121,7 +120,7 @@ public abstract class FeatureLogger<FV_TYPE> {
* Solr document id
* @return String representation of the list of features calculated for docid
*/
-
+
public FV_TYPE getFeatureVector(int docid, LTRScoringQuery scoringQuery,
SolrIndexSearcher searcher) {
return (FV_TYPE) searcher.cacheLookup(QUERY_FV_CACHE_NAME, fvCacheKey(scoringQuery, docid));
@@ -133,14 +132,14 @@ public abstract class FeatureLogger<FV_TYPE> {
public MapFeatureLogger(FeatureFormat f) {
super(f);
}
-
+
@Override
- public Map<String,Float> makeFeatureVector(FeatureInfo[] featuresInfo) {
+ public Map<String,Float> makeFeatureVector(LTRScoringQuery.FeatureInfo[] featuresInfo) {
boolean isDense = featureFormat.equals(FeatureFormat.DENSE);
Map<String,Float> hashmap = Collections.emptyMap();
if (featuresInfo.length > 0) {
hashmap = new HashMap<String,Float>(featuresInfo.length);
- for (FeatureInfo featInfo:featuresInfo){
+ for (LTRScoringQuery.FeatureInfo featInfo:featuresInfo){
if (featInfo.isUsed() || isDense){
hashmap.put(featInfo.getName(), featInfo.getValue());
}
@@ -155,7 +154,7 @@ public abstract class FeatureLogger<FV_TYPE> {
StringBuilder sb = new StringBuilder(500);
char keyValueSep = ':';
char featureSep = ';';
-
+
public CSVFeatureLogger(FeatureFormat f) {
super(f);
}
@@ -171,14 +170,15 @@ public abstract class FeatureLogger<FV_TYPE> {
}
@Override
- public String makeFeatureVector(FeatureInfo[] featuresInfo) {
+ public String makeFeatureVector(LTRScoringQuery.FeatureInfo[] featuresInfo) {
boolean isDense = featureFormat.equals(FeatureFormat.DENSE);
- for (FeatureInfo featInfo:featuresInfo) {
- if (featInfo.isUsed() || isDense){
- sb.append(featInfo.getName()).append(keyValueSep)
- .append(featInfo.getValue());
- sb.append(featureSep);
- }
+ for (LTRScoringQuery.FeatureInfo featInfo:featuresInfo) {
+ if (featInfo.isUsed() || isDense){
+ sb.append(featInfo.getName())
+ .append(keyValueSep)
+ .append(featInfo.getValue())
+ .append(featureSep);
+ }
}
final String features = (sb.length() > 0 ? sb.substring(0,
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRRescorer.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRRescorer.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRRescorer.java
index 607a9c8..27223b7 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRRescorer.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRRescorer.java
@@ -29,8 +29,6 @@ import org.apache.lucene.search.Rescorer;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.search.Weight;
-import org.apache.solr.ltr.LTRScoringQuery.ModelWeight;
-import org.apache.solr.ltr.LTRScoringQuery.ModelWeight.ModelScorer;
import org.apache.solr.search.SolrIndexSearcher;
@@ -115,12 +113,12 @@ public class LTRRescorer extends Rescorer {
topN = Math.min(topN, firstPassTopDocs.totalHits);
final ScoreDoc[] reranked = new ScoreDoc[topN];
final List<LeafReaderContext> leaves = searcher.getIndexReader().leaves();
- final ModelWeight modelWeight = (ModelWeight) searcher
+ final LTRScoringQuery.ModelWeight modelWeight = (LTRScoringQuery.ModelWeight) searcher
.createNormalizedWeight(scoringQuery, true);
final SolrIndexSearcher solrIndexSearch = (SolrIndexSearcher) searcher;
scoreFeatures(solrIndexSearch, firstPassTopDocs,topN, modelWeight, hits, leaves, reranked);
- // Must sort all documents that we reranked, and then select the top
+ // Must sort all documents that we reranked, and then select the top
Arrays.sort(reranked, new Comparator<ScoreDoc>() {
@Override
public int compare(ScoreDoc a, ScoreDoc b) {
@@ -139,16 +137,16 @@ public class LTRRescorer extends Rescorer {
return new TopDocs(firstPassTopDocs.totalHits, reranked, reranked[0].score);
}
-
+
public void scoreFeatures(SolrIndexSearcher solrIndexSearch, TopDocs firstPassTopDocs,
- int topN, ModelWeight modelWeight, ScoreDoc[] hits, List<LeafReaderContext> leaves,
+ int topN, LTRScoringQuery.ModelWeight modelWeight, ScoreDoc[] hits, List<LeafReaderContext> leaves,
ScoreDoc[] reranked) throws IOException {
-
+
int readerUpto = -1;
int endDoc = 0;
int docBase = 0;
- ModelScorer scorer = null;
+ LTRScoringQuery.ModelWeight.ModelScorer scorer = null;
int hitUpto = 0;
final FeatureLogger<?> featureLogger = scoringQuery.getFeatureLogger();
@@ -166,11 +164,11 @@ public class LTRRescorer extends Rescorer {
docBase = readerContext.docBase;
scorer = modelWeight.scorer(readerContext);
}
- // Scorer for a ModelWeight should never be null since we always have to
+ // Scorer for a LTRScoringQuery.ModelWeight should never be null since we always have to
// call score
// even if no feature scorers match, since a model might use that info to
// return a
- // non-zero score. Same applies for the case of advancing a ModelScorer
+ // non-zero score. Same applies for the case of advancing a LTRScoringQuery.ModelWeight.ModelScorer
// past the target
// doc since the model algorithm still needs to compute a potentially
// non-zero score from blank features.
@@ -226,15 +224,15 @@ public class LTRRescorer extends Rescorer {
return modelWeight.explain(context, deBasedDoc);
}
- public static LTRScoringQuery.FeatureInfo[] extractFeaturesInfo(ModelWeight modelWeight,
+ public static LTRScoringQuery.FeatureInfo[] extractFeaturesInfo(LTRScoringQuery.ModelWeight modelWeight,
int docid,
Float originalDocScore,
List<LeafReaderContext> leafContexts)
- throws IOException {
+ throws IOException {
final int n = ReaderUtil.subIndex(docid, leafContexts);
final LeafReaderContext atomicContext = leafContexts.get(n);
final int deBasedDoc = docid - atomicContext.docBase;
- final ModelScorer r = modelWeight.scorer(atomicContext);
+ final LTRScoringQuery.ModelWeight.ModelScorer r = modelWeight.scorer(atomicContext);
if ( (r == null) || (r.iterator().advance(deBasedDoc) != deBasedDoc) ) {
return new LTRScoringQuery.FeatureInfo[0];
} else {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
index 71a7ace..778e2be 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRScoringQuery.java
@@ -24,7 +24,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
@@ -44,8 +43,6 @@ import org.apache.lucene.search.Query;
import org.apache.lucene.search.Scorer;
import org.apache.lucene.search.Weight;
import org.apache.solr.ltr.feature.Feature;
-import org.apache.solr.ltr.feature.Feature.FeatureWeight;
-import org.apache.solr.ltr.feature.Feature.FeatureWeight.FeatureScorer;
import org.apache.solr.ltr.model.LTRScoringModel;
import org.apache.solr.request.SolrQueryRequest;
import org.slf4j.Logger;
@@ -83,8 +80,8 @@ public class LTRScoringQuery extends Query {
this(ltrScoringModel, Collections.<String, String[]>emptyMap(), extractAllFeatures, null);
}
- public LTRScoringQuery(LTRScoringModel ltrScoringModel,
- Map<String, String[]> externalFeatureInfo,
+ public LTRScoringQuery(LTRScoringModel ltrScoringModel,
+ Map<String, String[]> externalFeatureInfo,
boolean extractAllFeatures, LTRThreadModule ltrThreadMgr) {
this.ltrScoringModel = ltrScoringModel;
this.efi = externalFeatureInfo;
@@ -128,7 +125,7 @@ public class LTRScoringQuery extends Query {
public SolrQueryRequest getRequest() {
return request;
}
-
+
@Override
public int hashCode() {
final int prime = 31;
@@ -140,7 +137,7 @@ public class LTRScoringQuery extends Query {
result = (prime * result) + 0;
}
else {
- for (final Entry<String,String[]> entry : efi.entrySet()) {
+ for (final Map.Entry<String,String[]> entry : efi.entrySet()) {
final String key = entry.getKey();
final String[] values = entry.getValue();
result = (prime * result) + key.hashCode();
@@ -178,7 +175,7 @@ public class LTRScoringQuery extends Query {
if (other.efi == null || efi.size() != other.efi.size()) {
return false;
}
- for(final Entry<String,String[]> entry : efi.entrySet()) {
+ for(final Map.Entry<String,String[]> entry : efi.entrySet()) {
final String key = entry.getKey();
final String[] otherValues = other.efi.get(key);
if (otherValues == null || !Arrays.equals(otherValues,entry.getValue())) {
@@ -191,11 +188,11 @@ public class LTRScoringQuery extends Query {
@Override
public ModelWeight createWeight(IndexSearcher searcher, boolean needsScores, float boost)
- throws IOException {
+ throws IOException {
final Collection<Feature> modelFeatures = ltrScoringModel.getFeatures();
final Collection<Feature> allFeatures = ltrScoringModel.getAllFeatures();
int modelFeatSize = modelFeatures.size();
-
+
Collection<Feature> features = null;
if (this.extractAllFeatures) {
features = allFeatures;
@@ -203,19 +200,19 @@ public class LTRScoringQuery extends Query {
else{
features = modelFeatures;
}
- final FeatureWeight[] extractedFeatureWeights = new FeatureWeight[features.size()];
- final FeatureWeight[] modelFeaturesWeights = new FeatureWeight[modelFeatSize];
- List<FeatureWeight > featureWeights = new ArrayList<>(features.size());
-
+ final Feature.FeatureWeight[] extractedFeatureWeights = new Feature.FeatureWeight[features.size()];
+ final Feature.FeatureWeight[] modelFeaturesWeights = new Feature.FeatureWeight[modelFeatSize];
+ List<Feature.FeatureWeight > featureWeights = new ArrayList<>(features.size());
+
if (querySemaphore == null) {
- createWeights(searcher, needsScores, boost, featureWeights, features);
+ createWeights(searcher, needsScores, boost, featureWeights, features);
}
else{
- createWeightsParallel(searcher, needsScores, boost, featureWeights, features);
+ createWeightsParallel(searcher, needsScores, boost, featureWeights, features);
}
int i=0, j = 0;
if (this.extractAllFeatures) {
- for (final FeatureWeight fw : featureWeights) {
+ for (final Feature.FeatureWeight fw : featureWeights) {
extractedFeatureWeights[i++] = fw;
}
for (final Feature f : modelFeatures){
@@ -223,31 +220,31 @@ public class LTRScoringQuery extends Query {
}
}
else{
- for (final FeatureWeight fw: featureWeights){
+ for (final Feature.FeatureWeight fw: featureWeights){
extractedFeatureWeights[i++] = fw;
- modelFeaturesWeights[j++] = fw;
+ modelFeaturesWeights[j++] = fw;
}
}
return new ModelWeight(searcher, modelFeaturesWeights, extractedFeatureWeights, allFeatures.size());
}
- private void createWeights(IndexSearcher searcher, boolean needsScores, float boost,
- List<FeatureWeight > featureWeights, Collection<Feature> features) throws IOException {
+ private void createWeights(IndexSearcher searcher, boolean needsScores, float boost,
+ List<Feature.FeatureWeight > featureWeights, Collection<Feature> features) throws IOException {
final SolrQueryRequest req = getRequest();
// since the feature store is a linkedhashmap order is preserved
for (final Feature f : features) {
- try{
- FeatureWeight fw = f.createWeight(searcher, needsScores, req, originalQuery, efi);
- featureWeights.add(fw);
- } catch (final Exception e) {
- throw new RuntimeException("Exception from createWeight for " + f.toString() + " "
- + e.getMessage(), e);
- }
+ try{
+ Feature.FeatureWeight fw = f.createWeight(searcher, needsScores, req, originalQuery, efi);
+ featureWeights.add(fw);
+ } catch (final Exception e) {
+ throw new RuntimeException("Exception from createWeight for " + f.toString() + " "
+ + e.getMessage(), e);
}
+ }
}
- class CreateWeightCallable implements Callable<FeatureWeight>{
- private Feature f;
+ class CreateWeightCallable implements Callable<Feature.FeatureWeight>{
+ final private Feature f;
IndexSearcher searcher;
boolean needsScores;
SolrQueryRequest req;
@@ -260,9 +257,9 @@ public class LTRScoringQuery extends Query {
}
@Override
- public FeatureWeight call() throws Exception{
+ public Feature.FeatureWeight call() throws Exception{
try {
- FeatureWeight fw = f.createWeight(searcher, needsScores, req, originalQuery, efi);
+ Feature.FeatureWeight fw = f.createWeight(searcher, needsScores, req, originalQuery, efi);
return fw;
} catch (final Exception e) {
throw new RuntimeException("Exception from createWeight for " + f.toString() + " "
@@ -275,21 +272,21 @@ public class LTRScoringQuery extends Query {
} // end of call CreateWeightCallable
private void createWeightsParallel(IndexSearcher searcher, boolean needsScores, float boost,
- List<FeatureWeight > featureWeights, Collection<Feature> features) throws RuntimeException {
+ List<Feature.FeatureWeight > featureWeights, Collection<Feature> features) throws RuntimeException {
final SolrQueryRequest req = getRequest();
- List<Future<FeatureWeight> > futures = new ArrayList<>(features.size());
+ List<Future<Feature.FeatureWeight> > futures = new ArrayList<>(features.size());
try{
for (final Feature f : features) {
CreateWeightCallable callable = new CreateWeightCallable(f, searcher, needsScores, req);
- RunnableFuture<FeatureWeight> runnableFuture = new FutureTask<>(callable);
- querySemaphore.acquire(); // always acquire before the ltrSemaphore is acquired, to guarantee a that the current query is within the limit for max. threads
+ RunnableFuture<Feature.FeatureWeight> runnableFuture = new FutureTask<>(callable);
+ querySemaphore.acquire(); // always acquire before the ltrSemaphore is acquired, to guarantee a that the current query is within the limit for max. threads
ltrThreadMgr.acquireLTRSemaphore();//may block and/or interrupt
ltrThreadMgr.execute(runnableFuture);//releases semaphore when done
futures.add(runnableFuture);
}
//Loop over futures to get the feature weight objects
- for (final Future<FeatureWeight> future : futures) {
+ for (final Future<Feature.FeatureWeight> future : futures) {
featureWeights.add(future.get()); // future.get() will block if the job is still running
}
} catch (Exception e) { // To catch InterruptedException and ExecutionException
@@ -309,7 +306,7 @@ public class LTRScoringQuery extends Query {
boolean used;
FeatureInfo(String n, float v, boolean u){
- name = n; value = v; used = u;
+ name = n; value = v; used = u;
}
public void setScore(float score){
@@ -339,34 +336,34 @@ public class LTRScoringQuery extends Query {
// List of the model's features used for scoring. This is a subset of the
// features used for logging.
- FeatureWeight[] modelFeatureWeights;
+ Feature.FeatureWeight[] modelFeatureWeights;
float[] modelFeatureValuesNormalized;
- FeatureWeight[] extractedFeatureWeights;
+ Feature.FeatureWeight[] extractedFeatureWeights;
// List of all the feature names, values - used for both scoring and logging
/*
- * What is the advantage of using a hashmap here instead of an array of objects?
- * A set of arrays was used earlier and the elements were accessed using the featureId.
- * With the updated logic to create weights selectively,
- * the number of elements in the array can be fewer than the total number of features.
- * When [features] are not requested, only the model features are extracted.
- * In this case, the indexing by featureId, fails. For this reason,
- * we need a map which holds just the features that were triggered by the documents in the result set.
- *
+ * What is the advantage of using a hashmap here instead of an array of objects?
+ * A set of arrays was used earlier and the elements were accessed using the featureId.
+ * With the updated logic to create weights selectively,
+ * the number of elements in the array can be fewer than the total number of features.
+ * When [features] are not requested, only the model features are extracted.
+ * In this case, the indexing by featureId, fails. For this reason,
+ * we need a map which holds just the features that were triggered by the documents in the result set.
+ *
*/
FeatureInfo[] featuresInfo;
- /*
- * @param modelFeatureWeights
+ /*
+ * @param modelFeatureWeights
* - should be the same size as the number of features used by the model
* @param extractedFeatureWeights
* - if features are requested from the same store as model feature store,
* this will be the size of total number of features in the model feature store
- * else, this will be the size of the modelFeatureWeights
+ * else, this will be the size of the modelFeatureWeights
* @param allFeaturesSize
* - total number of feature in the feature store used by this model
*/
- public ModelWeight(IndexSearcher searcher, FeatureWeight[] modelFeatureWeights,
- FeatureWeight[] extractedFeatureWeights, int allFeaturesSize) {
+ public ModelWeight(IndexSearcher searcher, Feature.FeatureWeight[] modelFeatureWeights,
+ Feature.FeatureWeight[] extractedFeatureWeights, int allFeaturesSize) {
super(LTRScoringQuery.this);
this.searcher = searcher;
this.extractedFeatureWeights = extractedFeatureWeights;
@@ -382,7 +379,7 @@ public class LTRScoringQuery extends Query {
int featId = extractedFeatureWeights[i].getIndex();
float value = extractedFeatureWeights[i].getDefaultValue();
featuresInfo[featId] = new FeatureInfo(featName,value,false);
- }
+ }
}
public FeatureInfo[] getFeaturesInfo(){
@@ -395,10 +392,10 @@ public class LTRScoringQuery extends Query {
*/
private void makeNormalizedFeatures() {
int pos = 0;
- for (final FeatureWeight feature : modelFeatureWeights) {
+ for (final Feature.FeatureWeight feature : modelFeatureWeights) {
final int featureId = feature.getIndex();
FeatureInfo fInfo = featuresInfo[featureId];
- if (fInfo.isUsed()) { // not checking for finfo == null as that would be a bug we should catch
+ if (fInfo.isUsed()) { // not checking for finfo == null as that would be a bug we should catch
modelFeatureValuesNormalized[pos] = fInfo.getValue();
} else {
modelFeatureValuesNormalized[pos] = feature.getDefaultValue();
@@ -413,12 +410,12 @@ public class LTRScoringQuery extends Query {
throws IOException {
final Explanation[] explanations = new Explanation[this.featuresInfo.length];
- for (final FeatureWeight feature : extractedFeatureWeights) {
+ for (final Feature.FeatureWeight feature : extractedFeatureWeights) {
explanations[feature.getIndex()] = feature.explain(context, doc);
}
final List<Explanation> featureExplanations = new ArrayList<>();
for (int idx = 0 ;idx < modelFeatureWeights.length; ++idx) {
- final FeatureWeight f = modelFeatureWeights[idx];
+ final Feature.FeatureWeight f = modelFeatureWeights[idx];
Explanation e = ltrScoringModel.getNormalizerExplanation(explanations[f.getIndex()], idx);
featureExplanations.add(e);
}
@@ -433,7 +430,7 @@ public class LTRScoringQuery extends Query {
@Override
public void extractTerms(Set<Term> terms) {
- for (final FeatureWeight feature : extractedFeatureWeights) {
+ for (final Feature.FeatureWeight feature : extractedFeatureWeights) {
feature.extractTerms(terms);
}
}
@@ -450,10 +447,10 @@ public class LTRScoringQuery extends Query {
@Override
public ModelScorer scorer(LeafReaderContext context) throws IOException {
- final List<FeatureScorer> featureScorers = new ArrayList<FeatureScorer>(
+ final List<Feature.FeatureWeight.FeatureScorer> featureScorers = new ArrayList<Feature.FeatureWeight.FeatureScorer>(
extractedFeatureWeights.length);
- for (final FeatureWeight featureWeight : extractedFeatureWeights) {
- final FeatureScorer scorer = featureWeight.scorer(context);
+ for (final Feature.FeatureWeight featureWeight : extractedFeatureWeights) {
+ final Feature.FeatureWeight.FeatureScorer scorer = featureWeight.scorer(context);
if (scorer != null) {
featureScorers.add(featureWeight.scorer(context));
}
@@ -476,10 +473,10 @@ public class LTRScoringQuery extends Query {
return docInfo;
}
- public ModelScorer(Weight weight, List<FeatureScorer> featureScorers) {
+ public ModelScorer(Weight weight, List<Feature.FeatureWeight.FeatureScorer> featureScorers) {
super(weight);
docInfo = new DocInfo();
- for (final FeatureScorer subSocer : featureScorers) {
+ for (final Feature.FeatureWeight.FeatureScorer subSocer : featureScorers) {
subSocer.setDocInfo(docInfo);
}
if (featureScorers.size() <= 1) { // TODO: Allow the use of dense
@@ -523,7 +520,7 @@ public class LTRScoringQuery extends Query {
protected int activeDoc = -1;
protected SparseModelScorer(Weight weight,
- List<FeatureScorer> featureScorers) {
+ List<Feature.FeatureWeight.FeatureScorer> featureScorers) {
super(weight);
if (featureScorers.size() <= 1) {
throw new IllegalArgumentException(
@@ -555,7 +552,7 @@ public class LTRScoringQuery extends Query {
if (activeDoc == targetDoc) {
for (DisiWrapper w = topList; w != null; w = w.next) {
final Scorer subScorer = w.scorer;
- FeatureWeight scFW = (FeatureWeight) subScorer.getWeight();
+ Feature.FeatureWeight scFW = (Feature.FeatureWeight) subScorer.getWeight();
final int featureId = scFW.getIndex();
featuresInfo[featureId].setScore(subScorer.score());
featuresInfo[featureId].setUsed(true);
@@ -627,10 +624,10 @@ public class LTRScoringQuery extends Query {
int activeDoc = -1; // The doc that our scorer's are actually at
int targetDoc = -1; // The doc we were most recently told to go to
int freq = -1;
- List<FeatureScorer> featureScorers;
+ List<Feature.FeatureWeight.FeatureScorer> featureScorers;
protected DenseModelScorer(Weight weight,
- List<FeatureScorer> featureScorers) {
+ List<Feature.FeatureWeight.FeatureScorer> featureScorers) {
super(weight);
this.featureScorers = featureScorers;
}
@@ -648,7 +645,7 @@ public class LTRScoringQuery extends Query {
for (final Scorer scorer : featureScorers) {
if (scorer.docID() == activeDoc) {
freq++;
- FeatureWeight scFW = (FeatureWeight) scorer.getWeight();
+ Feature.FeatureWeight scFW = (Feature.FeatureWeight) scorer.getWeight();
final int featureId = scFW.getIndex();
featuresInfo[featureId].setScore(scorer.score());
featuresInfo[featureId].setUsed(true);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRThreadModule.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRThreadModule.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRThreadModule.java
index 0576f6f..9e71b2f 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRThreadModule.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/LTRThreadModule.java
@@ -136,6 +136,10 @@ final public class LTRThreadModule implements NamedListInitializedPlugin {
this.maxPoolSize = maxPoolSize;
}
+ public void setKeepAliveTimeSeconds(long keepAliveTimeSeconds) {
+ this.keepAliveTimeSeconds = keepAliveTimeSeconds;
+ }
+
public void setThreadNamePrefix(String threadNamePrefix) {
this.threadNamePrefix = threadNamePrefix;
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/Feature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/Feature.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/Feature.java
index 87adde2..2a3973e 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/Feature.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/Feature.java
@@ -53,7 +53,7 @@ import org.apache.solr.util.SolrPluginUtils;
}
}</pre>
* <p>
- * {@link Feature} is an abstract class and concrete classes should implement
+ * {@link Feature} is an abstract class and concrete classes should implement
* the {@link #validate()} function, and must implement the {@link #paramsToMap()}
* and createWeight() methods.
*/
@@ -84,16 +84,16 @@ public abstract class Feature extends Query {
this.name = name;
this.params = params;
}
-
+
/**
* On construction of a feature, this function confirms
* that the feature parameters are validated
- *
+ *
* @throws FeatureException
* Feature Exception
*/
protected void validate() throws FeatureException {
-
+
}
@Override
@@ -138,21 +138,21 @@ public abstract class Feature extends Query {
private boolean equalsTo(Feature other) {
if (index != other.index) {
- return false;
+ return false;
}
if (name == null) {
- if (other.name != null) {
- return false;
- }
- } else if (!name.equals(other.name)) {
+ if (other.name != null) {
return false;
+ }
+ } else if (!name.equals(other.name)) {
+ return false;
}
if (params == null) {
- if (other.params != null) {
- return false;
- }
- } else if (!params.equals(other.params)) {
+ if (other.params != null) {
return false;
+ }
+ } else if (!params.equals(other.params)) {
+ return false;
}
return true;
}
@@ -204,7 +204,7 @@ public abstract class Feature extends Query {
* @param searcher
* Solr searcher available for features if they need them
*/
- public FeatureWeight(Query q, IndexSearcher searcher,
+ public FeatureWeight(Query q, IndexSearcher searcher,
SolrQueryRequest request, Query originalQuery, Map<String,String[]> efi) {
super(q);
this.searcher = searcher;
@@ -237,7 +237,9 @@ public abstract class Feature extends Query {
float score = getDefaultValue();
if (r != null) {
r.iterator().advance(doc);
- if (r.docID() == doc) score = r.score();
+ if (r.docID() == doc) {
+ score = r.score();
+ }
return Explanation.match(score, toString());
}else{
return Explanation.match(score, "The feature has no value");
@@ -248,7 +250,7 @@ public abstract class Feature extends Query {
* Used in the FeatureWeight's explain. Each feature should implement this
* returning properties of the specific scorer useful for an explain. For
* example "MyCustomClassFeature [name=" + name + "myVariable:" + myVariable +
- * "]"; If not provided, a default implementation will return basic feature
+ * "]"; If not provided, a default implementation will return basic feature
* properties, which might not include query time specific values.
*/
@Override
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldLengthFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldLengthFeature.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldLengthFeature.java
index 20e5020..a173040 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldLengthFeature.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldLengthFeature.java
@@ -88,9 +88,9 @@ public class FieldLengthFeature extends Feature {
}
@Override
- public FeatureWeight createWeight(IndexSearcher searcher, boolean needsScores,
+ public FeatureWeight createWeight(IndexSearcher searcher, boolean needsScores,
SolrQueryRequest request, Query originalQuery, Map<String,String[]> efi)
- throws IOException {
+ throws IOException {
return new FieldLengthFeatureWeight(searcher, request, originalQuery, efi);
}
@@ -98,7 +98,7 @@ public class FieldLengthFeature extends Feature {
public class FieldLengthFeatureWeight extends FeatureWeight {
- public FieldLengthFeatureWeight(IndexSearcher searcher,
+ public FieldLengthFeatureWeight(IndexSearcher searcher,
SolrQueryRequest request, Query originalQuery, Map<String,String[]> efi) {
super(FieldLengthFeature.this, searcher, request, originalQuery, efi);
}
@@ -107,7 +107,7 @@ public class FieldLengthFeature extends Feature {
public FeatureScorer scorer(LeafReaderContext context) throws IOException {
NumericDocValues norms = context.reader().getNormValues(field);
if (norms == null){
- return new ValueFeatureScorer(this, 0f,
+ return new ValueFeatureScorer(this, 0f,
DocIdSetIterator.all(DocIdSetIterator.NO_MORE_DOCS));
}
return new FieldLengthFeatureScorer(this, norms);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldValueFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldValueFeature.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldValueFeature.java
index 49e0787..913c730 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldValueFeature.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/FieldValueFeature.java
@@ -67,15 +67,15 @@ public class FieldValueFeature extends Feature {
}
@Override
- public FeatureWeight createWeight(IndexSearcher searcher, boolean needsScores,
+ public FeatureWeight createWeight(IndexSearcher searcher, boolean needsScores,
SolrQueryRequest request, Query originalQuery, Map<String,String[]> efi)
- throws IOException {
+ throws IOException {
return new FieldValueFeatureWeight(searcher, request, originalQuery, efi);
}
public class FieldValueFeatureWeight extends FeatureWeight {
- public FieldValueFeatureWeight(IndexSearcher searcher,
+ public FieldValueFeatureWeight(IndexSearcher searcher,
SolrQueryRequest request, Query originalQuery, Map<String,String[]> efi) {
super(FieldValueFeature.this, searcher, request, originalQuery, efi);
}
@@ -123,8 +123,8 @@ public class FieldValueFeature extends Feature {
} catch (final IOException e) {
throw new FeatureException(
e.toString() + ": " +
- "Unable to extract feature for "
- + name, e);
+ "Unable to extract feature for "
+ + name, e);
}
return getDefaultValue();
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/OriginalScoreFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/OriginalScoreFeature.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/OriginalScoreFeature.java
index f141474..af1c0ec 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/OriginalScoreFeature.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/OriginalScoreFeature.java
@@ -29,7 +29,7 @@ import org.apache.lucene.search.Weight;
import org.apache.solr.ltr.DocInfo;
import org.apache.solr.request.SolrQueryRequest;
/**
- * This feature returns the original score that the document had before performing
+ * This feature returns the original score that the document had before performing
* the reranking.
* Example configuration:
* <pre>{
@@ -60,19 +60,19 @@ public class OriginalScoreFeature extends Feature {
final Weight w;
- public OriginalScoreWeight(IndexSearcher searcher,
+ public OriginalScoreWeight(IndexSearcher searcher,
SolrQueryRequest request, Query originalQuery, Map<String,String[]> efi) throws IOException {
super(OriginalScoreFeature.this, searcher, request, originalQuery, efi);
w = searcher.createNormalizedWeight(originalQuery, true);
};
-
+
@Override
public String toString() {
return "OriginalScoreFeature [query:" + originalQuery.toString() + "]";
}
-
+
@Override
public FeatureScorer scorer(LeafReaderContext context) throws IOException {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java
index 2037c34..4482725 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/SolrFeature.java
@@ -37,7 +37,6 @@ import org.apache.solr.request.LocalSolrQueryRequest;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.search.QParser;
import org.apache.solr.search.SolrIndexSearcher;
-import org.apache.solr.search.SolrIndexSearcher.ProcessedFilter;
import org.apache.solr.search.SyntaxError;
/**
* This feature allows you to reuse any Solr query as a feature. The value
@@ -106,9 +105,9 @@ public class SolrFeature extends Feature {
}
@Override
- public FeatureWeight createWeight(IndexSearcher searcher, boolean needsScores,
+ public FeatureWeight createWeight(IndexSearcher searcher, boolean needsScores,
SolrQueryRequest request, Query originalQuery, Map<String,String[]> efi)
- throws IOException {
+ throws IOException {
return new SolrFeatureWeight(searcher, request, originalQuery, efi);
}
@@ -116,9 +115,10 @@ public class SolrFeature extends Feature {
protected void validate() throws FeatureException {
super.validate();
if ((q == null || q.isEmpty()) &&
- ((fq == null) || fq.isEmpty()))
+ ((fq == null) || fq.isEmpty())) {
throw new FeatureException(getClass().getSimpleName()+
": Q or FQ must be provided");
+ }
}
/**
* Weight for a SolrFeature
@@ -128,7 +128,7 @@ public class SolrFeature extends Feature {
Query query;
List<Query> queryAndFilters;
- public SolrFeatureWeight(IndexSearcher searcher,
+ public SolrFeatureWeight(IndexSearcher searcher,
SolrQueryRequest request, Query originalQuery, Map<String,String[]> efi) throws IOException {
super(SolrFeature.this, searcher, request, originalQuery, efi);
try {
@@ -151,9 +151,7 @@ public class SolrFeature extends Feature {
}
// Build the filter queries
- queryAndFilters = new ArrayList<Query>(); // If there are no fqs we
- // just want an empty
- // list
+ queryAndFilters = new ArrayList<Query>(); // If there are no fqs we just want an empty list
if (fqs != null) {
for (String fq : fqs) {
if ((fq != null) && (fq.trim().length() != 0)) {
@@ -239,7 +237,7 @@ public class SolrFeature extends Feature {
*/
public DocIdSetIterator getDocIdSetIteratorFromQueries(List<Query> queries,
LeafReaderContext context) throws IOException {
- final ProcessedFilter pf = ((SolrIndexSearcher) searcher)
+ final SolrIndexSearcher.ProcessedFilter pf = ((SolrIndexSearcher) searcher)
.getProcessedFilter(null, queries);
final Bits liveDocs = context.reader().getLiveDocs();
@@ -273,8 +271,8 @@ public class SolrFeature extends Feature {
} catch (UnsupportedOperationException e) {
throw new FeatureException(
e.toString() + ": " +
- "Unable to extract feature for "
- + name, e);
+ "Unable to extract feature for "
+ + name, e);
}
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/ValueFeature.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/ValueFeature.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/ValueFeature.java
index afb1f10..279a551 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/ValueFeature.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/feature/ValueFeature.java
@@ -27,7 +27,7 @@ import org.apache.lucene.search.Query;
import org.apache.solr.request.SolrQueryRequest;
/**
* This feature allows to return a constant given value for the current document.
- *
+ *
* Example configuration:
* <pre>{
"name" : "userFromMobile",
@@ -42,7 +42,7 @@ import org.apache.solr.request.SolrQueryRequest;
*In the rerank request you can pass in rq={... efi.userFromMobile=1}, and the above
*feature will return 1 for all the docs for that request. If required is set to true,
*the request will return an error since you failed to pass in the efi, otherwise if will
- *just skip the feature and use a default value of 0 instead.
+ *just skip the feature and use a default value of 0 instead.
**/
public class ValueFeature extends Feature {
private float configValue = -1f;
@@ -98,9 +98,9 @@ public class ValueFeature extends Feature {
}
@Override
- public FeatureWeight createWeight(IndexSearcher searcher, boolean needsScores,
+ public FeatureWeight createWeight(IndexSearcher searcher, boolean needsScores,
SolrQueryRequest request, Query originalQuery, Map<String,String[]> efi)
- throws IOException {
+ throws IOException {
return new ValueFeatureWeight(searcher, request, originalQuery, efi);
}
@@ -108,7 +108,7 @@ public class ValueFeature extends Feature {
final protected Float featureValue;
- public ValueFeatureWeight(IndexSearcher searcher,
+ public ValueFeatureWeight(IndexSearcher searcher,
SolrQueryRequest request, Query originalQuery, Map<String,String[]> efi) {
super(ValueFeature.this, searcher, request, originalQuery, efi);
if (configValueStr != null) {
@@ -127,15 +127,16 @@ public class ValueFeature extends Feature {
@Override
public FeatureScorer scorer(LeafReaderContext context) throws IOException {
- if(featureValue!=null)
+ if(featureValue!=null) {
return new ValueFeatureScorer(this, featureValue,
DocIdSetIterator.all(DocIdSetIterator.NO_MORE_DOCS));
- else
+ } else {
return null;
+ }
}
-
-
+
+
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/LTRScoringModel.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/LTRScoringModel.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/LTRScoringModel.java
index 70d5b6d..96efee7 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/LTRScoringModel.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/LTRScoringModel.java
@@ -24,8 +24,8 @@ import java.util.Map;
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.search.Explanation;
-import org.apache.solr.ltr.feature.Feature;
import org.apache.solr.core.SolrResourceLoader;
+import org.apache.solr.ltr.feature.Feature;
import org.apache.solr.ltr.feature.FeatureException;
import org.apache.solr.ltr.norm.IdentityNormalizer;
import org.apache.solr.ltr.norm.Normalizer;
@@ -144,7 +144,7 @@ public abstract class LTRScoringModel {
public List<Normalizer> getNorms() {
return Collections.unmodifiableList(norms);
}
-
+
/**
* @return the name
*/
@@ -238,7 +238,7 @@ public abstract class LTRScoringModel {
public String getFeatureStoreName() {
return featureStoreName;
}
-
+
/**
* Given a list of normalized values for all features a scoring algorithm
* cares about, calculate and return a score.
@@ -271,7 +271,7 @@ public abstract class LTRScoringModel {
public String toString() {
return getClass().getSimpleName() + "(name="+getName()+")";
}
-
+
/**
* Goes through all the stored feature values, and calculates the normalized
* values for all the features that will be used for scoring.
@@ -282,17 +282,17 @@ public abstract class LTRScoringModel {
throw new FeatureException("Must have normalizer for every feature");
}
for(int idx = 0; idx < modelFeatureValuesNormalized.length; ++idx) {
- modelFeatureValuesNormalized[idx] =
+ modelFeatureValuesNormalized[idx] =
norms.get(idx).normalize(modelFeatureValuesNormalized[idx]);
}
}
-
+
public Explanation getNormalizerExplanation(Explanation e, int idx) {
Normalizer n = norms.get(idx);
if (n != IdentityNormalizer.INSTANCE) {
return n.explain(e);
}
return e;
- }
+ }
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/LinearModel.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/LinearModel.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/LinearModel.java
index 0e8d190..8fdab57 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/LinearModel.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/LinearModel.java
@@ -26,7 +26,7 @@ import org.apache.solr.ltr.feature.Feature;
import org.apache.solr.ltr.norm.Normalizer;
/**
- * A scoring model that computes scores using a dot product.
+ * A scoring model that computes scores using a dot product.
* Example models are RankSVM and Pranking.
* <p>
* Example configuration:
@@ -134,7 +134,9 @@ public class LinearModel extends LTRScoringModel {
sb.append("(name=").append(getName());
sb.append(",featureWeights=[");
for (int ii = 0; ii < features.size(); ++ii) {
- if (ii>0) sb.append(',');
+ if (ii>0) {
+ sb.append(',');
+ }
final String key = features.get(ii).getName();
sb.append(key).append('=').append(featureToWeight[ii]);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/MultipleAdditiveTreesModel.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/MultipleAdditiveTreesModel.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/MultipleAdditiveTreesModel.java
index 0046b46..fa277cb 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/MultipleAdditiveTreesModel.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/model/MultipleAdditiveTreesModel.java
@@ -316,7 +316,7 @@ public class MultipleAdditiveTreesModel extends LTRScoringModel {
}
}
- @Override
+ @Override
public float score(float[] modelFeatureValuesNormalized) {
float score = 0;
for (final RegressionTree t : trees) {
@@ -365,7 +365,9 @@ public class MultipleAdditiveTreesModel extends LTRScoringModel {
sb.append("(name=").append(getName());
sb.append(",trees=[");
for (int ii = 0; ii < trees.size(); ++ii) {
- if (ii>0) sb.append(',');
+ if (ii>0) {
+ sb.append(',');
+ }
sb.append(trees.get(ii));
}
sb.append("])");
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/MinMaxNormalizer.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/MinMaxNormalizer.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/MinMaxNormalizer.java
index 6f9dd86..89c7b45 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/MinMaxNormalizer.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/MinMaxNormalizer.java
@@ -72,14 +72,15 @@ public class MinMaxNormalizer extends Normalizer {
this.max = Float.parseFloat(max);
updateDelta();
}
-
+
@Override
protected void validate() throws NormalizerException {
super.validate();
- if (delta == 0f)
- throw
+ if (delta == 0f) {
+ throw
new NormalizerException("MinMax Normalizer delta must not be zero " +
- "| min = " + min + ",max = " + max + ",delta = " + delta);
+ "| min = " + min + ",max = " + max + ",delta = " + delta);
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/Normalizer.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/Normalizer.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/Normalizer.java
index 70b4c92..7d77151 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/Normalizer.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/Normalizer.java
@@ -51,16 +51,16 @@ public abstract class Normalizer {
f.validate();
return f;
}
-
+
/**
* On construction of a normalizer, this function confirms
* that the normalizer parameters are validated
- *
+ *
* @throws NormalizerException
* Normalizer Exception
*/
protected void validate() throws NormalizerException {
-
+
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/StandardNormalizer.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/StandardNormalizer.java b/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/StandardNormalizer.java
index 51238d9..20a984c 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/StandardNormalizer.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/ltr/norm/StandardNormalizer.java
@@ -69,14 +69,15 @@ public class StandardNormalizer extends Normalizer {
public float normalize(float value) {
return (value - avg) / std;
}
-
+
@Override
protected void validate() throws NormalizerException {
super.validate();
- if (std <= 0f)
- throw
+ if (std <= 0f) {
+ throw
new NormalizerException("Standard Normalizer standard deviation must "
- + "be positive | avg = " + avg + ",std = " + std);
+ + "be positive | avg = " + avg + ",std = " + std);
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/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 fca10ad..a557bde 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
@@ -24,7 +24,6 @@ import java.util.List;
import java.util.Map;
import org.apache.solr.common.SolrException;
-import org.apache.solr.common.SolrException.ErrorCode;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.core.SolrCore;
import org.apache.solr.core.SolrResourceLoader;
@@ -34,15 +33,14 @@ import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.rest.BaseSolrResource;
import org.apache.solr.rest.ManagedResource;
import org.apache.solr.rest.ManagedResourceObserver;
-import org.apache.solr.rest.ManagedResourceStorage.StorageIO;
+import org.apache.solr.rest.ManagedResourceStorage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Managed resource for a storing a feature.
*/
-public class ManagedFeatureStore extends ManagedResource implements
- ManagedResource.ChildResourceSupport {
+public class ManagedFeatureStore extends ManagedResource implements ManagedResource.ChildResourceSupport {
public static void registerManagedFeatureStore(SolrResourceLoader solrResourceLoader,
ManagedResourceObserver managedResourceObserver) {
@@ -84,9 +82,9 @@ public class ManagedFeatureStore extends ManagedResource implements
private static final String FEATURES_JSON_FIELD = "features";
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
+
public ManagedFeatureStore(String resourceId, SolrResourceLoader loader,
- StorageIO storageIO) throws SolrException {
+ ManagedResourceStorage.StorageIO storageIO) throws SolrException {
super(resourceId, loader, storageIO);
}
@@ -175,7 +173,7 @@ public class ManagedFeatureStore extends ManagedResource implements
} else {
final FeatureStore store = getFeatureStore(childId);
if (store == null) {
- throw new SolrException(ErrorCode.BAD_REQUEST,
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
"missing feature store [" + childId + "]");
}
response.add(FEATURES_JSON_FIELD,
@@ -200,7 +198,7 @@ public class ManagedFeatureStore extends ManagedResource implements
o.put(PARAMS_KEY, feat.paramsToMap());
return o;
}
-
+
private static Feature fromFeatureMap(SolrResourceLoader solrResourceLoader,
Map<String,Object> featureMap) {
final String className = (String) featureMap.get(CLASS_KEY);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/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 c4addfb..8436751 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
@@ -21,8 +21,8 @@ import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+
import org.apache.solr.common.SolrException;
-import org.apache.solr.common.SolrException.ErrorCode;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.core.SolrCore;
import org.apache.solr.core.SolrResourceLoader;
@@ -37,15 +37,14 @@ import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.rest.BaseSolrResource;
import org.apache.solr.rest.ManagedResource;
import org.apache.solr.rest.ManagedResourceObserver;
-import org.apache.solr.rest.ManagedResourceStorage.StorageIO;
+import org.apache.solr.rest.ManagedResourceStorage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Menaged resource for storing a model
*/
-public class ManagedModelStore extends ManagedResource implements
- ManagedResource.ChildResourceSupport {
+public class ManagedModelStore extends ManagedResource implements ManagedResource.ChildResourceSupport {
public static void registerManagedModelStore(SolrResourceLoader solrResourceLoader,
ManagedResourceObserver managedResourceObserver) {
@@ -63,9 +62,6 @@ public class ManagedModelStore extends ManagedResource implements
/** the model store rest endpoint **/
public static final String REST_END_POINT = "/schema/model-store";
- /** name of the attribute containing the features used by the mode **/
- private static final Object MODEL_FEATURE_LIST = "features";
-
/**
* Managed model store: the name of the attribute containing all the models of
* a model store
@@ -89,9 +85,9 @@ public class ManagedModelStore extends ManagedResource implements
private ManagedFeatureStore managedFeatureStore;
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
+
public ManagedModelStore(String resourceId, SolrResourceLoader loader,
- StorageIO storageIO) throws SolrException {
+ ManagedResourceStorage.StorageIO storageIO) throws SolrException {
super(resourceId, loader, storageIO);
store = new ModelStore();
}
@@ -131,7 +127,7 @@ public class ManagedModelStore extends ManagedResource implements
final LTRScoringModel algo = fromLTRScoringModelMap(solrResourceLoader, u, managedFeatureStore);
addModel(algo);
} catch (final ModelException e) {
- throw new SolrException(ErrorCode.BAD_REQUEST, e);
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
}
}
}
@@ -142,7 +138,7 @@ public class ManagedModelStore extends ManagedResource implements
log.info("adding model {}", ltrScoringModel.getName());
store.addModel(ltrScoringModel);
} catch (final ModelException e) {
- throw new SolrException(ErrorCode.BAD_REQUEST, e);
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
}
}
@@ -156,7 +152,7 @@ public class ManagedModelStore extends ManagedResource implements
final LTRScoringModel algo = fromLTRScoringModelMap(solrResourceLoader, u, managedFeatureStore);
addModel(algo);
} catch (final ModelException e) {
- throw new SolrException(ErrorCode.BAD_REQUEST, e);
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
}
}
}
@@ -167,7 +163,7 @@ public class ManagedModelStore extends ManagedResource implements
final LTRScoringModel algo = fromLTRScoringModelMap(solrResourceLoader, map, managedFeatureStore);
addModel(algo);
} catch (final ModelException e) {
- throw new SolrException(ErrorCode.BAD_REQUEST, e);
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/response/transform/LTRFeatureLoggerTransformerFactory.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/response/transform/LTRFeatureLoggerTransformerFactory.java b/solr/contrib/ltr/src/java/org/apache/solr/response/transform/LTRFeatureLoggerTransformerFactory.java
index 605b990..d144292 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/response/transform/LTRFeatureLoggerTransformerFactory.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/response/transform/LTRFeatureLoggerTransformerFactory.java
@@ -25,24 +25,20 @@ import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.search.Explanation;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrException;
-import org.apache.solr.common.SolrException.ErrorCode;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.ltr.FeatureLogger;
import org.apache.solr.ltr.LTRRescorer;
import org.apache.solr.ltr.LTRScoringQuery;
-import org.apache.solr.ltr.LTRScoringQuery.ModelWeight;
import org.apache.solr.ltr.LTRThreadModule;
-import org.apache.solr.ltr.feature.Feature;
import org.apache.solr.ltr.SolrQueryRequestContextUtils;
+import org.apache.solr.ltr.feature.Feature;
import org.apache.solr.ltr.model.LTRScoringModel;
import org.apache.solr.ltr.norm.Normalizer;
import org.apache.solr.ltr.store.FeatureStore;
import org.apache.solr.ltr.store.rest.ManagedFeatureStore;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.ResultContext;
-import org.apache.solr.response.transform.DocTransformer;
-import org.apache.solr.response.transform.TransformerFactory;
import org.apache.solr.search.LTRQParserPlugin;
import org.apache.solr.search.SolrIndexSearcher;
import org.apache.solr.util.SolrPluginUtils;
@@ -124,7 +120,7 @@ public class LTRFeatureLoggerTransformerFactory extends TransformerFactory {
private List<LeafReaderContext> leafContexts;
private SolrIndexSearcher searcher;
private LTRScoringQuery scoringQuery;
- private ModelWeight modelWeight;
+ private LTRScoringQuery.ModelWeight modelWeight;
private FeatureLogger<?> featureLogger;
private boolean docsWereNotReranked;
@@ -158,7 +154,7 @@ public class LTRFeatureLoggerTransformerFactory extends TransformerFactory {
searcher = context.getSearcher();
if (searcher == null) {
throw new SolrException(
- org.apache.solr.common.SolrException.ErrorCode.BAD_REQUEST,
+ SolrException.ErrorCode.BAD_REQUEST,
"searcher is null");
}
leafContexts = searcher.getTopReaderContext().leaves();
@@ -174,13 +170,13 @@ public class LTRFeatureLoggerTransformerFactory extends TransformerFactory {
final FeatureStore store = fr.getFeatureStore(featureStoreName);
featureStoreName = store.getName(); // if featureStoreName was null before this gets actual name
-
+
try {
final LoggingModel lm = new LoggingModel(loggingModelName,
featureStoreName, store.getFeatures());
-
- scoringQuery = new LTRScoringQuery(lm,
- LTRQParserPlugin.extractEFIParams(params),
+
+ scoringQuery = new LTRScoringQuery(lm,
+ LTRQParserPlugin.extractEFIParams(params),
true,
threadManager); // request feature weights to be created for all features
@@ -188,7 +184,7 @@ public class LTRFeatureLoggerTransformerFactory extends TransformerFactory {
scoringQuery.setOriginalQuery(context.getQuery());
}catch (final Exception e) {
- throw new SolrException(ErrorCode.BAD_REQUEST,
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
"retrieving the feature store "+featureStoreName, e);
}
}
@@ -203,10 +199,10 @@ public class LTRFeatureLoggerTransformerFactory extends TransformerFactory {
try {
modelWeight = scoringQuery.createWeight(searcher, true, 1f);
} catch (final IOException e) {
- throw new SolrException(ErrorCode.BAD_REQUEST, e.getMessage(), e);
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e.getMessage(), e);
}
if (modelWeight == null) {
- throw new SolrException(ErrorCode.BAD_REQUEST,
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
"error logging the features, model weight is null");
}
}
@@ -236,7 +232,7 @@ public class LTRFeatureLoggerTransformerFactory extends TransformerFactory {
featureStoreName, allFeatures, Collections.emptyMap());
}
- protected LoggingModel(String name, List<Feature> features,
+ protected LoggingModel(String name, List<Feature> features,
List<Normalizer> norms, String featureStoreName,
List<Feature> allFeatures, Map<String,Object> params) {
super(name, features, norms, featureStoreName, allFeatures, params);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/response/transform/package-info.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/response/transform/package-info.java b/solr/contrib/ltr/src/java/org/apache/solr/response/transform/package-info.java
index 7b48f36..bab3ebf 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/response/transform/package-info.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/response/transform/package-info.java
@@ -14,8 +14,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
-/**
+
+/**
* APIs and implementations of {@link org.apache.solr.response.transform.DocTransformer} for modifying documents in Solr request responses
*/
package org.apache.solr.response.transform;
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/search/LTRQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/search/LTRQParserPlugin.java b/solr/contrib/ltr/src/java/org/apache/solr/search/LTRQParserPlugin.java
index ad2e81c..40cbaa9 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/search/LTRQParserPlugin.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/search/LTRQParserPlugin.java
@@ -27,23 +27,19 @@ import org.apache.lucene.analysis.util.ResourceLoaderAware;
import org.apache.lucene.search.MatchAllDocsQuery;
import org.apache.lucene.search.Query;
import org.apache.solr.common.SolrException;
-import org.apache.solr.common.SolrException.ErrorCode;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
+import org.apache.solr.core.SolrResourceLoader;
import org.apache.solr.ltr.LTRRescorer;
-import org.apache.solr.ltr.LTRThreadModule;
import org.apache.solr.ltr.LTRScoringQuery;
+import org.apache.solr.ltr.LTRThreadModule;
import org.apache.solr.ltr.SolrQueryRequestContextUtils;
import org.apache.solr.ltr.model.LTRScoringModel;
-import org.apache.solr.core.SolrResourceLoader;
import org.apache.solr.ltr.store.rest.ManagedFeatureStore;
import org.apache.solr.ltr.store.rest.ManagedModelStore;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.rest.ManagedResource;
import org.apache.solr.rest.ManagedResourceObserver;
-import org.apache.solr.search.QParser;
-import org.apache.solr.search.QParserPlugin;
-import org.apache.solr.search.SyntaxError;
import org.apache.solr.util.SolrPluginUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -60,7 +56,7 @@ public class LTRQParserPlugin extends QParserPlugin implements ResourceLoaderAwa
private static Query defaultQuery = new MatchAllDocsQuery();
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
+
// params for setting custom external info that features can use, like query
// intent
static final String EXTERNAL_FEATURE_INFO = "efi.";
@@ -88,13 +84,13 @@ public class LTRQParserPlugin extends QParserPlugin implements ResourceLoaderAwa
threadManager = LTRThreadModule.getInstance(args);
SolrPluginUtils.invokeSetters(this, args);
}
-
+
@Override
public QParser createParser(String qstr, SolrParams localParams,
SolrParams params, SolrQueryRequest req) {
return new LTRQParser(qstr, localParams, params, req);
}
-
+
/**
* Given a set of local SolrParams, extract all of the efi.key=value params into a map
* @param localParams Local request parameters that might conatin efi params
@@ -114,7 +110,7 @@ public class LTRQParserPlugin extends QParserPlugin implements ResourceLoaderAwa
}
return externalFeatureInfo;
}
-
+
@Override
public void inform(ResourceLoader loader) throws IOException {
@@ -126,15 +122,15 @@ public class LTRQParserPlugin extends QParserPlugin implements ResourceLoaderAwa
@Override
public void onManagedResourceInitialized(NamedList<?> args, ManagedResource res) throws SolrException {
if (res instanceof ManagedFeatureStore) {
- fr = (ManagedFeatureStore)res;
+ fr = (ManagedFeatureStore)res;
}
if (res instanceof ManagedModelStore){
- mr = (ManagedModelStore)res;
+ mr = (ManagedModelStore)res;
}
if (mr != null && fr != null){
- mr.setManagedFeatureStore(fr);
- // now we can safely load the models
- mr.loadStoredModels();
+ mr.setManagedFeatureStore(fr);
+ // now we can safely load the models
+ mr.loadStoredModels();
}
}
@@ -154,10 +150,10 @@ public class LTRQParserPlugin extends QParserPlugin implements ResourceLoaderAwa
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
"Must provide model in the request");
}
-
+
final LTRScoringModel ltrScoringModel = mr.getModel(modelName);
if (ltrScoringModel == null) {
- throw new SolrException(ErrorCode.BAD_REQUEST,
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
"cannot find " + LTRQParserPlugin.MODEL + " " + modelName);
}
@@ -166,13 +162,13 @@ public class LTRQParserPlugin extends QParserPlugin implements ResourceLoaderAwa
final String fvStoreName = SolrQueryRequestContextUtils.getFvStoreName(req);
// Check if features are requested and if the model feature store and feature-transform feature store are the same
final boolean featuresRequestedFromSameStore = (modelFeatureStoreName.equals(fvStoreName) || fvStoreName == null) ? extractFeatures:false;
-
- final LTRScoringQuery scoringQuery = new LTRScoringQuery(ltrScoringModel,
- extractEFIParams(localParams),
+
+ final LTRScoringQuery scoringQuery = new LTRScoringQuery(ltrScoringModel,
+ extractEFIParams(localParams),
featuresRequestedFromSameStore, threadManager);
// Enable the feature vector caching if we are extracting features, and the features
- // we requested are the same ones we are reranking with
+ // we requested are the same ones we are reranking with
if (featuresRequestedFromSameStore) {
scoringQuery.setFeatureLogger( SolrQueryRequestContextUtils.getFeatureLogger(req) );
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/java/org/apache/solr/search/package-info.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/java/org/apache/solr/search/package-info.java b/solr/contrib/ltr/src/java/org/apache/solr/search/package-info.java
index 67940b6..2286a93 100644
--- a/solr/contrib/ltr/src/java/org/apache/solr/search/package-info.java
+++ b/solr/contrib/ltr/src/java/org/apache/solr/search/package-info.java
@@ -14,8 +14,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
-/**
+
+/**
* APIs and classes for {@linkplain org.apache.solr.search.QParserPlugin parsing} and {@linkplain org.apache.solr.search.SolrIndexSearcher processing} search requests
*/
package org.apache.solr.search;
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTROnSolrCloud.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTROnSolrCloud.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTROnSolrCloud.java
index a8f938d..0eb661e 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTROnSolrCloud.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTROnSolrCloud.java
@@ -16,8 +16,8 @@
package org.apache.solr.ltr;
import java.io.File;
-import java.lang.invoke.MethodHandles;
import java.util.SortedMap;
+
import org.apache.commons.io.FileUtils;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.embedded.JettyConfig;
@@ -28,25 +28,20 @@ import org.apache.solr.cloud.AbstractDistribZkTestBase;
import org.apache.solr.cloud.MiniSolrCloudCluster;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.cloud.ZkStateReader;
-import org.apache.solr.ltr.TestRerankBase;
import org.apache.solr.ltr.feature.SolrFeature;
import org.apache.solr.ltr.feature.ValueFeature;
import org.apache.solr.ltr.model.LinearModel;
import org.eclipse.jetty.servlet.ServletHolder;
import org.junit.AfterClass;
import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public class TestLTROnSolrCloud extends TestRerankBase {
- private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
-
private MiniSolrCloudCluster solrCluster;
String solrconfig = "solrconfig-ltr.xml";
String schema = "schema-ltr.xml";
-
- SortedMap<ServletHolder,String> extraServlets = null;
+
+ SortedMap<ServletHolder,String> extraServlets = null;
@Override
public void setUp() throws Exception {
@@ -138,7 +133,7 @@ public class TestLTROnSolrCloud extends TestRerankBase {
private void createCollection(String name, String config, int numShards, int numReplicas, int maxShardsPerNode)
throws Exception {
CollectionAdminResponse response;
- CollectionAdminRequest.Create create =
+ CollectionAdminRequest.Create create =
CollectionAdminRequest.createCollection(name, config, numShards, numReplicas);
create.setMaxShardsPerNode(maxShardsPerNode);
response = create.process(solrCluster.getSolrClient());
@@ -199,14 +194,14 @@ public class TestLTROnSolrCloud extends TestRerankBase {
);
reloadCollection(COLLECTION);
}
-
+
private void reloadCollection(String collection) throws Exception {
CollectionAdminRequest.Reload reloadRequest = CollectionAdminRequest.reloadCollection(collection);
CollectionAdminResponse response = reloadRequest.process(solrCluster.getSolrClient());
assertEquals(0, response.getStatus());
assertTrue(response.isSuccess());
}
-
+
@AfterClass
public static void after() throws Exception {
FileUtils.deleteDirectory(tmpSolrHome);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRQParserExplain.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRQParserExplain.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRQParserExplain.java
index 8a46336..eb79249 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRQParserExplain.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRQParserExplain.java
@@ -18,7 +18,6 @@ package org.apache.solr.ltr;
import org.apache.solr.SolrTestCaseJ4.SuppressSSL;
import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.ltr.TestRerankBase;
import org.apache.solr.ltr.model.LinearModel;
import org.junit.AfterClass;
import org.junit.BeforeClass;
@@ -51,7 +50,7 @@ public class TestLTRQParserExplain extends TestRerankBase {
query.add("rows", "2");
query.add("rq", "{!ltr reRankDocs=2 model=linear2}");
query.add("fl", "*,score");
-
+
assertJQ(
"/query" + query.toQueryString(),
"/debug/explain/9=='\n13.5 = LinearModel(name=linear2,featureWeights=[constant1=1.5,constant2=3.5,pop=1.0]) model applied to features, sum of:\n 1.5 = prod of:\n 1.5 = weight on feature\n 1.0 = ValueFeature [name=constant1, params={value=1}]\n 7.0 = prod of:\n 3.5 = weight on feature\n 2.0 = ValueFeature [name=constant2, params={value=2}]\n 5.0 = prod of:\n 1.0 = weight on feature\n 5.0 = FieldValueFeature [name=pop, params={field=popularity}]\n'");
@@ -79,7 +78,7 @@ public class TestLTRQParserExplain extends TestRerankBase {
+ "queryIntentPerson=0.1231231,"
+ "queryIntentCompany=0.12121211"
+ "]) model applied to features, sum of:\n 0.0 = prod of:\n 0.0 = weight on feature\n 1.0 = ValueFeature [name=title, params={value=1}]\n 0.2 = prod of:\n 0.1 = weight on feature\n 2.0 = ValueFeature [name=description, params={value=2}]\n 0.4 = prod of:\n 0.2 = weight on feature\n 2.0 = ValueFeature [name=keywords, params={value=2}]\n 0.09 = prod of:\n 0.3 = weight on feature\n 0.3 = "+expectedExplainNormalizer+"\n 3.0 = ValueFeature [name=popularity, params={value=3}]\n 1.6 = prod of:\n 0.4 = weight on feature\n 4.0 = ValueFeature [name=text, params={value=4}]\n 0.6156155 = prod of:\n 0.1231231 = weight on feature\n 5.0 = ValueFeature [name=queryIntentPerson, params={value=5}]\n 0.60606056 = prod of:\n 0.12121211 = weight on feature\n 5.0 = ValueFeature [name=queryIntentCompany, params={value=5}]\n";
-
+
assertJQ(
"/query" + query.toQueryString(),
"/debug/explain/7=='"+expectedExplain+"'}");
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4e444db6/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRQParserPlugin.java
----------------------------------------------------------------------
diff --git a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRQParserPlugin.java b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRQParserPlugin.java
index 256aa92..c3f7dea 100644
--- a/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRQParserPlugin.java
+++ b/solr/contrib/ltr/src/test/org/apache/solr/ltr/TestLTRQParserPlugin.java
@@ -18,7 +18,6 @@ package org.apache.solr.ltr;
import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.ltr.TestRerankBase;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -71,37 +70,37 @@ public class TestLTRQParserPlugin extends TestRerankBase {
assert (res.contains("cannot find model"));
}
- @Test
- public void ltrMoreResultsThanReRankedTest() throws Exception {
- final String solrQuery = "_query_:{!edismax qf='title' mm=100% v='bloomberg' tie=0.1}";
- final SolrQuery query = new SolrQuery();
- query.setQuery(solrQuery);
- query.add("fl", "*, score");
- query.add("rows", "4");
- query.add("fv", "true");
-
+ @Test
+ public void ltrMoreResultsThanReRankedTest() throws Exception {
+ final String solrQuery = "_query_:{!edismax qf='title' mm=100% v='bloomberg' tie=0.1}";
+ final SolrQuery query = new SolrQuery();
+ query.setQuery(solrQuery);
+ query.add("fl", "*, score");
+ query.add("rows", "4");
+ query.add("fv", "true");
+
String nonRerankedScore = "0.09271725";
-
+
// Normal solr order
- assertJQ("/query" + query.toQueryString(),
+ assertJQ("/query" + query.toQueryString(),
"/response/docs/[0]/id=='9'",
"/response/docs/[1]/id=='8'",
"/response/docs/[2]/id=='7'",
"/response/docs/[3]/id=='6'",
"/response/docs/[3]/score=="+nonRerankedScore
- );
-
+ );
+
query.add("rq", "{!ltr model=6029760550880411648 reRankDocs=3}");
-
+
// Different order for top 3 reranked, but last one is the same top nonreranked doc
- assertJQ("/query" + query.toQueryString(),
+ assertJQ("/query" + query.toQueryString(),
"/response/docs/[0]/id=='7'",
"/response/docs/[1]/id=='8'",
"/response/docs/[2]/id=='9'",
"/response/docs/[3]/id=='6'",
"/response/docs/[3]/score=="+nonRerankedScore
- );
- }
+ );
+ }
@Test
public void ltrNoResultsTest() throws Exception {