ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能

这篇具有很好参考价值的文章主要介绍了ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、自动补全

1.1、效果说明

1.2、安装拼音分词器

1.3、自定义分词器

1.3.1、为什么要自定义分词器

1.3.2、分词器的构成

1.3.3、自定义分词器

1.3.4、面临的问题和解决办法

问题

解决方案

1.4、completion suggester 查询

1.4.1、基本概念和语法

1.4.2、示例

1.4.3、示例(黑马旅游)

a)修改 hotel 索引库结构,设置自定义拼音分词器.

b)给 HotelDoc 类添加 suggestion 字段

c)将数据重新导入到 hotel 索引库中

d)基于 JavaRestClient 编写 DSL

1.5、黑马旅游案例

1.5.1、需求

1.5.2、前端对接

1.5.3、实现 controller

1.5.4、创建接口并实现.

1.5.5、效果展示


一、自动补全


1.1、效果说明

当用户在搜索框中输入字符时,我们应该提示出与该字符有关的搜索项.

例如百度中,输入关键词 "byby",他的效果如下:

ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能,ElasticSearch,elasticsearch,大数据,搜索引擎

1.2、安装拼音分词器

 要实现根据字母补全,就需要对文档按照拼英分词.  在GitHub 上有一个 es 的拼英分词插件.

地址:GitHub - medcl/elasticsearch-analysis-pinyin: This Pinyin Analysis plugin is used to do conversion between Chinese characters and Pinyin.

这里的安装方式和 IK 分词器一样,分四步:

1. 安装解压.

ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能,ElasticSearch,elasticsearch,大数据,搜索引擎

2. 上传到云服务器中,es 的 plugin 目录.

ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能,ElasticSearch,elasticsearch,大数据,搜索引擎

3. 重启 es.

ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能,ElasticSearch,elasticsearch,大数据,搜索引擎

4. 测试.

ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能,ElasticSearch,elasticsearch,大数据,搜索引擎

这里可以看到,拼音分词器不光对每个字用拼音进行分词,还对每个字的首字母进行分词.

1.3、自定义分词器

1.3.1、为什么要自定义分词器

根据上述测试,可以看出.

1. 拼音分词器是将一句话中的每一个字都分成了拼音,这没什么实际的用处.

2. 这里并没有分出汉字,只有拼英.  实际的使用中,用户更多的是使用汉字去搜,有拼音只是锦上添花,但是也不能只用拼音分词器,把汉字丢了.

因此这里我们需要对拼音分词器进行一些自定义的配置.

1.3.2、分词器的构成

想要自定义分词器,首先要先了解 es 中分词器的构成.

分词器主要由以下三个部分组成:

  1. character filters:在 tokenizer 之前,对文本的特殊字符进行处理. 比如他会把文本中出现的一些特殊字符转化成汉字,例如 :) => 开心.
  2. tokenizer:将文本按照一定的规则切割成词条(term). 例如 “我很开心” 会切割成 "我"、"很"、"开心".
  3. tokenizer filter:对 tokenizer 进一步处理.  例如将汉字转化成拼音.

ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能,ElasticSearch,elasticsearch,大数据,搜索引擎

1.3.3、自定义分词器

PUT /test
{
  "settings": {
    "analysis": {
      "analyzer": { //自定义分词器
        "my_analyzer": { //自定义分词器名称
          "tokenizer": "ik_max_word",
          "filter": "py"
        }
      },
      "filter": {
        "py": { 
          "type": "pinyin",
          "keep_full_pinyin": false, 
          "keep_joined_full_pinyin": true,
          "keep_original": true,
          "limit_first_letter_length": 16,
          "remove_duplicated_term": true,
          "none_chinese_pinyin_tokenize": false
        }
      }
    }
  }
}
  • “type”: “pinyin”:指定使用拼音过滤器进行拼音转换。
  • “keep_full_pinyin”: false:表示不保留完整的拼音。如果设置为true,则会将完整的拼音保留下来。
  • “keep_joined_full_pinyin”: true:表示保留连接的完整拼音。当设置为true时,如果某个词的拼音有多个音节,那么它们将被连接在一起作为一个完整的拼音。
  • “keep_original”: true:表示保留原始词汇。当设置为true时,原始的中文词汇也会保留在分词结果中。
  • “limit_first_letter_length”: 16:限制拼音首字母的长度。默认为16,即只保留拼音首字母的前16个字符。
  • “remove_duplicated_term”: true:表示移除重复的拼音词汇。如果设置为true,则会移除拼音结果中的重复词汇。
  • “none_chinese_pinyin_tokenize”: false:表示是否对非中文文本进行拼音分词处理。当设置为false时,非中文文本将保留原样,不进行拼音分词处理

