|
@@ -20,6 +20,7 @@
|
|
|
package org.elasticsearch.index.similarity;
|
|
|
|
|
|
import org.apache.lucene.search.similarities.ClassicSimilarity;
|
|
|
+import org.apache.lucene.search.similarities.DFISimilarity;
|
|
|
import org.apache.lucene.search.similarities.AfterEffectL;
|
|
|
import org.apache.lucene.search.similarities.BM25Similarity;
|
|
|
import org.apache.lucene.search.similarities.BasicModelG;
|
|
@@ -38,6 +39,7 @@ 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.MappedFieldType;
|
|
|
import org.elasticsearch.index.mapper.MapperParsingException;
|
|
|
import org.elasticsearch.plugins.Plugin;
|
|
|
import org.elasticsearch.test.ESSingleNodeTestCase;
|
|
@@ -93,7 +95,7 @@ public class SimilarityTests extends ESSingleNodeTestCase {
|
|
|
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.b", 0.5f)
|
|
|
.put("index.similarity.my_similarity.discount_overlaps", false)
|
|
|
.build();
|
|
|
IndexService indexService = createIndex("foo", indexSettings);
|
|
@@ -102,7 +104,7 @@ public class SimilarityTests extends ESSingleNodeTestCase {
|
|
|
|
|
|
BM25Similarity similarity = (BM25Similarity) documentMapper.mappers().getMapper("field1").fieldType().similarity().get();
|
|
|
assertThat(similarity.getK1(), equalTo(2.0f));
|
|
|
- assertThat(similarity.getB(), equalTo(1.5f));
|
|
|
+ assertThat(similarity.getB(), equalTo(0.5f));
|
|
|
assertThat(similarity.getDiscountOverlaps(), equalTo(false));
|
|
|
}
|
|
|
|
|
@@ -156,6 +158,23 @@ public class SimilarityTests extends ESSingleNodeTestCase {
|
|
|
assertThat(((NormalizationH2) similarity.getNormalization()).getC(), equalTo(3f));
|
|
|
}
|
|
|
|
|
|
+ public void testResolveSimilaritiesFromMapping_DFI() 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();
|
|
|
+
|
|
|
+ Settings indexSettings = Settings.settingsBuilder()
|
|
|
+ .put("index.similarity.my_similarity.type", "DFI")
|
|
|
+ .build();
|
|
|
+ IndexService indexService = createIndex("foo", indexSettings);
|
|
|
+ DocumentMapper documentMapper = indexService.mapperService().documentMapperParser().parse("type", new CompressedXContent(mapping));
|
|
|
+ MappedFieldType fieldType = documentMapper.mappers().getMapper("field1").fieldType();
|
|
|
+ assertThat(fieldType.similarity(), instanceOf(DFISimilarityProvider.class));
|
|
|
+ assertThat(fieldType.similarity().get(), instanceOf(DFISimilarity.class));
|
|
|
+ }
|
|
|
+
|
|
|
public void testResolveSimilaritiesFromMapping_LMDirichlet() throws IOException {
|
|
|
String mapping = XContentFactory.jsonBuilder().startObject().startObject("type")
|
|
|
.startObject("properties")
|