elasticsearch 中文分词、拼音分词使用示例
*****************************
示例
************************
pojo 层
@Data
@Document(indexName = "people3",type = "_doc")
public class People {
@Id
private Integer id;
@Field(type = FieldType.Keyword)
private String name;
@Field(type = FieldType.Text,analyzer = "ik_smart")
private String description;
@Field(type = FieldType.Text,analyzer = "hanlp")
private String description2;
@Field(type = FieldType.Text,analyzer = "pinyin")
private String description3;
@MultiField(mainField = @Field(type = FieldType.Text,analyzer = "ik_smart"),
otherFields = @InnerField(suffix = "inner", type = FieldType.Text, analyzer = "pinyin"))
private String description4;
@MultiField(mainField = @Field(type = FieldType.Text,analyzer = "hanlp"),
otherFields = @InnerField(suffix = "inner",type = FieldType.Text,analyzer = "pinyin"))
private String description5;
}
************************
controller 层
@RestController
public class PeopleController {
@Resource
private PeopleRepository peopleRepository;
@Resource
private ElasticsearchRestTemplate elasticsearchRestTemplate;
@PostConstruct
public void start(){
elasticsearchRestTemplate.putMapping(People.class);
}
@RequestMapping("/save")
public String save(){
People people=new People();
for (int i=0;i<10;i++){
people.setId(i);
people.setName("瓜田李下 "+i);
people.setDescription("床前明月光"+i);
people.setDescription2("疑似地上霜"+i);
people.setDescription3("举头望明月"+i);
people.setDescription4("低头思故乡"+i);
people.setDescription5("欲穷千里目,更上一层楼"+i);
peopleRepository.save(people);
}
return "success";
}
@RequestMapping("/get")
public List<People> get_IK(@RequestParam("description") String description){
NativeSearchQuery nativeSearchQuery=new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.matchQuery("description",description))
.build();
List<People> list=peopleRepository.search(nativeSearchQuery).getContent();
if (list.size()!=0){
list.forEach(System.out::println);
}
return list;
}
@RequestMapping("/get2")
public List<People> get_hanlp(@RequestParam("description") String description){
NativeSearchQuery nativeSearchQuery=new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.matchQuery("description2",description))
.build();
List<People> list=peopleRepository.search(nativeSearchQuery).getContent();
if (list.size()!=0){
list.forEach(System.out::println);
}
return list;
}
@RequestMapping("/get3")
public List<People> get_pinyin(@RequestParam("description") String description){
NativeSearchQuery nativeSearchQuery=new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.matchQuery("description3",description))
.build();
List<People> list=peopleRepository.search(nativeSearchQuery).getContent();
if (list.size()!=0){
list.forEach(System.out::println);
}
return list;
}
@RequestMapping("/get4")
public List<People> get_IK_pinyin(@RequestParam("description") String description){
NativeSearchQuery nativeSearchQuery=new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.multiMatchQuery(description,"description4","description4.inner"))
.build();
List<People> list=peopleRepository.search(nativeSearchQuery).getContent();
if (list.size()!=0){
list.forEach(System.out::println);
}
return list;
}
@RequestMapping("/get5")
public List<People> get_hanlp_pinyin(@RequestParam("description") String description){
NativeSearchQuery nativeSearchQuery=new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.multiMatchQuery(description,"description5","description5.inner"))
.build();
List<People> list=peopleRepository.search(nativeSearchQuery).getContent();
if (list.size()!=0){
list.forEach(System.out::println);
}
return list;
}
}
**************************
控制台输出
/get?description=床前明月
People(id=3, name=瓜田李下 3, description=床前明月光3, description2=疑似地上霜3, description3=举头望明月3, description4=低头思故乡3, description5=欲穷千里目,更上一层楼3)
People(id=5, name=瓜田李下 5, description=床前明月光5, description2=疑似地上霜5, description3=举头望明月5, description4=低头思故乡5, description5=欲穷千里目,更上一层楼5)
People(id=9, name=瓜田李下 9, description=床前明月光9, description2=疑似地上霜9, description3=举头望明月9, description4=低头思故乡9, description5=欲穷千里目,更上一层楼9)
People(id=4, name=瓜田李下 4, description=床前明月光4, description2=疑似地上霜4, description3=举头望明月4, description4=低头思故乡4, description5=欲穷千里目,更上一层楼4)
People(id=7, name=瓜田李下 7, description=床前明月光7, description2=疑似地上霜7, description3=举头望明月7, description4=低头思故乡7, description5=欲穷千里目,更上一层楼7)
People(id=8, name=瓜田李下 8, description=床前明月光8, description2=疑似地上霜8, description3=举头望明月8, description4=低头思故乡8, description5=欲穷千里目,更上一层楼8)
People(id=0, name=瓜田李下 0, description=床前明月光0, description2=疑似地上霜0, description3=举头望明月0, description4=低头思故乡0, description5=欲穷千里目,更上一层楼0)
People(id=2, name=瓜田李下 2, description=床前明月光2, description2=疑似地上霜2, description3=举头望明月2, description4=低头思故乡2, description5=欲穷千里目,更上一层楼2)
People(id=6, name=瓜田李下 6, description=床前明月光6, description2=疑似地上霜6, description3=举头望明月6, description4=低头思故乡6, description5=欲穷千里目,更上一层楼6)
People(id=1, name=瓜田李下 1, description=床前明月光1, description2=疑似地上霜1, description3=举头望明月1, description4=低头思故乡1, description5=欲穷千里目,更上一层楼1)
/get2?description=疑是地上霜2
People(id=2, name=瓜田李下 2, description=床前明月光2, description2=疑似地上霜2, description3=举头望明月2, description4=低头思故乡2, description5=欲穷千里目,更上一层楼2)
People(id=3, name=瓜田李下 3, description=床前明月光3, description2=疑似地上霜3, description3=举头望明月3, description4=低头思故乡3, description5=欲穷千里目,更上一层楼3)
People(id=5, name=瓜田李下 5, description=床前明月光5, description2=疑似地上霜5, description3=举头望明月5, description4=低头思故乡5, description5=欲穷千里目,更上一层楼5)
People(id=9, name=瓜田李下 9, description=床前明月光9, description2=疑似地上霜9, description3=举头望明月9, description4=低头思故乡9, description5=欲穷千里目,更上一层楼9)
People(id=4, name=瓜田李下 4, description=床前明月光4, description2=疑似地上霜4, description3=举头望明月4, description4=低头思故乡4, description5=欲穷千里目,更上一层楼4)
People(id=7, name=瓜田李下 7, description=床前明月光7, description2=疑似地上霜7, description3=举头望明月7, description4=低头思故乡7, description5=欲穷千里目,更上一层楼7)
People(id=8, name=瓜田李下 8, description=床前明月光8, description2=疑似地上霜8, description3=举头望明月8, description4=低头思故乡8, description5=欲穷千里目,更上一层楼8)
People(id=0, name=瓜田李下 0, description=床前明月光0, description2=疑似地上霜0, description3=举头望明月0, description4=低头思故乡0, description5=欲穷千里目,更上一层楼0)
People(id=6, name=瓜田李下 6, description=床前明月光6, description2=疑似地上霜6, description3=举头望明月6, description4=低头思故乡6, description5=欲穷千里目,更上一层楼6)
People(id=1, name=瓜田李下 1, description=床前明月光1, description2=疑似地上霜1, description3=举头望明月1, description4=低头思故乡1, description5=欲穷千里目,更上一层楼1)
/get3?description=jtwmy3
/get3?description=jtwmy3
/get4?description=dtsgx5
People(id=5, name=瓜田李下 5, description=床前明月光5, description2=疑似地上霜5, description3=举头望明月5, description4=低头思故乡5, description5=欲穷千里目,更上一层楼5)
/get5?description=yuqiong
People(id=3, name=瓜田李下 3, description=床前明月光3, description2=疑似地上霜3, description3=举头望明月3, description4=低头思故乡3, description5=欲穷千里目,更上一层楼3)
People(id=5, name=瓜田李下 5, description=床前明月光5, description2=疑似地上霜5, description3=举头望明月5, description4=低头思故乡5, description5=欲穷千里目,更上一层楼5)
People(id=9, name=瓜田李下 9, description=床前明月光9, description2=疑似地上霜9, description3=举头望明月9, description4=低头思故乡9, description5=欲穷千里目,更上一层楼9)
People(id=4, name=瓜田李下 4, description=床前明月光4, description2=疑似地上霜4, description3=举头望明月4, description4=低头思故乡4, description5=欲穷千里目,更上一层楼4)
People(id=7, name=瓜田李下 7, description=床前明月光7, description2=疑似地上霜7, description3=举头望明月7, description4=低头思故乡7, description5=欲穷千里目,更上一层楼7)
People(id=8, name=瓜田李下 8, description=床前明月光8, description2=疑似地上霜8, description3=举头望明月8, description4=低头思故乡8, description5=欲穷千里目,更上一层楼8)
People(id=0, name=瓜田李下 0, description=床前明月光0, description2=疑似地上霜0, description3=举头望明月0, description4=低头思故乡0, description5=欲穷千里目,更上一层楼0)
People(id=2, name=瓜田李下 2, description=床前明月光2, description2=疑似地上霜2, description3=举头望明月2, description4=低头思故乡2, description5=欲穷千里目,更上一层楼2)
People(id=6, name=瓜田李下 6, description=床前明月光6, description2=疑似地上霜6, description3=举头望明月6, description4=低头思故乡6, description5=欲穷千里目,更上一层楼6)
People(id=1, name=瓜田李下 1, description=床前明月光1, description2=疑似地上霜1, description3=举头望明月1, description4=低头思故乡1, description5=欲穷千里目,更上一层楼1)