Added support for searchSimilar in ElasticsearchRepository

https://github.com/BioMedCentralLtd/spring-data-elasticsearch/issues/4
This commit is contained in:
Rizwan Idrees
2013-03-19 16:51:11 +00:00
parent 93a512f014
commit 41de820c70
3 changed files with 49 additions and 6 deletions

View File

@@ -22,7 +22,6 @@ import org.springframework.data.elasticsearch.core.query.SearchQuery;
import org.springframework.data.repository.NoRepositoryBean;
import java.io.Serializable;
import java.util.List;
/**
* @param <T>
@@ -41,4 +40,6 @@ public interface ElasticsearchRepository<T, ID extends Serializable> extends Ela
Page<T> search(QueryBuilder elasticsearchQuery, Pageable pageable);
Page<T> search(SearchQuery searchQuery);
Page<T> searchSimilar(T entity);
}

View File

@@ -19,14 +19,10 @@ import org.elasticsearch.index.query.QueryBuilder;
import org.springframework.dao.InvalidDataAccessApiUsageException;
import org.springframework.data.domain.*;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.query.DeleteQuery;
import org.springframework.data.elasticsearch.core.query.GetQuery;
import org.springframework.data.elasticsearch.core.query.IndexQuery;
import org.springframework.data.elasticsearch.core.query.SearchQuery;
import org.springframework.data.elasticsearch.core.query.*;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.util.Assert;
import javax.annotation.PostConstruct;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
@@ -187,6 +183,14 @@ public class SimpleElasticsearchRepository<T> implements ElasticsearchRepository
return elasticsearchOperations.queryForPage(query, getEntityClass());
}
@Override
public Page<T> searchSimilar(T entity) {
Assert.notNull(entity, "Cannot search similar records for 'null'.");
MoreLikeThisQuery query = new MoreLikeThisQuery();
query.setId(extractIdFromBean(entity));
return elasticsearchOperations.moreLikeThis(query, getEntityClass());
}
@Override
public void delete(String id) {
Assert.notNull(id, "Cannot delete entity with id 'null'.");