例如,创建一个 test 索引库,来测试自定义分词器.

PUT /test
{
  "settings": {
    "analysis": {
      "analyzer": { 
        "my_analyzer": { 
          "tokenizer": "ik_max_word",
          "filter": "py"
        }
      },
      "filter": {
        "py": { 
          "type": "pinyin",
          "keep_full_pinyin": false,
          "keep_joined_full_pinyin": true,
          "keep_original": true,
          "limit_first_letter_length": 16,
          "remove_duplicated_term": true,
          "none_chinese_pinyin_tokenize": false
        }
      }
    }
  },
  
  "mappings": {
    "properties": {
      "name": {
        "type": "text",
        "analyzer": "my_analyzer"
      }
    }
  }
}

使用此索引库的分词器进行测试

ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能,ElasticSearch,elasticsearch,大数据,搜索引擎

从上图中可以看出:

1.不光有拼音,还有中文分词.

2.还有中文分词后的英文全拼,以及分词首字母.

1.3.4、面临的问题和解决办法

问题

上面实现的拼音分词器还不能应用到实际的生产环境中~

可以想象这样一个场景:

如果词库中有这两个词:“狮子” 和 “虱子”,那么也就意味着,创建倒排索引时,通过上述自定义的 拼音分词器 ,就会把这两个词归为一个文档,因为他们在分词的时候,会分出共同的拼音 "shizi" 和 "sz",这就导致他两的文档编号对应同一个词条,导致将来用户在搜索框里输入 “狮子” ,点击搜索之后,会同时搜索出 "狮子" 和 “虱子” ,这并不是我们想看到的.

ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能,ElasticSearch,elasticsearch,大数据,搜索引擎

解决方案

因此字段在创建倒排索引时因该使用 my_analyzer 分词器,但是字段在搜索时应该使用 ik_smart 分词器. 

也就是说,用户输入中文的时候,就按中文去搜,用户输入拼音的时候,才按拼音去搜,即使出现上述情况,同时搜出这两个词,那你是按拼音搜,两个都是符合的,不存在歧义.

如下:

PUT /test
{
  "settings": {
    "analysis": {
      "analyzer": { 
        "my_analyzer": { 
          "tokenizer": "ik_max_word",
          "filter": "py"
        }
      },
      "filter": {
        "py": { 
          "type": "pinyin",
          "keep_full_pinyin": false,
          "keep_joined_full_pinyin": true,
          "keep_original": true,
          "limit_first_letter_length": 16,
          "remove_duplicated_term": true,
          "none_chinese_pinyin_tokenize": false
        }
      }
    }
  },
  
  "mappings": {
    "properties": {
      "name": {
        "type": "text",
        "analyzer": "my_analyzer" //创建倒排索引使用 my_analyzer 分词器.
        "search_analyzer": "ik_smart"  //搜索时使用 ik_smart 分词器.
      }
    }
  }
}

1.4、completion suggester 查询

1.4.1、基本概念和语法

es 中提供了 completion suggester 查询来实现自动补全功能.  这个查询会匹配用户输入内容开头的词条并返回.

为了提高补全查询的效率,对于文档中的字段类型有一些约束,如下:

  1. 参与补全查询的字段必须是 completion 类型.
  2. 参与 自动补全字段 的内容一般是多个词条形成的数组.
