|
@@ -28,17 +28,22 @@ import org.apache.lucene.search.ConstantScoreQuery;
|
|
|
import org.apache.lucene.search.Query;
|
|
|
import org.apache.lucene.search.TermQuery;
|
|
|
import org.apache.lucene.search.join.ScoreMode;
|
|
|
+import org.apache.lucene.search.similarities.DFISimilarity;
|
|
|
+import org.apache.lucene.search.similarities.PerFieldSimilarityWrapper;
|
|
|
+import org.apache.lucene.search.similarities.Similarity;
|
|
|
import org.apache.lucene.util.BytesRef;
|
|
|
import org.elasticsearch.ElasticsearchParseException;
|
|
|
import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest;
|
|
|
import org.elasticsearch.common.ParsingException;
|
|
|
import org.elasticsearch.common.compress.CompressedXContent;
|
|
|
+import org.elasticsearch.common.settings.Settings;
|
|
|
import org.elasticsearch.index.fielddata.IndexFieldDataService;
|
|
|
import org.elasticsearch.index.mapper.MapperService;
|
|
|
import org.elasticsearch.index.mapper.Uid;
|
|
|
import org.elasticsearch.index.mapper.internal.TypeFieldMapper;
|
|
|
import org.elasticsearch.index.mapper.internal.UidFieldMapper;
|
|
|
import org.elasticsearch.index.query.support.QueryInnerHits;
|
|
|
+import org.elasticsearch.index.similarity.SimilarityService;
|
|
|
import org.elasticsearch.script.Script.ScriptParseException;
|
|
|
import org.elasticsearch.search.fetch.innerhits.InnerHitsBuilder;
|
|
|
import org.elasticsearch.search.fetch.innerhits.InnerHitsContext;
|
|
@@ -48,6 +53,7 @@ import org.elasticsearch.test.TestSearchContext;
|
|
|
import org.junit.BeforeClass;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
|
|
|
|
import static org.hamcrest.CoreMatchers.equalTo;
|
|
@@ -58,8 +64,11 @@ public class HasChildQueryBuilderTests extends AbstractQueryTestCase<HasChildQue
|
|
|
protected static final String PARENT_TYPE = "parent";
|
|
|
protected static final String CHILD_TYPE = "child";
|
|
|
|
|
|
+ private static String similarity;
|
|
|
+
|
|
|
@BeforeClass
|
|
|
public static void before() throws Exception {
|
|
|
+ similarity = randomFrom("classic", "BM25");
|
|
|
MapperService mapperService = queryShardContext().getMapperService();
|
|
|
mapperService.merge(PARENT_TYPE, new CompressedXContent(PutMappingRequest.buildFromSimplifiedDef(PARENT_TYPE,
|
|
|
STRING_FIELD_NAME, "type=text",
|
|
@@ -72,6 +81,7 @@ public class HasChildQueryBuilderTests extends AbstractQueryTestCase<HasChildQue
|
|
|
mapperService.merge(CHILD_TYPE, new CompressedXContent(PutMappingRequest.buildFromSimplifiedDef(CHILD_TYPE,
|
|
|
"_parent", "type=" + PARENT_TYPE,
|
|
|
STRING_FIELD_NAME, "type=text",
|
|
|
+ "custom_string", "type=text,similarity=" + similarity,
|
|
|
INT_FIELD_NAME, "type=integer",
|
|
|
DOUBLE_FIELD_NAME, "type=double",
|
|
|
BOOLEAN_FIELD_NAME, "type=boolean",
|
|
@@ -300,4 +310,12 @@ public class HasChildQueryBuilderTests extends AbstractQueryTestCase<HasChildQue
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public void testNonDefaultSimilarity() throws Exception {
|
|
|
+ QueryShardContext shardContext = createShardContext();
|
|
|
+ HasChildQueryBuilder hasChildQueryBuilder = new HasChildQueryBuilder(CHILD_TYPE, new TermQueryBuilder("custom_string", "value"));
|
|
|
+ HasChildQueryBuilder.LateParsingQuery query = (HasChildQueryBuilder.LateParsingQuery) hasChildQueryBuilder.toQuery(shardContext);
|
|
|
+ Similarity expected = SimilarityService.BUILT_IN.get(similarity).apply(similarity, Settings.EMPTY).get();
|
|
|
+ assertThat(((PerFieldSimilarityWrapper) query.getSimilarity()).get("custom_string"), instanceOf(expected.getClass()));
|
|
|
+ }
|
|
|
}
|