DATAES-13 added support for minimum score
This commit is contained in:
@@ -112,4 +112,17 @@ public class SampleEntity {
|
||||
return new HashCodeBuilder().append(id).append(type).append(message).append(rate).append(available).append(version)
|
||||
.toHashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SampleEntity{" +
|
||||
"id='" + id + '\'' +
|
||||
", type='" + type + '\'' +
|
||||
", message='" + message + '\'' +
|
||||
", rate=" + rate +
|
||||
", available=" + available +
|
||||
", highlightedMessage='" + highlightedMessage + '\'' +
|
||||
", version=" + version +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
package org.springframework.data.elasticsearch;
|
||||
|
||||
import org.springframework.data.elasticsearch.core.query.IndexQuery;
|
||||
|
||||
/**
|
||||
* User: dead
|
||||
* Date: 23/01/14
|
||||
* Time: 18:25
|
||||
*/
|
||||
public class SampleEntityBuilder {
|
||||
|
||||
private SampleEntity result;
|
||||
|
||||
public SampleEntityBuilder(String id) {
|
||||
result = new SampleEntity();
|
||||
result.setId(id);
|
||||
}
|
||||
|
||||
public SampleEntityBuilder type(String type) {
|
||||
result.setType(type);
|
||||
return this;
|
||||
}
|
||||
|
||||
public SampleEntityBuilder message(String message) {
|
||||
result.setMessage(message);
|
||||
return this;
|
||||
}
|
||||
|
||||
public SampleEntityBuilder rate(int rate) {
|
||||
result.setRate(rate);
|
||||
return this;
|
||||
}
|
||||
|
||||
public SampleEntityBuilder available(boolean available) {
|
||||
result.setAvailable(available);
|
||||
return this;
|
||||
}
|
||||
|
||||
public SampleEntityBuilder highlightedMessage(String highlightedMessage) {
|
||||
result.setHighlightedMessage(highlightedMessage);
|
||||
return this;
|
||||
}
|
||||
|
||||
public SampleEntityBuilder version(Long version) {
|
||||
result.setVersion(version);
|
||||
return this;
|
||||
}
|
||||
|
||||
public SampleEntity build() {
|
||||
return result;
|
||||
}
|
||||
|
||||
public IndexQuery buildIndex() {
|
||||
IndexQuery indexQuery = new IndexQuery();
|
||||
indexQuery.setId(result.getId());
|
||||
indexQuery.setObject(result);
|
||||
return indexQuery;
|
||||
}
|
||||
}
|
||||
@@ -33,6 +33,7 @@ import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.data.elasticsearch.ElasticsearchException;
|
||||
import org.springframework.data.elasticsearch.SampleEntity;
|
||||
import org.springframework.data.elasticsearch.SampleEntityBuilder;
|
||||
import org.springframework.data.elasticsearch.SampleMappingEntity;
|
||||
import org.springframework.data.elasticsearch.core.query.*;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
@@ -1007,4 +1008,30 @@ public class ElasticsearchTemplateTests {
|
||||
assertThat(ids, is(notNullValue()));
|
||||
assertThat(ids.size(), is(30));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldReturnDocumentAboveMinimalScoreGivenQuery() {
|
||||
// given
|
||||
List<IndexQuery> indexQueries = new ArrayList<IndexQuery>();
|
||||
|
||||
indexQueries.add(new SampleEntityBuilder("1").message("ab").buildIndex());
|
||||
indexQueries.add(new SampleEntityBuilder("2").message("bc").buildIndex());
|
||||
indexQueries.add(new SampleEntityBuilder("3").message("ac").buildIndex());
|
||||
|
||||
elasticsearchTemplate.bulkIndex(indexQueries);
|
||||
elasticsearchTemplate.refresh(SampleEntity.class, true);
|
||||
|
||||
// when
|
||||
SearchQuery searchQuery = new NativeSearchQueryBuilder()
|
||||
.withQuery(boolQuery().must(wildcardQuery("message", "*a*")).should(wildcardQuery("message", "*b*")))
|
||||
.withIndices("test-index")
|
||||
.withTypes("test-type")
|
||||
.withMinScore(0.5F)
|
||||
.build();
|
||||
|
||||
Page<SampleEntity> page = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
|
||||
// then
|
||||
assertThat(page.getTotalElements(),is(1L));
|
||||
assertThat(page.getContent().get(0).getMessage(), is("ab"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,12 +15,15 @@
|
||||
*/
|
||||
package org.springframework.data.elasticsearch.core.query;
|
||||
|
||||
import org.elasticsearch.search.sort.FieldSortBuilder;
|
||||
import org.elasticsearch.search.sort.SortOrder;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.elasticsearch.SampleEntity;
|
||||
import org.springframework.data.elasticsearch.SampleEntityBuilder;
|
||||
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
@@ -30,6 +33,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.apache.commons.lang.RandomStringUtils.randomNumeric;
|
||||
import static org.elasticsearch.index.query.QueryBuilders.matchAllQuery;
|
||||
import static org.hamcrest.Matchers.*;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
@@ -700,4 +704,25 @@ public class CriteriaQueryTests {
|
||||
// then
|
||||
assertThat(page.getTotalElements(), is(greaterThanOrEqualTo(1L)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldReturnDocumentAboveMinimalScoreGivenCriteria() {
|
||||
// given
|
||||
List<IndexQuery> indexQueries = new ArrayList<IndexQuery>();
|
||||
|
||||
indexQueries.add(new SampleEntityBuilder("1").message("ab").buildIndex());
|
||||
indexQueries.add(new SampleEntityBuilder("2").message("bc").buildIndex());
|
||||
indexQueries.add(new SampleEntityBuilder("3").message("ac").buildIndex());
|
||||
|
||||
elasticsearchTemplate.bulkIndex(indexQueries);
|
||||
elasticsearchTemplate.refresh(SampleEntity.class, true);
|
||||
|
||||
// when
|
||||
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("message").contains("a").or(new Criteria("message").contains("b")));
|
||||
criteriaQuery.setMinScore(0.5F);
|
||||
Page<SampleEntity> page = elasticsearchTemplate.queryForPage(criteriaQuery, SampleEntity.class);
|
||||
// then
|
||||
assertThat(page.getTotalElements(),is(1L));
|
||||
assertThat(page.getContent().get(0).getMessage(), is("ab"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user