POST /test2/_search
{
  "suggest": {
    "title_suggest": { //自定义补全名
      "text": "s",  //用户在搜索框中输入的关键字
      "completion": { // completion 是自动补全中的一种类型(最常用的)
        "field": "补全时需要查询的字段名", //这里的字段名指向的是一个数组(字段必须是 completion 类型),就是要根据数组中的字段进行查询,然后自动补全
        "skip_duplicates": true,  //如果查询时有重复的词条,是否自动跳过(true 为跳过)
        "size": 10 // 获取前 10 条结果.
      }
    }
  }
}

1.4.2、示例一

这里我用一个示例来演示 completion suggester 的用法.

首先创建索引库(参与自动补全的字段类型必须是 completion).

PUT /test2
{
  "mappings": {
    "properties": {
      "title": {
        "type": "completion"
      }
    }
  }
}

插入示例数据(字段内容一般是用来补全的多个词条形成的数组.)

POST test2/_doc
{
 "title": ["Sony", "WH-1000XM3"]
}
POST test2/_doc
{
  "title": ["SK-II", "PITERA"]
}
POST test2/_doc
{
  "title": ["Nintendo", "switch"]
}

这里我们设置关键字为 "s",来自动补全查询,如下:

POST /test2/_search
{
  "suggest": {
    "title_suggest": {
      "text": "s", 
      "completion": {
        "field": "title", 
        "skip_duplicates": true, 
        "size": 10
      }
    }
  }
}

ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能,ElasticSearch,elasticsearch,大数据,搜索引擎

ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能,ElasticSearch,elasticsearch,大数据,搜索引擎

1.4.3、示例二

首先创建索引库,如下参与自动补全的字段为 suggestion(通过 copy title 得到).

PUT /test
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "analyzer": "ik_smart",
        "copy_to": "suggestion"
      },
      "suggestion": {
        "type": "completion"
      }
    }
  }
}

 插入示例数据

POST test/_doc/1
{
  "title": "今天天气真好"
}

POST test/_doc/2
{
  "title": "我想出去玩"
}


POST test/_doc/3
{
  "title": "我要去找小伙伴"
}

设置关键字为 "我"

POST /test/_search
{
  "suggest": {
    "title_suggest": {
      "text": "我",
      "completion": {
        "field": "suggestion",
        "skip_duplicates": true,
        "size": 10
      }
    }
  }
}

自动补全效果如下

ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能,ElasticSearch,elasticsearch,大数据,搜索引擎

1.4.4、示例(黑马旅游)

这里我们基于之前实现的黑马旅游案例来做栗子,实现步骤如下:

a)修改 hotel 索引库结构,设置自定义拼音分词器.

1.设置自定义分词器.

2. 修改索引库的 name、all 字段(建立倒排索引使用 拼音分词器,搜索时使用 ik 分词器).

3. 给索引库添加一个新字段 suggestion,类型为 completion 类型,使用自定义分词器.

