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

从零开始网站开发北仑建设局质监站网站

从零开始网站开发,北仑建设局质监站网站,创意单页设计,企业网站优化推广怎么做Elasticsearch 系列回来了#xff0c;先给因为这个系列关注我的同学说声抱歉#xff0c;拖了这么久才回来#xff0c;这个系列虽然叫「Elasticsearch 从入门到放弃」#xff0c;但只有三篇就放弃还是有点过分的#xff0c;所以还是回来继续更新。之前我们聊过了 Elasticse…Elasticsearch 系列回来了先给因为这个系列关注我的同学说声抱歉拖了这么久才回来这个系列虽然叫「Elasticsearch 从入门到放弃」但只有三篇就放弃还是有点过分的所以还是回来继续更新。之前我们聊过了 Elasticsearch 的索引和文档不太熟悉的话可以先翻阅一下前文。今天再一起聊一下 Elasticsearch 的分词器。关于分词如果你是讲 Elasticsearch 作为搜索引擎那么你应该需要对分词进行了解Elasticsearch 的分词是将全文本转换为一系列单词这样有助于在搜索时得到相关的结果以及相关性分析。例如我们有一个文本为“I love Elasticsearch”然后 Elasticsearch 可以将其分解为三个单词这时我们无论搜索哪个单词都能搜到这个文本。Elasticsearch 通过分词器对文本进行分词处理Elasticsearch 的分词器是由 Character Filters、Tokenizer 和Token Filter 三部分组成。在介绍它们之前我们先来简单了解一下 Analyze API它可以帮助我们快速测试一个 Analyzer 的作用它的用法也非常简单GET /_analyze {analyzer : standard,text : Quick Brown Foxes! }其中analyzer 是指定的分词器text 是被测试的文本这样就能得到这个文本分词后的效果。这是最简单的一种用法此外我们还可以在 path 中指定 index用于测试指定索引中 mapping 设置的 analyzer 或者索引默认的 analyzer。当然你也可以测试一下自定义的 analyzer只需要在参数中设置好 Character Filters、Tokenizer 和Token Filter 即可。关于 Analyze API 更多的使用方法可以自行查阅官方文档 Analyze API内置 Analyzer为了方便使用Elasticsearch 为我们提供了几种内置 AnalyzerFingerprint它可以将文本处理为小写的、去除扩展的、有序的、唯一的单词Keyword不分词Language提供了30多种常见语言的分词器Pattern使用正则表达式分词默认W非字符分隔Simple按照非字母切分小写处理Standard默认分词器会基于 Unicode 文本语法按照单词划分并进行小写处理Stop小写处理过滤停用词the, a, isWhitespace按照空格切分不转小写现在我们来测试一下 Whitespace Analyzer GET _analyze {analyzer: whitespace,text: The 2 QUICK Brown-Foxes jumped over the lazy dogs bone. }它的执行结果是{tokens : [{token : The,start_offset : 0,end_offset : 3,type : word,position : 0},{token : 2,start_offset : 4,end_offset : 5,type : word,position : 1},{token : QUICK,start_offset : 6,end_offset : 11,type : word,position : 2},{token : Brown-Foxes,start_offset : 12,end_offset : 23,type : word,position : 3},{token : jumped,start_offset : 24,end_offset : 30,type : word,position : 4},{token : over,start_offset : 31,end_offset : 35,type : word,position : 5},{token : the,start_offset : 36,end_offset : 39,type : word,position : 6},{token : lazy,start_offset : 40,end_offset : 44,type : word,position : 7},{token : dogs,start_offset : 45,end_offset : 50,type : word,position : 8},{token : bone.,start_offset : 51,end_offset : 56,type : word,position : 9}] }如果有兴趣可以自行测试一下其他的内置 Analyzer。除了内置的 Analyzer 之外你也可以根据需要自定义分词器。下面我们来看怎么定义我们需要的 Analyzer。前面提到 Analyzer 由三部分组成其中 Character Filters 用于对原始文本进行处理例如去掉html标签Tokenizer 是按照指定规则进行切分Token Filter 负责将切分的单词进行加工例如转小写。Character FiltersCharacter Filters 是分词的第一步Elasticsearch 用它来对原始文本进行一些处理。内置的 Character Filters 有三个分别是HTML strip使用解码值替换HTML标签Mapping使用指定的替换项替换指定的字符串Pattern replace使用指定的替换项替换正则匹配的字符串HTML strip 默认会替换文本中所有的 HTML 标签你也可以通过设置escaped_tags将一些特定的标签排除PUT my_index {settings: {analysis: {analyzer: {my_analyzer: {tokenizer: keyword,char_filter: [my_custom_html_strip_char_filter]}},char_filter: {my_custom_html_strip_char_filter: {type: html_strip,escaped_tags: [b]}}}} }这个自定义 Analyzer 就不会替换标签 b。Tokenizer在对原始文本进行初步的处理之后Tokenizer 就要上场了它帮助我们根据指定的规则进行分词Elasticsearch 同样提供了一些内置的 Tokenizer。Character group按照配置的字符组进行切分Classic针对英语语法进行分词Edge n-gram从单词的起始字符开始按长度依次切分quick 会被分为[q, qu, qui, quic, quick]Keyword不切分Letter遇到非字母的字符进行切分Lowercase与类似 Letter 类似不过它会把切分后的单词转为小写N-gram把单词切分为指定长度的字符串集合quick 会被分为[qu, ui, ic, ck]Path hierarchy对路径进行切分/foo/bar/baz 会分为[/foo, /foo/bar, /foo/bar/baz]Pattern根据正则匹配进行切分Simple pattern正则会受到一些限制但不支持按照匹配到的分割符切分Simple pattern split是支持按照匹配到的分割符切分的Simple patternStandard按照单词进行切分Thai针对泰语进行切分UAX URL email与 Standard 相似但它会把 url 或邮箱当作一个整体Whitespace按照空格进行切分在这里你可以先对这些内置的 Tokenizer 有个初步的了解知道它们能干什么在具体使用的时候可以查阅官方文档进行更详细的了解很多 Tokenizer 还支持一些参数配置这些到实际场景中灵活使用就好。Token FilterElasticsearch 内置的 Token Filter 非常多这里列几个常用的吧Trim删除前后空格Uppercase转大写Lowercase转小写Stop停用词过滤……Elasticsearch 中内置的这些分词器及组件可以满足我们日常的大部分需求了能够做到灵活应用就很厉害了。如果真的遇到解决不了的问题你也可以尝试自定义分词器例如对我们的中文进行分词。中文分词中文分词的难点在于它不像英文那样有天然的空格可以进行切分我们也不能简单的把它分成一个个的字而是要分成有意义的词。比较不错的中文分词器有 ICU Analyzer、IK 和 THULACICU AnalyzerICU Analyzer 并不是 Elasticsearch 内置的分词器所以我们需要预先安装插件才能使用执行命令elasticsearch-plugin install analysis-icu进行安装安装好以后可以使用命令elasticsearch-plugin list进行查看。安装好之后就可以运行下面这个例子GET _analyze {analyzer: standard, text: 觉得好看就点赞 }GET _analyze {analyzer: icu_analyzer, text: 觉得好看就点赞 }你会发现 standard analyzer 就是把这句话拆成一个个字而 icu analyzer 基本会根据语义进行拆分。总结经过本文的介绍相信你对 Elasticsearch 的分词器也有了一个初步的认识知道它由什么组成能够使用 Analyze API 对一个分词器进行简单的测试也基本能够自定义一些分词器了。我对内置的 Token Filter 介绍的比较少你可以结合官方文档对你感兴趣的 Token Filter 进行更深入的研究如果有什么问题也欢迎和我讨论。
http://www.pierceye.com/news/930559/

