use of org.apache.solr.client.solrj.SolrQuery in project lucene-solr by apache.
the class TestLTRQParserExplain method LinearScoreExplainMissingEfiFeatureShouldReturnDefaultScore.
@Test
public void LinearScoreExplainMissingEfiFeatureShouldReturnDefaultScore() throws Exception {
loadFeatures("features-linear-efi.json");
loadModels("linear-model-efi.json");
SolrQuery query = new SolrQuery();
query.setQuery("title:bloomberg");
query.setParam("debugQuery", "on");
query.add("rows", "4");
query.add("rq", "{!ltr reRankDocs=4 model=linear-efi}");
query.add("fl", "*,score");
query.add("wt", "xml");
final String linearModelEfiString = "LinearModel(name=linear-efi,featureWeights=[" + "sampleConstant=1.0," + "search_number_of_nights=2.0])";
query.remove("wt");
query.add("wt", "json");
assertJQ("/query" + query.toQueryString(), "/debug/explain/7=='\n5.0 = " + linearModelEfiString + " model applied to features, sum of:\n 5.0 = prod of:\n 1.0 = weight on feature\n 5.0 = ValueFeature [name=sampleConstant, params={value=5}]\n" + " 0.0 = prod of:\n" + " 2.0 = weight on feature\n" + " 0.0 = The feature has no value\n'}");
assertJQ("/query" + query.toQueryString(), "/debug/explain/9=='\n5.0 = " + linearModelEfiString + " model applied to features, sum of:\n 5.0 = prod of:\n 1.0 = weight on feature\n 5.0 = ValueFeature [name=sampleConstant, params={value=5}]\n" + " 0.0 = prod of:\n" + " 2.0 = weight on feature\n" + " 0.0 = The feature has no value\n'}");
}
use of org.apache.solr.client.solrj.SolrQuery in project lucene-solr by apache.
the class TestLTRQParserExplain method testRerankedExplainSameBetweenDifferentDocsWithSameFeatures.
@Test
public void testRerankedExplainSameBetweenDifferentDocsWithSameFeatures() throws Exception {
loadFeatures("features-linear.json");
loadModels("linear-model.json");
final SolrQuery query = new SolrQuery();
query.setQuery("title:bloomberg");
query.setParam("debugQuery", "on");
query.add("rows", "4");
query.add("rq", "{!ltr reRankDocs=4 model=6029760550880411648}");
query.add("fl", "*,score");
query.add("wt", "json");
final String expectedExplainNormalizer = "normalized using MinMaxNormalizer(min=0.0,max=10.0)";
final String expectedExplain = "\n3.5116758 = LinearModel(name=6029760550880411648,featureWeights=[" + "title=0.0," + "description=0.1," + "keywords=0.2," + "popularity=0.3," + "text=0.4," + "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 + "'}");
assertJQ("/query" + query.toQueryString(), "/debug/explain/9=='" + expectedExplain + "'}");
}
use of org.apache.solr.client.solrj.SolrQuery in project lucene-solr by apache.
the class TestLTRQParserPlugin method ltrBadRerankDocsTest.
@Test
public void ltrBadRerankDocsTest() 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");
query.add("rq", "{!ltr model=6029760550880411648 reRankDocs=-1}");
final String res = restTestHarness.query("/query" + query.toQueryString());
assert (res.contains("Must rerank at least 1 document"));
}
use of org.apache.solr.client.solrj.SolrQuery in project lucene-solr by apache.
the class TestLTRQParserPlugin method ltrNoResultsTest.
@Test
public void ltrNoResultsTest() throws Exception {
final SolrQuery query = new SolrQuery();
query.setQuery("title:bloomberg23");
query.add("fl", "*,[fv]");
query.add("rows", "3");
query.add("debugQuery", "on");
query.add("rq", "{!ltr reRankDocs=3 model=6029760550880411648}");
assertJQ("/query" + query.toQueryString(), "/response/numFound/==0");
}
use of org.apache.solr.client.solrj.SolrQuery in project lucene-solr by apache.
the class TestSelectiveWeightCreation method testSelectiveWeightsRequestFeaturesFromDifferentStore.
@Test
public void testSelectiveWeightsRequestFeaturesFromDifferentStore() throws Exception {
// final String docs0fv_sparse = FeatureLoggerTestUtils.toFeatureVector(
// "matchedTitle","1.0", "titlePhraseMatch","0.6103343");
// final String docs0fv_dense = FeatureLoggerTestUtils.toFeatureVector(
// "matchedTitle","1.0", "titlePhraseMatch","0.6103343", "titlePhrasesMatch","0.0");
// final String docs0fv_fstore4= FeatureLoggerTestUtils.toFeatureVector(
// "popularity","3.0", "originalScore","1.0");
//
// final String docs0fv = chooseDefaultFeatureVector(docs0fv_dense, docs0fv_sparse);
// extract all features in externalmodel's store (default store)
// rerank using externalmodel (default store)
final SolrQuery query = new SolrQuery();
query.setQuery("*:*");
query.add("fl", "*,score,fv:[fv]");
query.add("rows", "5");
query.add("rq", "{!ltr reRankDocs=10 model=externalmodel efi.user_query=w3 efi.userTitlePhrase1=w2 efi.userTitlePhrase2=w1}");
// SOLR-10710, feature based on query with term w3 now scores higher on doc 4, updated
assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/id=='4'");
assertJQ("/query" + query.toQueryString(), "/response/docs/[1]/id=='3'");
assertJQ("/query" + query.toQueryString(), "/response/docs/[2]/id=='1'");
// FIXME design better way to test this, we can't rely on absolute scores
// assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/fv=='"+docs0fv+"'");
// extract all features from fstore4
// rerank using externalmodel (default store)
query.remove("fl");
query.remove("rq");
query.add("fl", "*,score,fv:[fv store=fstore4 efi.myPop=3]");
query.add("rq", "{!ltr reRankDocs=10 model=externalmodel efi.user_query=w3}");
// SOLR-10710, feature based on query with term w3 now scores higher on doc 4, updated
assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/id=='4'");
assertJQ("/query" + query.toQueryString(), "/response/docs/[1]/id=='3'");
assertJQ("/query" + query.toQueryString(), "/response/docs/[2]/id=='1'");
// FIXME design better way to test this, we can't rely on absolute scores
// assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/fv=='"+docs0fv_fstore4+"'");
// extract all features from fstore4
// rerank using externalmodel2 (fstore2)
query.remove("fl");
query.remove("rq");
query.add("fl", "*,score,fv:[fv store=fstore4 efi.myPop=3]");
query.add("rq", "{!ltr reRankDocs=10 model=externalmodel2 efi.user_query=w3}");
assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/id=='5'");
assertJQ("/query" + query.toQueryString(), "/response/docs/[1]/id=='4'");
assertJQ("/query" + query.toQueryString(), "/response/docs/[2]/id=='3'");
// FIXME design better way to test this, we can't rely on absolute scores
// assertJQ("/query" + query.toQueryString(), "/response/docs/[0]/fv=='"+docs0fv_fstore4+"'");
}
Aggregations