PUT /hotel
{
  "settings": {
    "analysis": {
      "analyzer": {
        "text_anlyzer": {
          "tokenizer": "ik_max_word",
          "filter": "py"
        },
        "completion_analyzer": {
          "tokenizer": "keyword",
          "filter": "py"
        }
      },
      "filter": {
        "py": {
          "type": "pinyin",
          "keep_full_pinyin": false,
          "keep_joined_full_pinyin": true,
          "keep_original": true,
          "limit_first_letter_length": 16,
          "remove_duplicated_term": true,
          "none_chinese_pinyin_tokenize": false
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "id":{
        "type": "keyword"
      },
      "name":{
        "type": "text",
        "analyzer": "text_anlyzer",
        "search_analyzer": "ik_smart",
        "copy_to": "all"
      },
      "address":{
        "type": "keyword",
        "index": false
      },
      "price":{
        "type": "integer"
      },
      "score":{
        "type": "integer"
      },
      "brand":{
        "type": "keyword",
        "copy_to": "all"
      },
      "city":{
        "type": "keyword"
      },
      "starName":{
        "type": "keyword"
      },
      "business":{
        "type": "keyword",
        "copy_to": "all"
      },
      "location":{
        "type": "geo_point"
      },
      "pic":{
        "type": "keyword",
        "index": false
      },
      "all":{
        "type": "text",
        "analyzer": "text_anlyzer",
        "search_analyzer": "ik_smart"
      },
      "suggestion":{
          "type": "completion",
          "analyzer": "completion_analyzer"
      }
    }
  }
}
b)给 HotelDoc 类添加 suggestion 字段

suggestion 字段(包含多个字段的数组,这里可以使用 List 表示),内容包含 brand、business.

Ps:name、all 是可以分词的,自动补全的 brand、business 是不可分词的,要使用不同的分词器组合.

@Data
@NoArgsConstructor
public class HotelDoc {
    private Long id;
    private String name;
    private String address;
    private Integer price;
    private Integer score;
    private String brand;
    private String city;
    private String starName;
    private String business;
    private String location;
    private String pic;
    private Object distance;
    private Boolean isAD;
    private List<String> suggestion;

    public HotelDoc(Hotel hotel) {
        this.id = hotel.getId();
        this.name = hotel.getName();
        this.address = hotel.getAddress();
        this.price = hotel.getPrice();
        this.score = hotel.getScore();
        this.brand = hotel.getBrand();
        this.city = hotel.getCity();
        this.starName = hotel.getStarName();
        this.business = hotel.getBusiness();
        this.location = hotel.getLatitude() + ", " + hotel.getLongitude();
        this.pic = hotel.getPic();
        this.suggestion = new ArrayList<>();
        suggestion.add(brand);
        suggestion.add(business);
    }
}
c)将数据重新导入到 hotel 索引库中

将 hotel 索引库删了,然后重建(a 中的 DSL).  通过单元测试将所有信息从数据库同步到 es 上.

    @Test
    public void testBulkDocument() throws IOException {
        //1.获取酒店所有数据
        List<Hotel> hotelList = hotelService.list();
        //2.构造请求
        BulkRequest request = new BulkRequest();
        //3.准备参数
        for(Hotel hotel : hotelList) {
            //转化为文档(主要是地理位置)
            HotelDoc hotelDoc = new HotelDoc(hotel);
            String json = objectMapper.writeValueAsString(hotelDoc);
            request.add(new IndexRequest("hotel").id(hotel.getId().toString()).source(json, XContentType.JSON));
        }
        //4.发送请求
        client.bulk(request, RequestOptions.DEFAULT);
    }
d)基于 JavaRestClient 编写 DSL

例如自动补全关键为 "h" 的内容.

    @Test
    public void testSuggestion() throws IOException {
        //1.创建请求
        SearchRequest request = new SearchRequest("hotel");
        //2.准备参数
        request.source().suggest(new SuggestBuilder().addSuggestion(
            "testSuggestion",
                SuggestBuilders
                        .completionSuggestion("suggestion")
                        .prefix("h")
                        .skipDuplicates(true)
                        .size(10)
        ));
        //3.发送请求,接收响应
        SearchResponse search = client.search(request, RequestOptions.DEFAULT);
        //4.解析响应
        handlerResponse(search);
    }

这里可以对应着 DSL 语句来写.

ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能,ElasticSearch,elasticsearch,大数据,搜索引擎

对查询结果的处理如下:

        //4.处理自动补全结果
        Suggest suggest = response.getSuggest();
        if(suggest != null) {
            CompletionSuggestion suggestion = suggest.getSuggestion("testSuggestion");
            for (CompletionSuggestion.Entry.Option option : suggestion.getOptions()) {
                String text = option.getText().toString();
                System.out.println(text);
            }
        }

这里可以对应着 DSL 语句来写.

ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能,ElasticSearch,elasticsearch,大数据,搜索引擎

运行结果如下:

ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能,ElasticSearch,elasticsearch,大数据,搜索引擎

