[ElasticSearch]分析之Analysis(分析)
分析(analysis)是将文本(如任何电子邮件的正文)转换为添加到倒排索引中进行搜索的tokens
或terms
的过程。 分析由分析器analyzer
执行,分析器可以是内置分析器或者每个索引定制的自定义分析器。
1. 索引时分析(Index time analysis)
例如在索引时,内置的英文分析器将会转换下面句子:
"The QUICK brown foxes jumped over the lazy dog!"
转换为添加到倒排索引中的terms
如下:
[ quick, brown, fox, jump, over, lazi, dog ]
1.1 指定索引时分析器
映射中的每个text
字段都可以指定其自己的分析器:
curl -XPUT 'localhost:9200/my_index?pretty' -H 'Content-Type: application/json' -d' { "mappings": { "my_type": { "properties": { "title": { "type": "text", "analyzer": "standard" } } } } } '
在索引时,如果没有指定分析器,则会在索引设置中查找一个叫做default
的分析器。 如果没有找到,默认使用标准分析器standard analyzer
。
2. 搜索时分析(Search time analysis)
同样的分析过程可以应用于进行全文检索搜索(例如match query
匹配查询)时,将查询字符串的文本转换为与存储在倒排索引中相同形式的terms
。
例如,用户可能搜索:
"a quick fox"
这将由相同的英语分析器分析为以下terms
(上面索引时举例使用的是英语分析器):
[ quick, fox ]
即使在查询字符串中使用的确切单词不会出现在原始存储文本(quick
vs QUICK
,fox
vs foxes
)中,因为我们已将相同的分析器应用于文本和查询字符串上,查询字符串中的terms
能够完全匹配到倒排索引中来自文本的terms
,这意味着此查询将与我们的示例文档匹配。
2.1 指定搜索时分析器
通常情况下,在索引时和搜索时应该使用相同的分析器,而全文查询full text queries
(例如匹配查询 match query
)将使用映射来查找用于每个字段的分析器(use the mapping to look up the analyzer to use for each field.)。
通过查找用于搜索特定字段的分析器来决定::
- 在查询本身中指定的分析器。
-
search_analyzer
映射参数。 -
analyzer
映射参数。 - 索引设置中的
default_search
分析器。 - 索引设置中的
default
分析器。 -
standard
标准分析器.
ElasticSearch版本
5.4
原文:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis.html
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
颠覆大数据分析之Spark弹性分布式数据集
Spark中迭代式机器学习算法的数据流可以通过图2.3来进行理解。将它和图2.1中Hadoop MR的迭代式机器学习的数据流比较一下。你会发现在HadoopMR中每次迭代都会涉及HDFS的读写,而在Spark中则要简单得多。它仅需从HDFS到Spark中的分布式共享对象空间的一次读入——从HDFS文件中创建RDD。RDD可以重用,在机器学习的各个迭代中它都会驻留在内存里,这样能显著地提升性能。当检查结束条件发现迭代结束的时候,会将RDD持久化,把数据写回到HDFS中。后续章节会对Spark的内部结构进行详细介绍——包括它的设计,RDD,以及世系等等。 图2.3 Spark中进行迭代式计算的数据共享 Spark的弹性分布式数据集 RDD这个概念跟我们讨论到的Spark的动机有关——就是能让用户操作分布式系统上的Scala集合。Spark中的这个重要的集合就是RDD。RDD可以通过在其它RDD或者稳态存储中的数据(比如说,HDFS中的文件)上执行确定性操作来进行创建。创建RDD的另一种方式就是将Scala集合并行化。RDD的创建也就是Spark中的转换操作。RDD上除了转换操作,还有其它的...
- 下一篇
HBase thrift/thrift2 使用指南
Thrift server简介 Thrift server是HBase中的一种服务,主要用于对多语言API的支持。基于Apache Thrift(多语言支持的通信框架)开发,目前有两种版本thrift和thrift2。 thrift2是当时为了适应新的Java API,提出来的。由于种种原因,thrift2没有完美兼容并替代thrift,所有就留下了两个版本。 Thrift 和 Thrift2 的区别 接口设计上Thrift2要比Thrfit更优雅,或者说和现在的API更贴近。比如两者的get接口: // Thrift2 的get接口,传入TGet(对应Java API种的Get类) // 用过Java API的同学看起来应该会更亲切 TResult get( /** the table to ge
相关文章
文章评论
共有0条评论来说两句吧...