Es内置的分词器有 standard、pattern、whitespace、stop等等;也可以下载ik插件,使用ik_smart 和 ik_max_word。网上也有很多相关文章,这里就不介绍了。

我总结了一下 SpringBoot 自定义 正则分词器 的方法,其他的类似。

1. 首先创建一个 setting.json 文件,放到 resources 目录下,用于自定义分词器。

配置文件名随意,我这里命名为settings.json,作用是将 url 中的 . 替换成 -

	{
	  "analysis": {
	    "analyzer": {
	      "url_analyzer": {
	        "tokenizer": "standard",
	        "char_filter": [
	          "url_char_filter"
	        ]
	      }
	    },
	    "char_filter": {
	      "url_char_filter": {
	        "type": "pattern_replace",
	        "pattern": "\\.",
	        "replacement": "-"
	      }
	    }
	  }
	}

2. 在实体类上加 @Setting 注解,填写settings.json的路径(由于我直接放到了resource目录下,所以路径直接填settings.json)

在这里插入图片描述

3. 在对应的字段上,添加注解 @Field 就OK了(也可以手动配置mapping文件,我这里用注解的方式)

在这里插入图片描述

4. 看一下效果

使用standard分词器,url没有被分词
在这里插入图片描述

使用自定义的正则分词器,可以看到url已经被分词
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