1.5、黑马旅游案例

1.5.1、需求

首先搜索框的自动补全功能.

最终实现效果就类似于 百度的搜索框,比如当我们输入 "byby",他就会立马自动补全出有关 byby 关键字的信息,如下图:

ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能,ElasticSearch,elasticsearch,大数据,搜索引擎

1.5.2、前端对接

在搜索框中输入,会触发以下请求. 这里前端就传入一个参数 key.

ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能,ElasticSearch,elasticsearch,大数据,搜索引擎

这里约定,返回的是一个 List,内容就是自动补全的所有信息.

1.5.3、实现 controller

这里使用 @RequestParam 接收前端传入的参数,然后调用 IhotelService 接口处理即可.

    @RequestMapping("/suggestion")
    public List<String> suggestion(@RequestParam("key") String prefix) {
        return hotelService.suggestion(prefix);
    }

1.5.4、创建接口并实现.

在 IhotelService 接口中创建 suggestion 方法.

public interface IHotelService extends IService<Hotel> {

    PageResult search(RequestParams params);

    Map<String, List<String>> filters(RequestParams params);

    List<String> suggestion(String prefix);
}

接着在 IhotelService 的实现类 HotelService 中实现该方法.

具体的实现,就和前面写的测试案例基本一致了~  要注意的点就是补全的关键字不是写死的,而是前端传入的 prefix.

    @Override
    public List<String> suggestion(String prefix) {
        try {
            //1.创建请求
            SearchRequest request = new SearchRequest("hotel");
            //2.准备参数
            request.source().suggest(new SuggestBuilder().addSuggestion(
                    "mySuggestion",
                    SuggestBuilders
                            .completionSuggestion("suggestion")
                            .prefix(prefix)
                            .skipDuplicates(true)
                            .size(10)
            ));
            //3.发送请求,接收响应
            SearchResponse response = client.search(request, RequestOptions.DEFAULT);
            //4.解析响应(处理自动补全结果)
            Suggest suggest = response.getSuggest();
            List<String> suggestionList = new ArrayList<>();
            if(suggest != null) {
                CompletionSuggestion suggestion = suggest.getSuggestion("mySuggestion");
                for (CompletionSuggestion.Entry.Option option : suggestion.getOptions()) {
                    String text = option.getText().toString();
                    suggestionList.add(text);
                }
            }
            return suggestionList;
        } catch (IOException e) {
            System.out.println("[HotelService] 自动补全失败!prefix=" + prefix);
            e.printStackTrace();
            return null;
        }
    }
}

1.5.5、效果展示

输入关键词,即可出现自动补全.

ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能,ElasticSearch,elasticsearch,大数据,搜索引擎

ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能,ElasticSearch,elasticsearch,大数据,搜索引擎

ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能,ElasticSearch,elasticsearch,大数据,搜索引擎文章来源地址https://www.toymoban.com/news/detail-729097.html

