网上可能有很多教程,我写这个只是记录一下自己学习的过程,给自己看的 。
中文分司网上搜了一下,用的IK分词器(https://github.com/medcl/elasticsearch-analysis-ik),拼音搜索插件用的是拼音分词器(https://github.com/medcl/elasticsearch-analysis-pinyin)。
IK分词器有两种分词模式:ik_max_word和ik_smart模式。
1、ik_max_word
会将文本做最细粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为“中华人民共和国、中华人民、中华、华人、人民共和国、人民、共和国、大会堂、大会、会堂等词语。
2、ik_smart
会做最粗粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为中华人民共和国、人民大会堂。
安装IK分词器
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.1/elasticsearch-analysis-ik-7.4.1.zip
我的es是7.4所以装了7.4版本
安装拼音分司器
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v7.4.1/elasticsearch-analysis-pinyin-7.4.1.zip
按装好分司器后,需在创建索引时指定所用的分词器。以下是PHP的示例代码
/**
* 获取创建索引时的分词配置信息
* @param $indexName 索引名称
* @return array
*/
protected function getIndexSettings($indexName)
{
return [
'index' => $indexName,
'body' => [
"settings" => [
"number_of_shards" => 1,
"number_of_replicas" => 1,
'analysis' => [
'analyzer' =>
[
'ik_pinyin_analyzer' =>
[
'type'