解析-analysis

1.      解析-analysis

可以理解为分词。

解析由解析器——analyzer执行,解析器包括内置和用户自定义两种。

1.1.    解析器

1.1.1.   内置解析器

doc:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-analyzers.html

Standard Analyzer:按单词边界分解,忽略大多数标点符号、小写术语,支持删除停用词。

Simple Analyzer:以非字母字符为分词点,格式化字母为小写。

Whitespace Analyzer:以空白字符为分词点,不执行小写化。

Stop Analyzer:类似于simple analyzer,但支持删除停用词。

Pattern Analyzer:正则解析分词

Language Analyzers:其它语种分词

Fingerprint Analyzer:

The fingerprint analyzer is a specialist analyzer which creates a fingerprint which can be used for duplicate detection.

1.1.2.   自定义解析器

暂不涉及。

1.2.    索引分词/搜索分词

索引分词很好理解,写时分词,形成索引。

每个text字段可以指定独有的analyzer;

如果没有指定,默认以index settings/default参数为准,实质上是standard analyzer.

搜索分词

对于搜索语句,也会进行分词,默认使用索引分词的解析器;

可以单独设置搜索分词的分词器,但一般不必。

1.2.1.   分词示例

以内置english解析器为例:

"The QUICK brown foxes jumped over the lazy dog!"

首先小写化,移除频次高的停用词,转换单词为原型词,最终的结果是序列:

[ quick, brown, fox, jump, over, lazi, dog ]

2.      案例

环境配置:

创建index test_i

创建field msg,使用默认配置,即标准分词器

创建field msg_english,使用english分词器;

# 测试环境创建

d = {"msg":"Eating an apple a day keeps doctor away."}

rv = es.index("test_i", d)

pr(rv)

d = { "properties": {

"msg_english": {

"type":     "text",

"analyzer": "english"

}  }    }

rv = es.indices.put_mapping(body=d, index=["test_i"]) # 正常情况返回true

# 查看数据结构

rv = es.indices.get_mapping(index_name)

{

"test_i": {

"mappings": {

"properties": {

"msg": {

"type": "text",

"fields": {

"keyword": {

"type": "keyword",

"ignore_above": 256

}     }    },

"msg_english": {

"type": "text",

"analyzer": "english"

}   }  } }}

插入文档:

d = {"msg_english":"Eating an apple a day keeps doctor away."}

rv = es.index("test_i", d)

查询:查询分为两部分,第一种按字段msg匹配eat,是没有hits项的,查询msg_english字段

# search apis

def search_api_test():

data = {    "query" : {        "match" : {"msg_english":"eat"}    },    }

rv = es.search(index="test_i", body=data)

pr(rv)

search_api_test()

结果

{ "took": 2,

"timed_out": false,

"_shards": {

"total": 1,

"successful": 1,

"skipped": 0,

"failed": 0

},

"hits": {

"total": {

"value": 1,

"relation": "eq"

},

"max_score": 0.2876821,

"hits": [

{

"_index": "test_i",

"_type": "_doc",

"_id": "XG7KFG0BpAsDZnvvGLz2",

"_score": 0.2876821,

"_source": {

"msg_english": "Eating an apple a day keeps doctor away."

}   }  ] }}

补充:分词测试,直观测试标准分词器和english分词器的区别

测试代码:

# 分词测试

d1 = {"analyzer":"standard","text":"Eating an apple a day keeps doctor away."}

d2 = {"analyzer":"english","text":"Eating an apple a day keeps doctor away."}

rv1 = es.indices.analyze(body=d1, format="text")

rv2 = es.indices.analyze(body=d2, format="text")

print([x["token"] for x in rv1["tokens"]]) # d1 分词结果

print([x["token"] for x in rv2["tokens"]]) # d2 分词结果

输出:

['eating', 'an', 'apple', 'a', 'day', 'keeps', 'doctor', 'away']

['eat', 'appl', 'dai', 'keep', 'doctor', 'awai']