相关文章:

  • 石狮网站建设折扣网站模板
  • 大连商城网站制作公司深圳网站改版公司
  • 网站备案需要的资料网站+做内容分发资格
  • 青岛模板自助建站百度怎么搜索图片
  • 国外做动运服装的网站安徽海通建设集团网站
  • 手机网站加百度商桥装修公司加盟免费
  • 网站开发背景知识wordpress第二步500
  • 114百事通做网站600郑州建站时间
  • 佛山网站建设科技公司南宁网页设计价格
  • 四字母net做网站怎么样如何开通微信小程序商城
  • 山西免费网站关键词优化排名婚恋网站开发
  • seo查询站长手机app制作网站模板
  • 微网站O2O平台平台开发怎么申请免费的网站
  • 加强网站互动交流平台建设自查p2p网站建设制作
  • 泉州网站建设平台成都百度seo公司
  • php响应式网站模板下载陕西建设集团招聘信息网站
  • 网站品牌推广设计网站建设单页
  • 秦皇岛酒店网站设计wordpress 退出 跳转
  • 网站建设题目以及答案济南建设公司网站
  • 有什么网站做的比较高大上网站首页怎么设计
  • 法治中国建设网站做网站推广 需要ftp
  • 网站运营工作具体做啥做网站寄生虫需要哪些东西
  • 东莞网站建设教程wordpress 插件 破解
  • 响应式网站做法免费seo网站
  • 网站搭建合作协议cms drupal wordpress
  • 桂林创新大厦网站佛山网站建设培训
  • 如何网站关键词优化idc机房托管
  • 做网站 做好把我踢开WordPress Core 5.0
  • 飓风 网站建设ip形象设计报价明细
  • 太原网站seo外包信誉好的赣州网站建设