一、问题内容
对于搜索匹配结果关键词高亮显示,通过solr的hl.simple.pre和hl.simple.post的接口参数可以设置(详情见其相关参数配置示例页面),但之前本站搜索结果内老是出现“undefined“的记录,如下图所示
二、解决方法
1. 搜索结果标题通过result - doc节点显示内容,通过result -highlighting显示匹配到高亮部分的对应内容,如下图
2. 对于匹配到highlighting区域标题、摘要及关键词内容存在hl_title、hl_zhaiyao及hl_keywords属性进行返回,但是对于没有匹配,只会显示在result-doc部分
3. 但是对于之前前端js脚本没有考虑没有返回的情况,如下图
$("#search_list").append(@b@ tdata.replace(/{{url}}/g,"/_site_domain_"+root["data"][i].url)@b@ .replace(/{{title}}/g,root["data"][i].hl_title)@b@ .replace(/{{zhaiyao}}/g,root["data"][i].hl_zhaiyao)@b@ .replace(/{{keywords}}/g,root["data"][i].hl_keywords)@b@ .replace(/{{addtime}}/g,root["data"][i].createtime.substring(0,10)) @b@ .replace(/{{score}}/g,_score) @b@ @b@ );
改为如下所示
var stitle=root["data"][i].hl_title;@b@ var szhaiyao=root["data"][i].hl_zhaiyao;@b@ var skwords=root["data"][i].hl_keywords;@b@ @b@ if(stitle==null||stitle==''||stitle==undefined){@b@ stitle=root["data"][i].title;@b@ }@b@ @b@ if(szhaiyao==null||szhaiyao==''||szhaiyao==undefined){@b@ szhaiyao=root["data"][i].zhaiyao;@b@ }@b@ @b@ if(skwords==null||skwords==''||skwords==undefined){@b@ skwords=root["data"][i].keywords;@b@ }@b@ @b@ $("#search_list").append(@b@ tdata.replace(/{{url}}/g,"/_site_domain_"+root["data"][i].url)@b@ .replace(/{{title}}/g,stitle)@b@ .replace(/{{zhaiyao}}/g,szhaiyao)@b@ .replace(/{{keywords}}/g,skwords)@b@ .replace(/{{addtime}}/g,root["data"][i].createtime.substring(0,10)) @b@ .replace(/{{score}}/g,_score) @b@ @b@ );