解析-analysis的更多相关文章

  1. [Elasticsearch] 全文搜索 (一) 基础概念和match查询

    全文搜索(Full Text Search) 现在我们已经讨论了搜索结构化数据的一些简单用例,是时候开始探索全文搜索了 - 如何在全文字段中搜索来找到最相关的文档. 对于全文搜索而言,最重要的两个方面 ...

  2. Makefile浅尝

    [0]README makefile定义: 一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要一先编译,哪些文件需要后编译,哪 ...

  3. JVM系列-类加载机制

    简介 在java中,类的声明周期总共分为以下几种: 加载(Loading),验证(Verification),准备(Preparation),解析(Analysis), 初始化(Initializat ...

  4. CET4词汇

    abandon vt.丢弃:放弃,抛弃 ability n.能力:能耐,本领 abnormal a.不正常的:变态的 aboard ad.在船(车)上:上船 abroad ad.(在)国外:到处 ab ...

  5. Spark SQL源码解析(三)Analysis阶段分析

    Spark SQL原理解析前言: Spark SQL源码剖析(一)SQL解析框架Catalyst流程概述 Spark SQL源码解析(二)Antlr4解析Sql并生成树 Analysis阶段概述 首先 ...

  6. 1Z0-053 争议题目解析46

    1Z0-053 争议题目解析46 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 46.What happens when you run the SQL Tuning Adviso ...

  7. CocosStudio文件解析工具CsdAnalysis

    起因 因为工作需要,所以需要使用CocosStudio来制作界面动画什么的.做完了发现需要找里边对象的时候会有很长一串代码,感觉不是很爽.之前写OC代码的时候可以吧程序中的对象指针跟编辑器中的对象相对 ...

  8. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q131-Q134)

    Question  131 You are designing multiple SharePoint 2010 features. You have the following requiremen ...

  9. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q102-Q104)

    Question  102   You are designing a Windows application that accesses information stored on a ShareP ...

随机推荐

  1. 快捷键(一):Win10

    Ctrl + X 剪切选定项 Ctrl + C(或 Ctrl + Insert) 复制选定项 Ctrl + V(或 Shift + Insert) 粘贴选定项 Ctrl + Z 撤消操作 Alt + ...

  2. 2.10 webdriver中 js 使用

    来源: 使用Webdriver执行JS小结  http://lijingshou.iteye.com/blog/2018929 selenium常用的js总结  http://www.cnblogs. ...

  3. 《你一生的故事》--------------science fiction-------------《巴比伦塔》

    而塔就不一样了,不等你靠近去触摸它,就已经感到一种纯粹的坚固与力量.所有的传说都认为,建造这座塔的目的,是为了获得一种力量,这种力量是任何一座巴比伦庙塔都未曾拥有的.普通的巴比伦塔只是用太阳晒干的泥砖 ...

  4. P2141珠心算测验题解

    先来看一下题目:某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法.他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和? 这 ...

  5. 百炼OJ - 1005 - I Think I Need a Houseboat

    题目链接:http://bailian.openjudge.cn/practice/1005/ 思路 一个半圆面积每年增长50,已知一个点坐标,求第几年点在半圆内. #include <stdi ...

  6. android 使用系统级别权限

    java.lang.SecurityException: Neither user 10027 nor current process has android.permission.MODIFY_PH ...

  7. IntelliJ IDEA 2017.3尚硅谷-----修改当前主题字体、字体大小、行间距、控制台、注释

  8. 染色板QPlette

    QPalette::Window 背景颜色 QPalette::WindowText 文本颜色 QPalette::Background 同QPalette::Window QPalette::For ...

  9. [转]使用HttpOnly提升Cookie安全性

    原文:https://www.cnblogs.com/zlhff/p/5477943.html 在介绍HttpOnly之前,我想跟大家聊聊Cookie及XSS. 随着B/S的普及,我们平时上网都是依赖 ...

  10. Jmeter 测试结果分析之聚合报告简介

    聚合报告(aggregate report) 对于每个请求,它统计响应信息并提供请求数,平均值,最大,最小值,错误率,大约吞吐量(以请求数/秒为单位)和以kb/秒为单位的吞吐量. 吞吐量是以取样目标点 ...