全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
开放搜索

字段类型 和 分词类型

更新时间:2017-06-07 13:26:11

字段类型说明

数据推送到OpenSearch后会先保存到离线数据表中,在此阶段,为了方便用户推送数据,数据表允许用户根据实际业务场景定义多个表(需要指定关联字段),并提供了数据处理的插件。数据处理完毕后会join成一张索引表,这种索引表主要定义搜索属性,供引擎构建索引及查询使用。

这里分别介绍下数据表与索引表的字段对应关系。

数据表字段

数据表主要为数据导入时使用,不同的数据处理插件对类型有不同的要求,这里只是初步类型选择,下一步将有更细化的类型。具体字段取值范围,请参见系统限制-字段相关部分说明。超过取值范围将溢出或者截断,请务必保证选择类型正确。

类型 说明
INT int64整型
INT_ARRAY int64整型数组
FLOAT 浮点型
FLOAT_ARRAY 浮点型数组
DOUBLE 浮点型
DOUBLE_ARRAY 浮点型数组
LITERAL 字符串常量,仅支持精确匹配
LITERAL_ARRAY 字符串常量数组,单个元素仅支持精确匹配
SHORT_TEXT 短文本,长度在100字节内,支持若干分词方式
TEXT 长文本,支持若干分词方式

索引表字段

对于INT及FLOAT类型介绍这里不再累赘(限制详见系统限制),重点介绍下各字段类型。

主要类型介绍

搜索效果如何跟分词有很大的关系,分词方式直接影响最终的搜索效果展示,目前系统支持若干的分词方式,需要根据实际业务场景的需求选择合适的字段类型。

接下来,我们详细说明下各个字段的展现效果及适用场景,供大家参考。

不分词

不分词,适合一些需要精确匹配或者只展示不搜索的场景,如标签、关键词、url等。LITERAL、INT类型可选。

  1. 如文档字段内容为“菊花茶”,则只有搜索“菊花茶”的情况下可以召回。

中文基础分词

按照检索单元做分词,适合有语义的中文搜索场景,如标题、文本等。TEXT及SHORT_TEXT类型可选。

  1. 如文档字段内容为“菊花茶”,则搜索“菊花茶”、“菊花”、“茶”、“花茶”的情况下可以召回。

中文单字分词

按照单字/单词分词,适合非语义的中文搜索场景,如小说作者名称、店铺名等;TEXT及SHORT_TEXT类型可选。

  1. 如文档字段内容为“菊花茶”,则搜索“菊花茶”、“菊花”、“茶”、“花茶”、“菊”、“花”、“菊茶”的情况下可以召回。

模糊分词

仅适用于SHORT_TEXT短文本类型,支持拼音搜索、数字的前后缀搜索(中文不支持前后缀匹配搜索,字母,数字及拼音,这些都支持前后缀匹配)、单字或者单字母搜索。最多支持100个字节字段长度,更多介绍及注意事项参见模糊搜索使用说明

  1. 如文档字段内容为“菊花茶”,则搜索“菊花茶”、“菊花”、“茶”、“花茶”、“菊”、“花”、“菊茶”、“ju”、“juhua”、“juhuacha”、“j”、“jh”、“jhc”等情况下可以召回。
  2. 如文档字段内容为手机号“13812345678”,则通过“^138”来搜索以“138”开头的手机号,通过“5678$”搜索以“5678”结尾的手机号;
  3. 如文档字段内容为“OpenSearch”,则通过单个字母或者组合都可以检索到。

英文去词根分词

适合于英文语义搜索场景,对于分词后的每个英文单词默认会做去词根、单复数转化。TEXT及SHORT_TEXT类型可选。

  1. 如文档字段内容为“英文分词器 english analyzer”,则搜索“英文分词器”、“english”、“analyz”、“analyzer”、“analyzers”、“analyze”、“analyzed”、“analyzing”。
  2. (注意:英文分词器中连续的中文会被分成一个词)

英文简单分词

适合于英文书名、人名等搜索场景,按照空格及标点符号做分词。TEXT及SHORT_TEXT类型可选。

  1. 如文档字段内容为“英文分词器 english analyzer”,则搜索“英文分词器”、“english”、“analyzer”。
  2. (注意:英文分词器中连续的中文会被分成一个词)

自定义分词

自定义分词,适合特殊场景下系统自带无法解决的搜索场景,可以实现完全用户控制的效果。推送文档及搜索时使用制表符“\t”对字段内容(或查询词)进行分隔,注意二者分词的一致性,否则会导致无法召回文档的情况。TEXT及SHORT_TEXT类型可选。

  1. 如字段内容为“菊\t花茶\thao”,则只有查询词“菊”、“花茶”、“菊\t花茶”、“花茶\thao”、“菊\thao”、“菊\t花茶\thao”可以召回该文档。

适用场景

  • 有语义环境的中文搜索,建议使用中文语义分词;
  • 对于短文本或者非语义环境中文搜索(对排序没有太多要求),建议使用中文单字分词来扩大召回;
  • 拼音搜索请使用模糊分词;
  • 英文场景下请使用英文去词根分词;
  • 某些场景下,中文语义分词及单字分词搭配使用,可以获得非常好的搜索效果。如查询query=title_index:’菊花茶’ OR sws_title_index:’菊花茶’,精排表达式为:text_relevance(title)*5+field_proximity(sws_title)。可以实现包含“xx菊xx花xx茶xx”的文档,且排序上“菊花茶”会排在前面。

注意事项

  • 如果TEXT字段设置了搜索结果摘要,扩展检索单元部分词组(如上例中的“花茶”)将不会被添加飘红标签。
  • 中文单字分词对于数字跟单词认为是一个词,如“hello word”,搜索“hello”可以召回,搜索“he”则无法召回,敬请注意。若需要做单词内召回,请选择模糊分词。
本文导读目录