diff options
author | Jim Ferenczi <jim.ferenczi@elastic.co> | 2015-12-15 12:07:07 +0100 |
---|---|---|
committer | Jim Ferenczi <jim.ferenczi@elastic.co> | 2015-12-21 16:22:53 +0100 |
commit | 81fd2169cf9f394c7be2a853caae5a54c0c75b18 (patch) | |
tree | bc2c1f1a05424aff18dc06369b87d8bdc6611ace /core/src/test/java/org | |
parent | 96e29be7c6b30ee6ffdbf7c1e198b705e2fce306 (diff) |
Renames "default" similarity into "classic".
Replaces deprecated DefaultSimilarity by ClassicSimilarity.
Fixes #15102
Diffstat (limited to 'core/src/test/java/org')
3 files changed, 108 insertions, 59 deletions
diff --git a/core/src/test/java/org/apache/lucene/queries/BlendedTermQueryTests.java b/core/src/test/java/org/apache/lucene/queries/BlendedTermQueryTests.java index 0f29ed5a2f..725b1bd440 100644 --- a/core/src/test/java/org/apache/lucene/queries/BlendedTermQueryTests.java +++ b/core/src/test/java/org/apache/lucene/queries/BlendedTermQueryTests.java @@ -37,7 +37,7 @@ import org.apache.lucene.search.ScoreDoc; import org.apache.lucene.search.TermQuery; import org.apache.lucene.search.TopDocs; import org.apache.lucene.search.similarities.BM25Similarity; -import org.apache.lucene.search.similarities.DefaultSimilarity; +import org.apache.lucene.search.similarities.ClassicSimilarity; import org.apache.lucene.search.similarities.Similarity; import org.apache.lucene.store.Directory; import org.apache.lucene.util.TestUtil; @@ -214,7 +214,7 @@ public class BlendedTermQueryTests extends ESTestCase { } public IndexSearcher setSimilarity(IndexSearcher searcher) { - Similarity similarity = random().nextBoolean() ? new BM25Similarity() : new DefaultSimilarity(); + Similarity similarity = random().nextBoolean() ? new BM25Similarity() : new ClassicSimilarity(); searcher.setSimilarity(similarity); return searcher; } diff --git a/core/src/test/java/org/elasticsearch/index/similarity/SimilarityTests.java b/core/src/test/java/org/elasticsearch/index/similarity/SimilarityTests.java index 5b2a368661..dd5ca6bcc5 100644 --- a/core/src/test/java/org/elasticsearch/index/similarity/SimilarityTests.java +++ b/core/src/test/java/org/elasticsearch/index/similarity/SimilarityTests.java @@ -19,11 +19,11 @@ package org.elasticsearch.index.similarity; +import org.apache.lucene.search.similarities.ClassicSimilarity; import org.apache.lucene.search.similarities.AfterEffectL; import org.apache.lucene.search.similarities.BM25Similarity; import org.apache.lucene.search.similarities.BasicModelG; import org.apache.lucene.search.similarities.DFRSimilarity; -import org.apache.lucene.search.similarities.DefaultSimilarity; import org.apache.lucene.search.similarities.DistributionSPL; import org.apache.lucene.search.similarities.IBSimilarity; import org.apache.lucene.search.similarities.LMDirichletSimilarity; @@ -31,11 +31,16 @@ import org.apache.lucene.search.similarities.LMJelinekMercerSimilarity; import org.apache.lucene.search.similarities.LambdaTTF; import org.apache.lucene.search.similarities.NormalizationH2; import org.elasticsearch.common.compress.CompressedXContent; +import org.elasticsearch.Version; +import org.elasticsearch.cluster.metadata.IndexMetaData; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.index.IndexService; import org.elasticsearch.index.mapper.DocumentMapper; +import org.elasticsearch.index.mapper.DocumentMapperParser; +import org.elasticsearch.index.mapper.MapperParsingException; import org.elasticsearch.test.ESSingleNodeTestCase; +import org.elasticsearch.test.VersionUtils; import java.io.IOException; @@ -45,42 +50,43 @@ import static org.hamcrest.CoreMatchers.instanceOf; public class SimilarityTests extends ESSingleNodeTestCase { public void testResolveDefaultSimilarities() { SimilarityService similarityService = createIndex("foo").similarityService(); - assertThat(similarityService.getSimilarity("default").get(), instanceOf(DefaultSimilarity.class)); + assertThat(similarityService.getSimilarity("classic").get(), instanceOf(ClassicSimilarity.class)); assertThat(similarityService.getSimilarity("BM25").get(), instanceOf(BM25Similarity.class)); + assertThat(similarityService.getSimilarity("default"), equalTo(null)); } - public void testResolveSimilaritiesFromMapping_default() throws IOException { + public void testResolveSimilaritiesFromMapping_classic() throws IOException { String mapping = XContentFactory.jsonBuilder().startObject().startObject("type") - .startObject("properties") - .startObject("field1").field("type", "string").field("similarity", "my_similarity").endObject() - .endObject() - .endObject().endObject().string(); + .startObject("properties") + .startObject("field1").field("type", "string").field("similarity", "my_similarity").endObject() + .endObject() + .endObject().endObject().string(); Settings indexSettings = Settings.settingsBuilder() - .put("index.similarity.my_similarity.type", "default") - .put("index.similarity.my_similarity.discount_overlaps", false) - .build(); + .put("index.similarity.my_similarity.type", "classic") + .put("index.similarity.my_similarity.discount_overlaps", false) + .build(); IndexService indexService = createIndex("foo", indexSettings); DocumentMapper documentMapper = indexService.mapperService().documentMapperParser().parse("type", new CompressedXContent(mapping)); - assertThat(documentMapper.mappers().getMapper("field1").fieldType().similarity(), instanceOf(DefaultSimilarityProvider.class)); + assertThat(documentMapper.mappers().getMapper("field1").fieldType().similarity(), instanceOf(ClassicSimilarityProvider.class)); - DefaultSimilarity similarity = (DefaultSimilarity) documentMapper.mappers().getMapper("field1").fieldType().similarity().get(); + ClassicSimilarity similarity = (ClassicSimilarity) documentMapper.mappers().getMapper("field1").fieldType().similarity().get(); assertThat(similarity.getDiscountOverlaps(), equalTo(false)); } public void testResolveSimilaritiesFromMapping_bm25() throws IOException { String mapping = XContentFactory.jsonBuilder().startObject().startObject("type") - .startObject("properties") - .startObject("field1").field("type", "string").field("similarity", "my_similarity").endObject() - .endObject() - .endObject().endObject().string(); + .startObject("properties") + .startObject("field1").field("type", "string").field("similarity", "my_similarity").endObject() + .endObject() + .endObject().endObject().string(); Settings indexSettings = Settings.settingsBuilder() - .put("index.similarity.my_similarity.type", "BM25") - .put("index.similarity.my_similarity.k1", 2.0f) - .put("index.similarity.my_similarity.b", 1.5f) - .put("index.similarity.my_similarity.discount_overlaps", false) - .build(); + .put("index.similarity.my_similarity.type", "BM25") + .put("index.similarity.my_similarity.k1", 2.0f) + .put("index.similarity.my_similarity.b", 1.5f) + .put("index.similarity.my_similarity.discount_overlaps", false) + .build(); IndexService indexService = createIndex("foo", indexSettings); DocumentMapper documentMapper = indexService.mapperService().documentMapperParser().parse("type", new CompressedXContent(mapping)); assertThat(documentMapper.mappers().getMapper("field1").fieldType().similarity(), instanceOf(BM25SimilarityProvider.class)); @@ -93,18 +99,18 @@ public class SimilarityTests extends ESSingleNodeTestCase { public void testResolveSimilaritiesFromMapping_DFR() throws IOException { String mapping = XContentFactory.jsonBuilder().startObject().startObject("type") - .startObject("properties") - .startObject("field1").field("type", "string").field("similarity", "my_similarity").endObject() - .endObject() - .endObject().endObject().string(); + .startObject("properties") + .startObject("field1").field("type", "string").field("similarity", "my_similarity").endObject() + .endObject() + .endObject().endObject().string(); Settings indexSettings = Settings.settingsBuilder() - .put("index.similarity.my_similarity.type", "DFR") - .put("index.similarity.my_similarity.basic_model", "g") - .put("index.similarity.my_similarity.after_effect", "l") - .put("index.similarity.my_similarity.normalization", "h2") - .put("index.similarity.my_similarity.normalization.h2.c", 3f) - .build(); + .put("index.similarity.my_similarity.type", "DFR") + .put("index.similarity.my_similarity.basic_model", "g") + .put("index.similarity.my_similarity.after_effect", "l") + .put("index.similarity.my_similarity.normalization", "h2") + .put("index.similarity.my_similarity.normalization.h2.c", 3f) + .build(); IndexService indexService = createIndex("foo", indexSettings); DocumentMapper documentMapper = indexService.mapperService().documentMapperParser().parse("type", new CompressedXContent(mapping)); assertThat(documentMapper.mappers().getMapper("field1").fieldType().similarity(), instanceOf(DFRSimilarityProvider.class)); @@ -118,18 +124,18 @@ public class SimilarityTests extends ESSingleNodeTestCase { public void testResolveSimilaritiesFromMapping_IB() throws IOException { String mapping = XContentFactory.jsonBuilder().startObject().startObject("type") - .startObject("properties") - .startObject("field1").field("type", "string").field("similarity", "my_similarity").endObject() - .endObject() - .endObject().endObject().string(); + .startObject("properties") + .startObject("field1").field("type", "string").field("similarity", "my_similarity").endObject() + .endObject() + .endObject().endObject().string(); Settings indexSettings = Settings.settingsBuilder() - .put("index.similarity.my_similarity.type", "IB") - .put("index.similarity.my_similarity.distribution", "spl") - .put("index.similarity.my_similarity.lambda", "ttf") - .put("index.similarity.my_similarity.normalization", "h2") - .put("index.similarity.my_similarity.normalization.h2.c", 3f) - .build(); + .put("index.similarity.my_similarity.type", "IB") + .put("index.similarity.my_similarity.distribution", "spl") + .put("index.similarity.my_similarity.lambda", "ttf") + .put("index.similarity.my_similarity.normalization", "h2") + .put("index.similarity.my_similarity.normalization.h2.c", 3f) + .build(); IndexService indexService = createIndex("foo", indexSettings); DocumentMapper documentMapper = indexService.mapperService().documentMapperParser().parse("type", new CompressedXContent(mapping)); assertThat(documentMapper.mappers().getMapper("field1").fieldType().similarity(), instanceOf(IBSimilarityProvider.class)); @@ -143,15 +149,15 @@ public class SimilarityTests extends ESSingleNodeTestCase { public void testResolveSimilaritiesFromMapping_LMDirichlet() throws IOException { String mapping = XContentFactory.jsonBuilder().startObject().startObject("type") - .startObject("properties") - .startObject("field1").field("type", "string").field("similarity", "my_similarity").endObject() - .endObject() - .endObject().endObject().string(); + .startObject("properties") + .startObject("field1").field("type", "string").field("similarity", "my_similarity").endObject() + .endObject() + .endObject().endObject().string(); Settings indexSettings = Settings.settingsBuilder() - .put("index.similarity.my_similarity.type", "LMDirichlet") - .put("index.similarity.my_similarity.mu", 3000f) - .build(); + .put("index.similarity.my_similarity.type", "LMDirichlet") + .put("index.similarity.my_similarity.mu", 3000f) + .build(); IndexService indexService = createIndex("foo", indexSettings); DocumentMapper documentMapper = indexService.mapperService().documentMapperParser().parse("type", new CompressedXContent(mapping)); assertThat(documentMapper.mappers().getMapper("field1").fieldType().similarity(), instanceOf(LMDirichletSimilarityProvider.class)); @@ -162,15 +168,15 @@ public class SimilarityTests extends ESSingleNodeTestCase { public void testResolveSimilaritiesFromMapping_LMJelinekMercer() throws IOException { String mapping = XContentFactory.jsonBuilder().startObject().startObject("type") - .startObject("properties") - .startObject("field1").field("type", "string").field("similarity", "my_similarity").endObject() - .endObject() - .endObject().endObject().string(); + .startObject("properties") + .startObject("field1").field("type", "string").field("similarity", "my_similarity").endObject() + .endObject() + .endObject().endObject().string(); Settings indexSettings = Settings.settingsBuilder() - .put("index.similarity.my_similarity.type", "LMJelinekMercer") - .put("index.similarity.my_similarity.lambda", 0.7f) - .build(); + .put("index.similarity.my_similarity.type", "LMJelinekMercer") + .put("index.similarity.my_similarity.lambda", 0.7f) + .build(); IndexService indexService = createIndex("foo", indexSettings); DocumentMapper documentMapper = indexService.mapperService().documentMapperParser().parse("type", new CompressedXContent(mapping)); assertThat(documentMapper.mappers().getMapper("field1").fieldType().similarity(), instanceOf(LMJelinekMercerSimilarityProvider.class)); @@ -178,4 +184,47 @@ public class SimilarityTests extends ESSingleNodeTestCase { LMJelinekMercerSimilarity similarity = (LMJelinekMercerSimilarity) documentMapper.mappers().getMapper("field1").fieldType().similarity().get(); assertThat(similarity.getLambda(), equalTo(0.7f)); } + + public void testResolveSimilaritiesFromMapping_Unknown() throws IOException { + String mapping = XContentFactory.jsonBuilder().startObject().startObject("type") + .startObject("properties") + .startObject("field1").field("type", "string").field("similarity", "unknown_similarity").endObject() + .endObject() + .endObject().endObject().string(); + + IndexService indexService = createIndex("foo"); + try { + indexService.mapperService().documentMapperParser().parse("type", new CompressedXContent(mapping)); + fail("Expected MappingParsingException"); + } catch (MapperParsingException e) { + assertThat(e.getMessage(), equalTo("Unknown Similarity type [unknown_similarity] for [field1]")); + } + } + + public void testSimilarityDefaultBackCompat() throws IOException { + String mapping = XContentFactory.jsonBuilder().startObject().startObject("type") + .startObject("properties") + .startObject("field1") + .field("similarity", "default") + .field("type", "string") + .endObject() + .endObject() + .endObject().string(); + Settings settings = Settings.builder() + .put(IndexMetaData.SETTING_VERSION_CREATED, VersionUtils.randomVersionBetween(random(), Version.V_2_0_0, Version.V_2_2_0)) + .build(); + + DocumentMapperParser parser = createIndex("test_v2.x", settings).mapperService().documentMapperParser(); + DocumentMapper documentMapper = parser.parse("type", new CompressedXContent(mapping)); + assertThat(documentMapper.mappers().getMapper("field1").fieldType().similarity(), instanceOf(ClassicSimilarityProvider.class)); + assertThat(documentMapper.mappers().getMapper("field1").fieldType().similarity().name(), equalTo("classic")); + + parser = createIndex("test_v3.x").mapperService().documentMapperParser(); + try { + parser.parse("type", new CompressedXContent(mapping)); + fail("Expected MappingParsingException"); + } catch (MapperParsingException e) { + assertThat(e.getMessage(), equalTo("Unknown Similarity type [default] for [field1]")); + } + } } diff --git a/core/src/test/java/org/elasticsearch/similarity/SimilarityIT.java b/core/src/test/java/org/elasticsearch/similarity/SimilarityIT.java index ab6a10f3cd..8912956489 100644 --- a/core/src/test/java/org/elasticsearch/similarity/SimilarityIT.java +++ b/core/src/test/java/org/elasticsearch/similarity/SimilarityIT.java @@ -28,7 +28,7 @@ import static org.elasticsearch.index.query.QueryBuilders.matchQuery; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.not; -public class SimilarityIT extends ESIntegTestCase { +public class SimilarityIT extends ESIntegTestCase { public void testCustomBM25Similarity() throws Exception { try { client().admin().indices().prepareDelete("test").execute().actionGet(); @@ -45,7 +45,7 @@ public class SimilarityIT extends ESIntegTestCase { .field("type", "string") .endObject() .startObject("field2") - .field("similarity", "default") + .field("similarity", "classic") .field("type", "string") .endObject() .endObject() |