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

这篇具有很好参考价值的文章主要介绍了Elasticsearch 全文搜索引擎 ---- IK分词器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        原理:分词的原理:二叉树        

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

        第一步:安转Elasticsearch,这个在博主原来的文章里面有,所以不在讲述,安装完成后运行结果:

访问地址:http://localhost:9200

Elasticsearch 全文搜索引擎 ---- IK分词器,搜索引擎,elasticsearch,大数据,中文分词,全文检索,php

        第二步:安转IK扩展(现在下载扩展包):需要选择和自己的Elasticsearch对应的版本,我的Elasticsearch版本是7.3.2,下载后存放在:/plugins 目录下:

        下载地址:https://gitcode.net/mirrors/medcl/elasticsearch-analysis-ik/-/tree/v7.3.2

        直接运行会发现闪退情况:为什么会出现这样的情况,主要有两个原因:

        1.版本不配

        2.未修改配置 ,配置如何修改?

        需要安装 maven 包管理工具,这个是JAVA开发的,所以需要安装JAVA的环境IK 分词器需要 Java 8 或者以上的版本)  

        一、下载&安装

        1. 下载地址

        maven下载地址如下,各位请选择对应系统的maven版本进行下载。

        https://maven.apache.org/download.cgi

        2. 解压maven安装包

        maven安装包下载之后,对其进行解压。

Elasticsearch 全文搜索引擎 ---- IK分词器,搜索引擎,elasticsearch,大数据,中文分词,全文检索,php


        二、配置环境变量:
        系统变量新增:变量名:MAVEN_HOME   值:maven存放目录
        系统变量追加:变量名:path         值:%MAVEN_HOME%\bin

        测试maven是否配置完毕:输入mvn -v命令,如果出现maven版本号,就表明安装成功。
        如果报错:
        配合:The JAVA_HOME environment variable is not defined correctly This environment variable is needed to run this program NB: JAVA_HOME should point to a JDK not a JRE
        没有安装Java的运行环境或者JAVA_HOME的环境变量没有配置,安装好JAVA的运行环境后记得配置JAVA_HOME环境变量,安装好后,再运行mvn -v命令        Elasticsearch 全文搜索引擎 ---- IK分词器,搜索引擎,elasticsearch,大数据,中文分词,全文检索,php

查看命令:elasticSearch-plugin list:安装成功

Elasticsearch 全文搜索引擎 ---- IK分词器,搜索引擎,elasticsearch,大数据,中文分词,全文检索,php

第三步:使用分词(PHP版本):

//引入自动加载文件
require_once APPPATH.'../vendor/es/autoload.php';
//使用命名空间引用
use Elasticsearch\ClientBuilder;
class Test extends CI_Controller
{
    //初始化
    public function __construct()
    {
        parent::__construct();
        //拼接参数
        $params = [
            [
                'host'   => '地址',
                'port'   => '端口号',
                'scheme' => 'http',
                'user'   => '用户名',
                'pass'   => '密码'
            ]
        ];
                //初始化对象
        $this->client = ClientBuilder::create()->setHosts($params)->setConnectionPool('连接池地址(相对地址)', []) ->setRetries(10)->build();
    }
        
        //分词器
    public function ik(){
         $params = [
            'body' => [
                'text' => '中国上海市直辖市静安区',
                //ik_max_word 精细  ik_smart 粗略
                'analyzer'=>'ik_max_word'
            ]
        ];
                //请求分词
        $res =  $this->client->indices()->analyze($params);
        var_dump($res);die;
    }
}

