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

电商首页模板网站汽车配件网上商城

电商首页模板网站,汽车配件网上商城,h5免费制作平台火蚁邀请函,深圳包装设计机构概述 分词器的主要作用将用户输入的一段文本#xff0c;按照一定逻辑#xff0c;分析成多个词语的一种工具 什么是分词器 顾名思义#xff0c;文本分析就是把全文本转换成一系列单词#xff08;term/token#xff09;的过程#xff0c;也叫分词。在 ES 中#xff0c;Ana…概述 分词器的主要作用将用户输入的一段文本按照一定逻辑分析成多个词语的一种工具 什么是分词器 顾名思义文本分析就是把全文本转换成一系列单词term/token的过程也叫分词。在 ES 中Analysis 是通过分词器Analyzer 来实现的可使用 ES 内置的分析器或者按需定制化分析器。 举一个分词简单的例子比如你输入 Mastering Elasticsearch会自动帮你分成两个单词一个是 mastering另一个是 elasticsearch可以看出单词也被转化成了小写的。 分词器的构成 分词器是专门处理分词的组件分词器由以下三部分组成 character filter 接收原字符流通过添加、删除或者替换操作改变原字符流 例如去除文本中的html标签或者将罗马数字转换成阿拉伯数字等。一个字符过滤器可以有零个或者多个 tokenizer 简单的说就是将一整段文本拆分成一个个的词。 例如拆分英文通过空格能将句子拆分成一个个的词但是对于中文来说无法使用这种方式来实现。在一个分词器中,有且只有一个tokenizeer token filters 将切分的单词添加、删除或者改变 例如将所有英文单词小写或者将英文中的停词a删除等在token filters中不允许将token(分出的词)的position或者offset改变。同时在一个分词器中可以有零个或者多个token filters. 分词顺序 同时 Analyzer 三个部分也是有顺序的从图中可以看出从上到下依次经过 Character FiltersTokenizer 以及 Token Filters这个顺序比较好理解一个文本进来肯定要先对文本数据进行处理再去分词最后对分词的结果进行过滤。 索引和搜索分词 文本分词会发生在两个地方 创建索引当索引文档字符类型为text时在建立索引时将会对该字段进行分词。搜索当对一个text类型的字段进行全文检索时会对用户输入的文本进行分词。 配置分词器 默认ES使用standard analyzer如果默认的分词器无法符合你的要求可以自己配置 分词器测试 可以通过_analyzerAPI来测试分词的效果。 COPY# 过滤html 标签 POST _analyze {tokenizer:keyword, #原样输出char_filter:[html_strip], # 过滤html标签text:bhello worldb # 输入的文本 }指定分词器 使用地方 分词器的使用地方有两个 创建索引时进行搜索时 创建索引时指定分词器 如果手动设置了分词器ES将按照下面顺序来确定使用哪个分词器 先判断字段是否有设置分词器如果有则使用字段属性上的分词器设置如果设置了analysis.analyzer.default则使用该设置的分词器如果上面两个都未设置则使用默认的standard分词器 字段指定分词器 为title属性指定分词器 PUT my_index {mappings: {properties: {title:{type:text,analyzer: whitespace}}} }指定默认default_seach COPYPUT my_index {settings: {analysis: {analyzer: {default:{type:simple},default_seach:{type:whitespace}}}} }内置分词器 es在索引文档时会通过各种类型 Analyzer 对text类型字段做分析 不同的 Analyzer 会有不同的分词结果内置的分词器有以下几种基本上内置的 Analyzer 包括 Language Analyzers 在内对中文的分词都不够友好中文分词需要安装其它 Analyzer 分析器描述分词对象结果standard标准分析器是默认的分析器如果没有指定则使用该分析器。它提供了基于文法的标记化(基于 Unicode 文本分割算法如 Unicode 标准附件 # 29所规定) 并且对大多数语言都有效。The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.[ the, 2, quick, brown, foxes, jumped, over, the, lazy, dog’s, bone ]simple简单分析器将文本分解为任何非字母字符的标记如数字、空格、连字符和撇号、放弃非字母字符并将大写字母更改为小写字母。The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.[ the, quick, brown, foxes, jumped, over, the, lazy, dog, s, bone ]whitespace空格分析器在遇到空白字符时将文本分解为术语The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.[ The, 2, QUICK, Brown-Foxes, jumped, over, the, lazy, dog’s, bone. ]stop停止分析器与简单分析器相同但增加了删除停止字的支持。默认使用的是 english 停止词。The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.[ quick, brown, foxes, jumped, over, lazy, dog, s, bone ]keyword不分词把整个字段当做一个整体返回The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.[The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.]pattern模式分析器使用正则表达式将文本拆分为术语。正则表达式应该匹配令牌分隔符而不是令牌本身。正则表达式默认为 w (或所有非单词字符)。The 2 QUICK Brown-Foxes jumped over the lazy dog’s bone.[ the, 2, quick, brown, foxes, jumped, over, the, lazy, dog, s, bone ]多种西语系 arabic, armenian, basque, bengali, brazilian, bulgarian, catalan, cjk, czech, danish, dutch, english等等一组旨在分析特定语言文本的分析程序。 分词器 _analyze 的使用 #standard GET _analyze {analyzer: standard,text: 2 running Quick brown-foxes leap over lazy dogs in the summer evening. }#simpe GET _analyze {analyzer: simple,text: 2 running Quick brown-foxes leap over lazy dogs in the summer evening. }GET _analyze {analyzer: stop,text: 2 running Quick brown-foxes leap over lazy dogs in the summer evening. }#stop GET _analyze {analyzer: whitespace,text: 2 running Quick brown-foxes leap over lazy dogs in the summer evening. }#keyword GET _analyze {analyzer: keyword,text: 2 running Quick brown-foxes leap over lazy dogs in the summer evening. }GET _analyze {analyzer: pattern,text: 2 running Quick brown-foxes leap over lazy dogs in the summer evening. }#english GET _analyze {analyzer: english,text: 2 running Quick brown-foxes leap over lazy dogs in the summer evening. }POST _analyze {analyzer: icu_analyzer,text: 他说的确实在理” }POST _analyze {analyzer: standard,text: 他说的确实在理” }POST _analyze {analyzer: icu_analyzer,text: 这个苹果不大好吃 } 可以看出是按照空格、非字母的方式对输入的文本进行了转换比如对 Java 做了转小写对一些停用词也没有去掉比如 in其中 token 为分词结果start_offset 为起始偏移end_offset 为结束偏移position 为分词位置。 使用分析器进行分词 课程Demo #Simple Analyzer – 按照非字母切分符号被过滤小写处理 #Stop Analyzer – 小写处理停用词过滤theais #Whitespace Analyzer – 按照空格切分不转小写 #Keyword Analyzer – 不分词直接将输入当作输出 #Patter Analyzer – 正则表达式默认 \W (非字符分隔) #Language – 提供了30多种常见语言的分词器 #2 running Quick brown-foxes leap over lazy dogs in the summer evening 其他常用分词器 电子邮件分词器UAX URL Email Tokenizer 此分词器主要是针对email和url地址进行关键内容的标记。 GET _analyze {text:Email me at john.smithglobal-international.com,tokenizer: uax_url_email }经典分词器Classic Tokenizer 可对首字母缩写词公司名称电子邮件地址和互联网主机名进行特殊处理但是这些规则并不总是有效并且此关键词生成器不适用于英语以外的大多数其他语言 特点 它最多将标点符号拆分为单词删除标点符号但是不带空格的点被认为是查询关键词的一部分此分词器可以将邮件地址和URL地址识别为查询的term词条 GET _analyze {text:The 2 QUICK Brown-Foxes jumped over the lazy dogs bone.,analyzer: classic }路径分词器Path Tokenizer 可以对文件系统的路径样式的请求进行拆分返回被拆分各个层级内容。 GET _analyze {text:/one/two/three,tokenizer:path_hierarchy }自定义分词器 当内置的分词器无法满足需求时可以创建custom类型的分词器。 配置参数 参数描述tokenizer内置或定制的tokenizer.(必须)char_filter内置或定制的char_filter(非必须)filter内置或定制的token filter(非必须)position_increment_gap当值为文本数组时设置改值会在文本的中间插入假空隙。设置该属性对与后面的查询会有影响。默认该值为100. 创建索引 上面的示例中定义了一个名为my_custom_analyzer的分词器 该分词器的type为customtokenizer为standardchar_filter为hmtl_strip,filter定义了两个分别为lowercase和asciifolding PUT my_index {settings: {analysis: {analyzer: {my_custom_analyzer:{type:custom,tokenizer:standard,char_filter:[html_strip],filter:[lowercase,asciifolding]}}}} }测试使用自定义分词 POST my_index/_analyze {text: Is this bdéjà vu/b?,analyzer: my_custom_analyzer }中文分词器 IKAnalyzer IKAnalyzer是一个开源的基于java的语言开发的轻量级的中文分词工具包 从2006年12月推出1.0版开始IKAnalyzer已经推出了3个大版本在 2012 版本中IK 实现了简单的分词歧义排除算法标志着 IK 分词器从单纯的词典分词向模拟语义分词衍化 使用IK分词器 IK提供了两个分词算法: ik_smart最少切分。ik_max_word最细粒度划分。 ik_smart 分词算法 使用案例 原始内容 GET _analyze {analyzer: ik_smart,text: 传智教育的教学质量是杠杠的 }ik_max_word 分词算法 GET _analyze {analyzer: ik_max_word,text: 传智教育的教学质量是杠杠的 }自定义词库 我们在使用IK分词器时会发现其实有时候分词的效果也并不是我们所期待的 问题描述 例如我们输入“传智教育的教学质量是杠杠的”但是分词器会把“传智教育”进行拆开分为了“传”“智”“教育”但我们希望的是“传智教育”可以不被拆开。 解决方案 对于以上的问题我们只需要将自己要保留的词加到我们的分词器的字典中即可 编辑字典内容 进入elasticsearch目录plugins/ik/config中创建我们自己的字典文件yixin.dic并添加内容 cd plugins/ik/config echo 传智教育 custom.dic扩展字典 进入我们的elasticsearch目录 plugins/ik/config打开IKAnalyzer.cfg.xml文件进行如下配置 vi IKAnalyzer.cfg.xml #增加如下内容 entry keyext_dictcustom.dic/entry再次测试 重启ElasticSearch再次使用kibana测试 GET _analyze {analyzer: ik_max_word,text: 传智教育的教学质量是杠杠的 }可以发现现在我们的词汇”传智教育”就不会被拆开了达到我们想要的效果了 分词的可配置项 standard 分词器可配置项 选项描述max_token_length最大令牌长度。如果看到令牌超过此长度则将其max_token_length间隔分割。默认为255。stopwords预定义的停用词列表例如english或包含停用词列表的数组。默认为none。stopwords_path包含停用词的文件的路径。 COPY{settings: {analysis: {analyzer: {my_english_analyzer: {type: standard,max_token_length: 5,stopwords: _english_}}}} }正则分词器Pattern Tokenizer 可配置选项 可配置项 正则分词器有以下的选项 选项描述 |pattern |正则表达式| |flags |正则表达式标识| |lowercase| 是否使用小写词汇| |stopwords |停止词的列表。| |stopwords_path |定义停止词文件的路径。| COPY{settings: {analysis: {analyzer: {my_email_analyzer: {type: pattern,pattern: \\W|_,lowercase: true}}}} }路径分词器Path Tokenizer可配置选项 选项描述delimiter用作路径分隔符的字符replacement用于定界符的可选替换字符buffer_size单次读取到术语缓冲区中的字符数。默认为1024。术语缓冲区将以该大小增长直到所有文本都被消耗完为止。建议不要更改此设置。reverse正向还是反向获取关键词skip要忽略的内容 COPY{settings: {analysis: {analyzer: {my_analyzer: {tokenizer: my_tokenizer}},tokenizer: {my_tokenizer: {type: path_hierarchy,delimiter: -,replacement: /,skip: 2}}}} }语言分词Language Analyzer ES 为不同国家语言的输入提供了 Language Analyzer 分词器在里面可以指定不同的语言
http://www.zqtcl.cn/news/45753/

