当前位置: 首页 > news >正文

常德网站seo网站开发可以自学吗

常德网站seo,网站开发可以自学吗,wordpress拿站,广西建设厅网站招 标 信 息文章目录 背景创建索引指定 _all 分词为空格创建索引插入索引数据全字段的模糊检索 创建索引指定 _all 分词为 keyword索引创建插入数据模糊检索 创建索引不配置 _all不同分词的结果启示录 背景 2018年参与使用 ES 和 Kafka 项目的开发,当时主要是做前端开发&#…

文章目录

    • 背景
    • 创建索引指定 _all 分词为空格
      • 创建索引
      • 插入索引数据
      • 全字段的模糊检索
    • 创建索引指定 _all 分词为 keyword
      • 索引创建
      • 插入数据
      • 模糊检索
    • 创建索引不配置 _all
    • 不同分词的结果
    • 启示录

背景

2018年参与使用 ES 和 Kafka 项目的开发,当时主要是做前端开发,虽然主要工作领域是后端,但是一直很排斥 ES 和 Kafka 这两个组件,后来前后台开发任务交替,断断续续补了一下这两个组件的基础原理,总是记不住,碰到的一些小问题解决后就忘记了,这俩组件的技术债一直欠着。

这周避不开 ES 的一个模糊检索问题,索引创建的时候没有指定 _all 的分词方式,对模糊检索中包含中文的请求的影响是什么?

  1. query_string 全字段检索时,使用的分词方式是什么?_all 指定的,默认是standard
  2. query_string 指定字段检索时,使用的分词方式是什么?whitespace
  3. 索引 mapping 设置了_all 的分词对全字段检索的影响?使用指定的分词方式。
  4. 创建字段的 mapping 里面没有设置 analyzer 的话,默认的分词方式是什么?whitespace

本文以三个不同索引的全字段模糊检索,ES版本5.4.0 环境,验证结果如下:

  1. mytest 索引,设置 _all 分词为 whitespace:有空格走分词,中文词组正常分词,能查到结果。
  2. article-01 索引,设置 _all 分词为 keyword:期待输入检索参数即使包含空格,也能直接检出符合条件的数据,实际什么都查不出来。
  3. article-02 索引,没有设置 _all 分词:有空格正常分词检索,中文单个词能查到,词语查不到。

创建索引指定 _all 分词为空格

创建索引

执行 PUT http://IP:9200/mytest 请求,指定 _all 分词为空格:

{"index_patterns": ["log*","product*"],"settings": {"number_of_shards": 2,"number_of_replicas": 1},"mappings": {"article": {"_all": {"analyzer": "whitespace"},"properties": {"ip": {"type": "keyword"},"method": {"type": "keyword"}}}}
}

执行结果:创建一个索引名称是 mytest 类型 doc 的索引。
在这里插入图片描述

插入索引数据

发送 PUT mytest/doc/1 ...5 次请求,插入5条数据:
在这里插入图片描述

全字段的模糊检索

验证全字段上模糊检索包含空格和不包含空格的检索结果:
在这里插入图片描述
索引指定了 _all 的分词为空格分词,所以检索字符串进行空格分词后查询结果同时查出来分词之前的 239 和 001 的内容。其实我希望得到的是精确的模糊匹配的结果的,空格分词方式不行,那么改成 keyword 分词呢?

创建索引指定 _all 分词为 keyword

索引创建

按相同方法新建一个索引 _all 的分词类型为 keyword

"mappings": {"article": {"_all": {"analyzer": "keyword"},"properties": {"method": {"type": "keyword"},"ip": {"type": "keyword"}}}
}

插入数据

相同操作插入数据:
在这里插入图片描述

模糊检索

1、输入包含空格的关键字:输入一个带空格的检索,出的结果也不符合预期,无数据。
在这里插入图片描述
2、输入不含空格包含在数据中、任意一部分的关键字,能查到数据:
在这里插入图片描述

创建索引不配置 _all

相同操作创建索引 article-02,不配置 _all 属性的时候,插入几条数据:
在这里插入图片描述

模糊检索使用的中文词组:在这里插入图片描述
单个中文汉字输入时能检索到:
在这里插入图片描述

不同分词的结果

1、standard 分词,中文字符串拆成一个个的,英文字符串以空格为单位进行拆分:
在这里插入图片描述

2、whitespace 分词,按空格切分:
在这里插入图片描述
3、keyword 分词: 直接作为一个整体,不拆分。
在这里插入图片描述

启示录

首先,有一个知识点是确定的,在使用 _all 进行全字段检索的时候,分词方式与 _all 设定的分词方式有关,如果索引没有设置,则就是默认的 standard 分词方式。

其次,使用空格的分词方式,那对模糊检索包含空格的内容作分词,结果跟我们常规理解的 SQL 形式的 Like 语法还是不一样的,我们希望的是空格被作为一个整体内容进行检索的。

第三点,网络上说的 query_string 的关键字使用 (*目标字符串*) 包裹后就不会分词,这点无效。

第四点,未指定 _all 的分词方式时,对 ES6.8 以上的高版本的中文词组检索没有影响。

最后一个问题,为什么设置全文检索的分词为 keyword 后,什么输入包含空格的关键字后,检索不到了呢?

ES _all、_source的使用:_all字段连接所有字段的值构成一个用空格(space)分隔的大 string 而被 analyzed 和 index,document 主体保存在_source中。

按这个解释,当 _all 分词方式是 keyword 的时候,目标检索关键字没有被分词,而作为一个整体了。由于 _all 字段存储的值是按空格进行分词,索引后的内容是不含空格,所以目标检索关键字中有空格,就查不到数据。

http://www.yayakq.cn/news/83636/

相关文章:

  • 私自建立网站网站判决书吃什么补肾快
  • 聊城网站制作浙江省省建设厅网站
  • 如何开心设计一个网站国外图床 wordpress
  • 深圳网页制作与网站建设公司上海官方最新消息
  • 网站开发验证码图片不显示亚马逊购物商城
  • 如何做网站推广的策略汽贸做网站有用处吗
  • 五合一免费建站做视频课程的网站有哪些
  • 帮别人做网站违法吗龙文区城乡建设局网站
  • 电影网站建设方案wordpress的官网
  • varnish wordpress成都seo的方法
  • 自己做片头的网站营销型网站建设定制
  • 一个公司建n网站学校网站网站建设
  • 网站怎样恶意刷搜索引擎平台有哪些软件
  • 网站地址栏图标怎么做wordpress图片库插件
  • 建一个自己用的网站要多少钱有哪些免费做外贸网站
  • 宣讲家网站两学一做心得网络维护网站建设培训
  • 美团初期是怎么建网站自助建站视频网站
  • 情侣网站建设策划书写作网站水平哪个最好
  • 电脑系统做的好的网站好成都房产网官网
  • 网站设计与管理合肥房产网站建设
  • 网站怎么使用服务之家网站推广
  • 河源网站制作1993seo北京网站优化推广公司
  • 洛阳电商网站建设宣传片制作网站
  • 创办一个网站需要多少资金wordpress建站技巧
  • 沂南建设局网站黄岩建设局台州网站建设
  • 做wordpress 下载站上海外贸网站推广公司
  • 腾度网站建设成都开发网站
  • 哈尔滨建设职工大学湘潭网站建设优化建站
  • 厦门SEO_厦门网站建设网站 横幅
  • 外贸网站优化在线推广wordpress连接自建数据库