IK精细分词输出结果:

  array(11) {
    [0]=>array(5) {
        ["token"]=>string(6) "中国"["start_offset"]=>int(0)["end_offset"]=>int(2) 
        ["type"]=>string(7) "CN_WORD"["position"]=>int(0)
        }
    [1]=>array(5) {
        ["token"]=>string(9) "上海市"["start_offset"]=>int(2)["end_offset"]=>int(5)
        ["type"]=>string(7) "CN_WORD"["position"]=>int(1)
        }
    [2]=>array(5) {
        ["token"]=>string(6) "上海"["start_offset"]=>int(2)["end_offset"]=>int(4)
        ["type"]=>string(7) "CN_WORD"["position"]=>int(2)
        }
    [3]=>array(5) {
        ["token"]=>string(6) "海市" ["start_offset"]=>int(3)["end_offset"]=>int(5)
        ["type"]=>string(7) "CN_WORD"["position"]=>int(3)
        }
    [4]=>array(5) {
        ["token"]=>string(6) "市直" ["start_offset"]=>int(4)["end_offset"]=>int(6)
        ["type"]=> string(7) "CN_WORD"["position"]=>int(4)
        }    
    [5]=>array(5) {
        ["token"]=>string(9) "直辖市"["start_offset"]=>int(5)["end_offset"]=>int(8)
        ["type"]=>string(7) "CN_WORD"["position"]=>int(5)
        }
    [6]=>array(5) {
        ["token"]=> string(6) "直辖"["start_offset"]=> int(5)["end_offset"]=>int(7)
        ["type"]=>string(7) "CN_WORD"["position"]=>int(6)
        }
    [7]=>array(5) {
        ["token"]=>string(3) "市"["start_offset"]=>int(7)["end_offset"]=>int(8)
        ["type"]=>string(7) "CN_CHAR"["position"]=>int(7) 
        }
    [8]=> array(5) {
        ["token"]=>string(9) "静安区" ["start_offset"]=>int(8)["end_offset"]=> int(11)
        ["type"]=>string(7) "CN_WORD"["position"]=>int(8)
        }
    [9]=>array(5) { 
        ["token"]=>string(6) "静安" ["start_offset"]=>int(8)["end_offset"]=>int(10)
        ["type"]=>string(7) "CN_WORD" ["position"]=>int(9) 
        }
    [10]=>array(5) {
        ["token"]=>string(3) "区"["start_offset"]=>int(10)["end_offset"]=>int(11)
        ["type"]=>string(7) "CN_CHAR"["position"]=>int(10) 
        }
  }
}

IK粗略分词:

array(1) {
  ["tokens"]=>
  array(11) {
    [0]=>array(5) {
        ["token"]=>string(6) "中国"["start_offset"]=>int(0)["end_offset"]=>int(2) 
        ["type"]=>string(7) "CN_WORD"["position"]=>int(0)
        }
    [1]=>array(5) {
        ["token"]=>string(9) "上海市"["start_offset"]=>int(2)["end_offset"]=>int(5)
        ["type"]=>string(7) "CN_WORD"["position"]=>int(1)
        }
    [2]=>array(5) {
        ["token"]=>string(9) "直辖市"["start_offset"]=>int(5)["end_offset"]=>int(8)
        ["type"]=>string(7) "CN_WORD"["position"]=>int(5)
        }
    [3]=> array(5) {
        ["token"]=>string(9) "静安区" ["start_offset"]=>int(8)["end_offset"]=> int(11) 
        ["type"]=>string(7) "CN_WORD"["position"]=>int(8)
        }
  }
}

中文分词搜索 pscws

