elasticsearch 中文分词、拼音分词使用示例


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)
发布了320 篇原创文章 · 获赞 91 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43931625/article/details/104004393