到了这里,关于ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch 全文搜索引擎 ---- IK分词器

            原理:分词的原理:二叉树                  首先讲一下为什么要出这个文章,前面我们讲过分词方法: 中文分词搜索 pscws (感兴趣的同学可以去爬楼看一下),那为什么要讲 IK分词 ?最主要的原因是:pscws分词 颗粒度 不如IK分词的颗粒度高,现在的需求

    2024年02月10日
    浏览(38)
  • Elasticsearch (ES) 搜索引擎: 文本搜索:分析器/分词器、同义词/停用词、拼音搜索、高亮显示、拼写纠错

    原文链接:https://xiets.blog.csdn.net/article/details/132349032 版权声明:原创文章禁止转载 专栏目录:Elasticsearch 专栏(总目录) 文本搜索主要指的就是全文搜索,全文搜索是搜索引擎的核心功能,与精确匹配的结构化数据不同,文本(text)数据在构建索引和搜索时都需要进行额外的处

    2024年02月03日
    浏览(44)
  • laravel如何使用scout+elasticsearch搜索,并支持IK分词

    本扩展包支持IK分词设置。 在按下文操作前请先阅读 laravel scout 全文搜索文档 安装 您可以通过composer安装软件包 wannanbigpig/laravel-scout-elastic: Laravel 会自动注册驱动服务提供者。 Elasticsearch 配置 安装完成后,您应该使用vendor:publish Artisan命令发布Scout配置文件。该命令将把scou

    2024年02月06日
    浏览(74)
  • 搜索引擎elasticsearch :安装elasticsearch (包含安装组件kibana、IK分词器、部署es集群)

    kibana可以帮助我们方便地编写DSL语句,所以还要装kibana 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络: 这里我们采用elasticsearch的7.12.1版本的镜像,这个镜像体积非常大,接近1G。不建议大家自己pull。 课前资料提供了镜像的tar包: 大家将

    2024年02月16日
    浏览(45)
  • ES(二)| 安装ES、Kibana、IK分词器、拼音分词器(自动补全)

    上一篇:ES(一)| ES简介、倒排索引、索引库操作语法、文档操作语法、Java使用RestClient进行ES操作 安装包下载: 链接:https://pan.baidu.com/s/1Y1O0B8aG7qzRLFFVYo9nHw 提取码:hdyc 因为我们还需要部署 kibana 容器,因此需要让 es 和 kibana 容器互联。这里先创建一个网络: 这里我采用

    2023年04月08日
    浏览(43)
  • elasticsearch 基于ik分词器的分词查询和模糊匹配

    前言:elasticsearch 查询有很多,查询的条件有固定格式,返回结果提示不明确,让ES使用起来有点不方便的感觉,ES查询方式很多,简单介绍几种使用点的,实用的 此处简单梳理一下最常用的查询 模糊匹配查询 类似 mysql 语法中的 like ‘%value%’ 类似于百度的分词查询 将

    2024年02月16日
    浏览(29)
  • windows环境基于Elasticsearch8.4.0的IK中文分词器的安装、部署、使用

    目录 问题现象: 解决方法: 1、下载IK中文分词器 2、部署 3、使用 前言(选看)       最近在重温Elasticsearch,看来一下官网,都出到8.4.3版本了。想当初学的时候用的还是5.6.8,版本更新了很多意味着有大变动。           windows环境基于Elasticsearch8.4.0的IK中文分词器的安

    2024年02月13日
    浏览(30)
  • elasticsearch的拼音分词器安装

    安装拼音分词器 第一步:下载 要实现根据字母做补全,就必须对文档按照拼音分词。在 GitHub 上恰好有 elasticsearch 的拼音分词插件。地址: 仓管的主页: https://github.com/infinilabs/analysis-pinyin 仓管的版本页 https://github.com/infinilabs/analysis-pinyin/releases 百度仓库: 链接:百度网盘

    2024年01月22日
    浏览(29)
  • elasticsearch 拼音分词器 & 自动补全。

    2. 自动补全。 当用户在搜索框输入字符时,我们应该提示出与该字符有关的搜索项,如图。 这种根据用户输入的字母,提示完整词条的功能,就是自动补全了。 因为需要根据拼音字母来推断,因此要用到拼音分词功能。 2.1. 拼音分词器。 要实现根据字母做补全,就必须对文

    2024年02月06日
    浏览(38)
  • 基于 centos7 搭建 laravel+scout+elasticsearch+ik-analyzer 用于中文分词全文检索服务及测试

    浏览该文章,建议先食用 异常问题 这一节 软件/框架 版本 jdk 19.0.2 elasticsearch 8.1.1 ik-analyzer 8.1.1 laravel 7.x-dev elasticsearch/elasticsearch 7.17.1 tamayo/laravel-scout-elastic 8.0.3 下载jdk传送门 安装 下载:wget https://download.oracle.com/java/19/latest/jdk-19_linux-x64_bin.rpm 安装:rpm -ivh jdk-19_linux-x64_bin.

    2023年04月09日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包