array(4) { 
["中国"]=> array(4) { 
    ["word"]=> string(6) "中国" 
    ["times"]=> int(1) ["weight"]=> float(6.2600002288818) ["attr"]=> string(3) "ns" 

["上海市"]=> array(4) { 
    ["word"]=> string(9) "上海市" 
    ["times"]=> int(1) ["weight"]=> float(7.8200001716614) ["attr"]=> string(3) "ns" 

["直辖市"]=> array(4) { 
    ["word"]=> string(9) "直辖市" 
    ["times"]=> int(1) ["weight"]=> float(6.8499999046326) ["attr"]=> string(3) "n" 

["静安区"]=> array(4) { 
    ["word"]=> string(9) "静安区"
    ["times"]=> int(1) ["weight"]=> float(12.140000343323) ["attr"]=> string(3) "ns" 
 }
}

        至此IK分词器讲解完成,可以对比一下IK与pscws的区别,后续操作可以根据自己的业务来确定文章来源地址https://www.toymoban.com/news/detail-695579.html

到了这里,关于Elasticsearch 全文搜索引擎 ---- IK分词器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 开源的全文搜索引擎Elasticsearch

    Elasticsearch是一个开源的全文搜索引擎,可以实现快速、实时的数据搜索和分析。它是基于Apache Lucene的搜索引擎库开发而来,提供了一个分布式、多租户的全文搜索引擎平台,能够支持海量数据的实时检索、聚合分析和可视化展示。 Elasticsearch 的主要特点包括: 分布式架构:

    2024年02月08日
    浏览(36)
  • 全文搜索引擎 Elasticsearch 入门使用

    目录 1、安装 2、基本概念 2.1 Node 与 Cluster 2.2 Index 2.3 Document  2.4 Type 3、新建和删除 Index 4、中文分词设置  5、数据操作  5.1 新增记录  5.2 查看记录   5.3 删除记录 5.4 更新记录  6、数据查询 6.1 返回所有记录 6.2 全文搜索  6.3 逻辑运算 7、参考链接 本文从零开始,讲解如何

    2024年02月09日
    浏览(32)
  • Elasticsearch 分布式全文搜索引擎原理解析

    作者:禅与计算机程序设计艺术 Elasticsearch是一个开源的分布式全文搜索引擎,它可以近实时地存储、检索数据。本系列文章将从以下几个方面对Elasticsearch进行深入分析: Elasticsearch的主要组成部分 索引、类型和映射(Mapping) 搜索请求处理流程 查询缓存机制 Elasticsearch集群

    2024年02月05日
    浏览(39)
  • SpringBoot封装Elasticsearch搜索引擎实现全文检索

    注:本文实现了Java对Elasticseach的分页检索/不分页检索的封装 ES就不用过多介绍了,直接上代码: 创建Store类(与ES字段对应,用于接收ES数据) Elasticsearch全文检索接口:不分页检索 Elasticsearch全文检索接口:分页检索 本文实现了Java对Elasticsearch搜索引擎全文检索的封装 传入

    2024年02月04日
    浏览(34)
  • Elasticsearch (ES) 搜索引擎: 搜索功能:搜索分页、搜索匹配、全文搜索、搜索建议、字段排序

    原文链接:https://xiets.blog.csdn.net/article/details/132348920 版权声明:原创文章禁止转载 专栏目录:Elasticsearch 专栏(总目录) ES 搜索 API 官网文档:Search APIs 先创建一个索引,并写入一些文档用于搜索示例: 写入一些文档示例: 官网API:The _source option 搜索结果中的文档数据封装

    2024年02月08日
    浏览(45)
  • [golang gin框架] 37.ElasticSearch 全文搜索引擎的使用

    ElasticSearch 是一个基于 Lucene 的 搜索服务器 ,它提供了一个 分布式多用户 能力的 全文搜索引擎 ,基于 RESTful web 接口,Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎,设计用于云计算中,能够达到 实时搜索 , 稳定 , 可靠

    2024年02月11日
    浏览(45)
  • 552、Elasticsearch详细入门教程系列 -【分布式全文搜索引擎 Elasticsearch(三)】 2023.05.19

    1.1 简单介绍 之前是对ES中的创建/查看/删除索引、创建定义映射、创建/查看/修改/删除文档的这些操作有了一定的了解认识,但是是通过Postman + JSON串的方法来实现的 那么之后仍然是对ES中的索引、映射、文档进行操作,只是方法换成了Java API。 1.2 案例详情 首先需要创建一个

    2024年02月08日
    浏览(41)
  • 551、Elasticsearch详细入门教程系列 -【分布式全文搜索引擎 Elasticsearch(二)】 2023.04.04

    1.1 Elasticsearch中的数据格式 Elasticsearch 是面向文档型数据库,一条数据在这里就是一个文档。为了方便大家理解,我们将 Elasticsearch 里存储文档数据和关系型数据库 MySQL 存储数据的概念进行一个类比。 ES 里的 Index 可以看做一个库,而 Types 相当于表,Documents 则相当于表的行。

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

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

    2024年02月03日
    浏览(44)
  • docker安装elasticsearch与head教程完整版—.NET Core Web Api与elasticsearch打造全站全文搜索引擎

    默认已经有docker环境 下载与安装 elasticsearch ,从hub.docker里面可以看到最新版本的镜像,选择你想要的版本 本教程是以 7.17.7 为案例,为啥不适用最新的,首先个人一般需用最新的版本,如果有亢很难填,其次我自己的服务器下载的太慢(还是配置了docker加速地址的)拉取几

    2024年02月10日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包