结果高亮
在展示搜索结果的时候,用户希望可以一目了解地看到搜索词匹配上的对象。不管是在 Google 还是百度等现代搜索引擎中,搜索高亮都成了标准配置。而智能地显示结果高亮和摘要,对于提升用户体验和转化有非常重要的作用。
比如说,如果用户搜索关于 iPhone
的文章,那么在标题或摘要中显示 iPhone
并且用高亮色表示出来,将会极大地提升用户体验。用户搜索时如果结果更容易找到和视觉上发现,则更有可能点击和转化。比如说,下图是在 Google 搜索 最快 手机
时出现的高亮的例子
在卡拉搜索中,我们提供 highlightFields
搜索选项用来高亮查询词在字段中的结果。你只需要在后台添加几个最基本的配置,就可以为你的用户提供极致的结果高亮。
调整索引高亮设置
默认情况下,引擎的搜索返回结果中不含高亮。如果需要结果高亮的话,需要到卡拉搜索后台,指定需要高亮的字段和展示的方式即可。
在后台为索引调整高亮设置时,仅需指定你要高亮的字段,和需要的高亮结果标签(作用请参考下一节)。如果在索引中设置了高亮字段,默认对所有的搜索请求,服务器都会返回设置的高亮结果。比如说,如需将字段 title
和 summary
设置为高亮字段,我们只需要在对应的索引设置中,将title
标题和summary
摘要字段添加到高亮字段列表中。
高亮结果标签
高亮的结果会将对应字段的被高亮部分,用 HTML 标签或是其它你设置的标签强调出来。比如说,如果你的字段是 大话西游
,用户搜索 大话
时,默认即会返回
<strong>大话</strong>西游
其中,<strong>
是 HTML 里的加粗强调标签。
对于 iOS,安卓端或小程序,你可以在卡拉搜索后台为索引定制对应的标签以实现高亮显示。甚至如果你需要在高亮时动态调整 CSS 式样,比如高亮颜色,也可以将其 CSS 类名指定在标签中。
高亮结果摘要
在返回高亮结果时,如果有大于 3 个句子含有搜索词,卡拉引擎会智能地从整个字段中挑选三句最有代表性的句子。同时保持这几个句子间的顺序,以保证可读性。如果字段未匹配任何搜索词,那么引擎会用该字段的前 3 个句子作为摘要。
哪些字段适合高亮
通常我们建议,将一些摘要性的字段作为高亮结果。比如说
- 标题或商品名称
- 描述商品或文章的摘要
- 简短的说明文字
对于正文或长篇文字,特别是关键词出现频率较高的情况下,高亮可能会让用户失去焦点,从而影响搜索体验。因此,如果需要全文高亮,我们建议仅摘取其中一小部分(通常是开头)来进行高亮。
高亮字段
请注意,要使一个高亮字段生效,这个字段需要同时满足两个条件
- 高亮的字段是字符串类型:数字、布尔变量等无法高亮
- 字段在对象中的确存在
只有同时满足了两个条件,API 才会返回高亮结果。
高亮搜索结果示例
在搜索结果的 hits
字段中,如果有设置高亮字段,则会在 hits.highlights.${fieldName}
中出现。在下面的示例中,用户搜索 大话
,结果中,字段 summary
和 title
均被设置为需要高亮。
每个返回的高亮字段中含有两个值
snippet
: 即被高亮的字段,高亮部分被设置的高亮标签标出hasMatch
: 布尔变量,表明该字段中是否有匹配关键字的高亮出现
在下面的例子中,字段 summary
中没有匹配搜索词 大话
,而标题 title
中,则含有匹配
{"totalHits": 1,"hits": [{"id": "n_u-QXQBFAjd3marbeiR","source": {"title": "大话西游","summary": "一部周星驰主演的爱情喜剧片"},"highlights": {"summary": {"snippet": "一部周星驰主演的爱情喜剧片","hasMatch": false},"title": {"snippet": "<strong>大话</strong>西游","hasMatch": true}}}],"queryTimeUsed": 0}