倒排索引与分词器

一、倒排索引

1、什么是倒排索引

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g7SO2mhV-1596981293103)(http://note.youdao.com/yws/res/60510/2AE09DC7D9A24970A52A45FE10EB8BDF)]

主要包含两部分:

1、单词词典(Term Dictionary)

记录所有文档的单词,记录单词到倒排列表的关联关系。生产环境中单词数据量一般都比较大,可以通过B+树或者哈希拉链法实现,以满足高性能的插入或查询。

2、倒排列表(Posting List)

记录了单词对应的文档的一些倒排索引项信息。主要包括:

  • 文档ID
  • 词频(该单词在文档中出现的次数,用于相关性评分)
  • 位置(Position,单词在文档分词中的位置,用于语句搜索)
  • 偏移(Offset,记录单词开始结束的位置,实现高亮显示)

ES的json文档中的每个字段,默认都有自己的倒排索引。当然也可以指定对某些字段不做索引,这种做法的优点就是节省空间,缺点也显而易见,未被索引的字段是无法被搜索的。

二、分词器

1、analyzsis 与 analyzer

在ES中,是通过具体的分词器(analyzer)实现对全文本的转换,将器转换成一个个的单词,这整个过程就叫做分词(analyzsis)。

分词器是专门处理分词的一个组件,分词器主要由三部分组成:

  • Character Filters,主要是对原始文本做处理,如去除html等
  • Tokenizer,按照具体规则对文档进行切分
  • Token Filter,对切分完的单词进行加工,如小写处理、删除stopwords,增加同义词等

ES中分词器主要有两大类:ES内置分词器、定制分词器。在生产环境中,需要结合实际情况已经业务需要选择正确的分词器,文档的写入以及读取都需要使用对应的分词器进行分析。

2、常见的内置分词器

分词器基本介绍
Standard Analyzer默认分词器,按词切分,小写处理,stopwords关闭
Simple Analyzer按照非字母切分(字符被过滤),小写处理
Stop Analyzer按词切分,停用词过滤(is、a、the),小写处理
Whitespace Analyzer按照空格切分,不做小写处理
Keyword Analyzer不做分词处理,直接将输入当作输出
Patter Analyzer正则表达式,默认\W+(非字符分隔)
Language提供30+常见语言的分词器
Customer Analyzer自定义分词器

3、中文分词器

1)ICU analyzer

需要手动下载对应的插件,它提供了unicode可以更好的支持亚洲语言。

Elasticsearch-plugin install analysis-icu

2)IK

支持自定义词库,支持热更新分词词典

3)THULAC

清华大学自然语言处理和社会人文计算实验室提供的一套中文分词器

4、_analyze API

三种测试查看分词器分词效果的情况

1)直接使用_analyze

GET /_analyze
{
    "analyzer":"standard",
    "text":"This is a Test"
}

2)指定索引的具体的字段查看其分词效果

POST ${index_name}/_analyze
{
    "filed":"title",
    "text":"Mastering Elasticsearch"
}

3)自定义指定分词器查看分词效果

POST /_analyze
{
    "tokenizer":"standard",
    "filter":["lowercase"],
    "text":"Mastering Elasticsearch"
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值