解析-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‘]

原文地址:https://www.cnblogs.com/wodeboke-y/p/11562809.html

时间: 2024-11-20 22:39:25

解析-analysis的相关文章

[Hibernate Search] (5) 解析和条件索引

解析(Analysis) 当一个实体域被Lucene索引时,往往还会经历一个语法分析(Parsing)和转换(Conversion)的步骤,这些步骤被称为解析.在前文中,我们提到过Hibernate Search会默认对字符串类型的实体域进行分词,而这个分词过程就需要用到解析器(Analyzer).在需要对实体域进行排序的场合,需要禁用这个默认的分词行为. 在解析过程中,还可以借助Apache Solr提供的组件来完成更多的操作.为了弄清楚Solr组件是如何参与到这个过程中并完成更多的操作,需要

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

全文搜索(Full Text Search) 现在我们已经讨论了搜索结构化数据的一些简单用例,是时候开始探索全文搜索了 - 如何在全文字段中搜索来找到最相关的文档. 对于全文搜索而言,最重要的两个方面是: 相关度(Relevance) 查询的结果按照它们对查询本身的相关度进行排序的能力,相关度可以通过TF/IDF,参见什么是相关度,地理位置的邻近程度(Proximity to a Geo-location),模糊相似性(Fuzzy Similarity)或者其它算法进行计算. 解析(Analys

[Elasticsearch] 索引管理 (一)

索引管理 本文翻译自Elasticsearch官方指南的索引管理(Index Management)一章 我们已经了解了ES是如何在不需要任何复杂的计划和安装就能让我们很容易地开始开发一个新的应用的.但是,用不了多久你就会想要仔细调整索引和搜索过程来更好的适配你的用例. 几乎所有的定制都和索引(Index)以及其中的类型(Type)相关.本章我们就来讨论用于管理索引和类型映射的API,以及最重要的设置. 创建索引 到现在为止,我们已经通过索引一份文档来完成了新索引的创建.这个索引是使用默认的设置

Apache Tika-内容解析提取工具集合(a content analysis toolkit)

简介 Apache Tika toolkit可以自动检测各种文档(如word,ppt,xml,csv,ppt等)的类型并抽取文档的元数据和文本内容.Tika集成了现有的文档解析库,并提供统一的接口,使针对不同类型的文档进行解析变得更简单.Tika针对搜索引擎索引.内容分析.转化等非常有用. 支持的文档格式 详见参见http://tika.apache.org/1.5/formats.html HyperText Markup Language XML and derived formats Mi

Analysis解析

/** *  解析: 按照约定好(假象)的格式提取数据的过程叫做解析. 数据提供方(后台)按照格式存放数据, 数据提取方(前端)按照格式提取数据 主流的数据结构: XML 和 JSON; XML数据结构的特点: 1.有变迁组成, 而且标签是一对的, 一对开始标签和结束标签叫 节点 2.节点可以有子节点和父节点, 没有父节点的节点叫根节点, 没有子节点的节点叫叶子节点 3.节点可以用来存储数据 XML 解析原理: 1.SAX解析: 是一种基于事件回调的解析机制(主要通过代理方法进行解析), 逐行解

使用Tika、Luke工具解析多种类型(word、pdf、txt 等)索引文件

Tika 是2008年才产生的apache的一个项目,主要用于打开各种不同类型的文档,获取其文本信息.可以解析多种类型(word.pdf.txt .html等)文件! 甚至可以通过解析url,获取其网页信息.最后把其文本信息提起出来.这方面Tika有点像Jsoup..一般情况下,直接对word.pdf等文件直接创建索引是不对的,用luke工具查看之后,出现一大推乱七八糟的term.这个时候就可以用Tika 去在对其创建索引之前,转化处理其文本信息. package hhc; import jav

(转载)Oracle AWR报告指标全解析

Oracle AWR报告指标全解析 2014-10-16 14:48:04 分类: Oracle [性能调优]Oracle AWR报告指标全解析 2013/08/31 BY MACLEAN LIU 26条评论 [性能调优]Oracle AWR报告指标全解析 开Oracle调优鹰眼,深入理解AWR性能报告:http://www.askmaclean.com/archives/awr-hawk-eyes-training.html 开Oracle调优鹰眼,深入理解AWR性能报告 第二讲: http:

PDF数据提取------3.解析Demo

1.PDF中文本字符串格式中关键值信息抓取(已完成) 简介:这种解析比较传统最简单主要熟练使用Regular Expression做语义识别和验证.例如抓取下面红色圈内关键信息 string mettingData=GetMeetingData(); public string GetMeetingData() { string patternAll = @"(?<NDAandCAMDate>会\s*议\s*.{2,15}\d{2,4}\s*年\s*\d{1,2}\s*月\s*\d{

视音频数据处理入门:H.264视频码流解析

前两篇文章介绍的YUV/RGB处理程序以及PCM处理程序都属于视音频原始数据的处理程序.从本文开始介绍视音频码流的处理程序.本文介绍的程序是视频码流处理程序.视频码流在视频播放器中的位置如下所示. 本文中的程序是一个H.264码流解析程序.该程序可以从H.264码流中分析得到它的基本单元NALU,并且可以简单解析NALU首部的字段.通过修改该程序可以实现不同的H.264码流处理功能. 原理 H.264原始码流(又称为"裸流")是由一个一个的NALU组成的.他们的结构如下图所示. 其中每