相关文章:

  • 深圳牌申请网站空间中国建筑材料网
  • 那个做兼职网站好上海网站推广费用
  • 上海设计网站用vue做的网站
  • 深圳 高端网站建设宝安中国联通网站备案
  • 新乡网站关键词优化网站开发的朋友圈
  • c 网站开发入门视频教程wordpress设置图标
  • 学校为什么要做网站深圳建设花了多少钱
  • 泰安网站的建设苏州网站建设比较好的公司
  • 初二信息课网站怎么做运涛网站建设
  • 建设银行网站点不了做网站怎么收集资料
  • 做电影网站哪个源码好网站不兼容360浏览器
  • 进入网站wordpress配置广东十大排名建筑公司
  • 网站制作价钱多少一元云购 网站开发
  • 文山网站建设大学生网站作业
  • 怎么添加网站 多少钱北京网站推广公司排名
  • 搜索引擎优化心得体会义乌seo推广
  • 网站建设服务费记账分录深圳网站开发设计公司排名
  • 广西 南宁 微信微网站开发郑州动力无限网站建设
  • 贵阳网站制作策划wordpress mysql 密码重置
  • 深圳网站设计招聘网站设计制作的服务和质量
  • 网站怎样自己不花钱在电脑上做网页中国工程预算网
  • 网站建设合同 法律声明网站开发培训设计
  • 书画院网站建设模板python一般要学多久
  • 微信做的地方门户网站企业为什么要建站台呢
  • 阿里云网站建设部署与发布试题答案公众号开发需要学什么
  • 网站数据库模版wordpress系统环境
  • 国内做免费视频网站有哪些百度云盘搜索引擎入口
  • 有了 ftp服务器密码 怎么改网站如何下载wordpress
  • 贵州做旅游的网站哈尔滨市建设工程交易中心
  • 网站开发与维护视频教程wordpress 招聘网站模板