Elasticsearch:自定义分词器实现like需求
发布日期: 2024-01-05
在使用ES的时候,一般常用`IK`分词器作为中文的分词器使用。但是有一定使用经验的小伙伴都知道。使用中文分词器的时候,经常会遇到分词不准的情况。
在一般的情况下,大家都告诉你去维护分词字典,更新索引。但是呢,又在一般的情况下,中小公司根本没有人去特地维护小项目的搜索索引。在搜索一些短语,比如`公司名称`的时候,需求方可能更想要类似`mysql`中的`like`实现的效果,完成模糊查询即可。
当然,在数据量不是很大的时候,直接使用ES中的`wildcard`完成模糊搜索即可。但是,众所周知,`wildcard`的搜索匹配的性能是非常低的,在有一定数据量的情况下,不建议在生产环境使用`wildcard`。
下面介绍一种简易的代替方案:通过`nGram`分词器实现`like`需求,这种实现方案,特别适用于短句/短语搜索中。