Meilisearch spring boot starter 为一个在springboot项目中引入即可使用的spring boot starter, 提供了对Meilisearch 搜索引擎的相关操作。由于官方api没有提供对对象的操作,对象的操作,需要先转换为json再进行,诸如此类。本项目在其基础上,提供了对象操作、自动解析和转换对象、自动解析搜索结果等功能,用法类似于jpa的repository,简单易用。
实体对象对应的索引创建
只需要在实体类加上注解com.jvm123.meilisearch.anotation.Index
,就会自动创建索引。注解可以设置uid和primaryKey,如果不设置,uid会使用小写的类名称,primaryKey默认为id。如下:
@Index(uid="post", primaryKey="id")
public class Post {
private String id;
private String title;
private String content;
private Date time;
// ...
}
对象基本操作
对象的操作,只需要继承MeilisearchRepository<T>
,然后使用其中的方法,具体方法如下:
T get(String identifier);
List<T> list();
List<T> list(int limits);
long add(T t);
long update(T t);
long add(List<T> list);
long update(List<T> list);
long delete(String identifier);
long deleteBatch(String... identifiers);
long deleteAll();
SearchResult<T> search(String q);
SearchResult<T> search(SearchRequest sr);
Settings getSettings();
UpdateStatus updateSettings(Settings settings);
UpdateStatus resetSettings();
UpdateStatus getUpdate(int updateId);
UpdateStatus[] getUpdates();
MeiliSearch搜索
使用 MeilisearchRepository<T>
的以下两个方法可进行搜索:
SearchResult<T> search(String q);
SearchResult<T> search(SearchRequest sr);
搜索结果会解析为SearchResult<T>
类型。
如果实体类继承了MatchedBean,则会自动将搜索结果中的matchinfo也进行转换。如下:
SearchRequest sr = new SearchRequest("喵星人")
.setMatches(true)
.setAttributesToHighlight(new String[]{"name", "title", "des", "time"});
SearchResult<Movie> searchResult = movieRepository.search(sr);
List<Movie> hits = searchResult.getHits();
System.out.println(hits);