全文检索方案Elasticsearch
1.引入
美多商城中,当用户在搜索框输入商品关键字后,我们要为用户提供相关的商品搜索结果
商品搜索实现可以选择使用模糊查询like关键字实现,但是
like 关键字的效率极低
查询需要在多个字段中进行,使用 like 关键字也不方便
所以,我们引入全文检索的方案来实现商品搜索
2. 全文检索和搜索引擎原理
2.1 全文检索方案
全文检索即在指定的任意字段中进行检索查询
全文检索方案需要配合搜索引擎来实现
2.2 搜索引擎原理
搜索引擎进行全文检索时,会对数据库中的数据进行一遍预处理,单独建立起一份索引结构数据
索引结构数据类似新华字典的索引检索页,里面包含了关键词与词条的对应关系,并记录词条的位置
搜索引擎进行全文检索时,将关键字在索引数据中进行快速对比查找,进而找到数据的真实存储位置
3. Elasticsearch介绍
实现全文检索的搜索引擎,首选的是Elasticsearch
Elasticsearch是用 Java 实现的,开源的搜索引擎
它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github等都采用它
分词说明
搜索引擎在对数据构建索引时,需要进行分词处理
分词是指将一句话拆解成多个单字或词,这些字或词便是这句话的关键词
比如:
我是中国人
分词后:我、是、中、国、人、中国等等都可以是这句话的关键字
Elasticsearch 不支持对中文进行分词建立索引,需要配合扩展elasticsearch-analysis-ik来实现中文分词处理
使用Docker运行Elasticsearch-ik