一般文档内容会比较长,而在实际展示搜索结果的时候,不可能完全展示出来。这时候就需要做摘要及飘红设置。系统会截取包含搜索结果的几个片段,供用户了解具体匹配内容,以快速判断是否是自己想要的结果。用户可以在控制台对搜索结果的展示效果进行自定义设置,设置完成后,调用 API 时,系统会自动获取用户配置,并添加到查询 query 中,无需用户再次传入。当然也可以在 API 参数中通过 summary 参数(参考搜索处理)进行具体查询的控制。
主要参数介绍
字段:需要配置摘要的字段
片段长度:表示整个摘要最大长度
飘红标签:关键词飘红的html标签
片段连接符:每个片段之间的连接符
片段数量:在摘要长度内需要几个片段
控制台配置及生效
1.控制台——>OpenSearch 高性能检索版——>功能扩展——>搜索结果展示,配置搜索结果摘要
2.以下示例为飘红标签的配置。飘红标签为em。
SDK/API配置
API 参数中,通过 summary 参数(参考搜索处理)指定。
SDK配置,以java sdk为例,demo:
// 设置搜索结果摘要信息,此处采用下面的SearchParams对象添加搜索结果摘要,比较简便 Summary summ = new Summary("name"); summ.setSummary_field("name");//指定的生效的字段。此字段必需为可分词的text类型的字段。 summ.setSummary_len("50");//片段长度 summ.setSummary_element("em"); //飘红标签 summ.setSummary_ellipsis("...");//片段链接符 summ.setSummary_snippet("1");//片段数量 //添加Summary对象参数
温馨提示:
SDK的SearchParams类中summary对象参数中暂时不能指定飘红的前后缀(必须是完整html标签),前后缀默认为<>,比如设置飘红标签为em,飘红后返回的JSON结果格式为:阿里云<em>开放搜索</em>产品文档;
若要在SDK中设置飘红的前后缀,请使用searchParamsBuilder对象。
// SearchParams的工具类,提供了更为便捷的操作 SearchParamsBuilder paramsBuilder = SearchParamsBuilder.create(searchParams); // 使用SearchParamsBuilder对象添加搜索结果摘要 paramsBuilder.addCustomParam("summary", "summary_field:name,summary_ellipsis:...,summary_snipped:1,summary_len:50,summary_element_prefix:<abc>,summary_element_postfix:</abc>"); // 添加多个summary_field用分号分割
注意事项
飘红只会飘红query的查询词,并且飘红字段一定要建索引,否则会显示异常。
不支持摘要与飘红分开配置。
若配置多个摘要字段,并且对应摘要字段值中有包含索引中指定搜索关键词的分词,则这些摘要字段中对应分词内容都会摘要飘红。
命中的term比较靠后,超过了10000个字节的最大限制时,不会显示飘红。
若对应用中某个字段分别创建不同分词类型,例如同时创建了中文基础及单字分词,此时中文单字分词摘要飘红会有问题,该摘要飘红内容只会匹配中文基础分词,或出现内容飘红不对。
同一个请求query中,设置2种及以上不同类型分词索引进行搜索召回,会导致不飘红或飘红异常。
如果飘红片段包含特殊字符,返回文档会过滤特殊字符;如果需要显示特殊字符,可以设置自定义子句kvpairs=filter_punc:0以跳过特殊字符过滤。