我刚打酱油去了,不好意思

es高亮片段对带html标签的文本截取不全

Elasticsearch | 作者 a805727141 | 发布于2017年09月26日 | 阅读数:12041

我们公司后台管理用的类似富文本编辑器的kindeditor
在文本编辑器中编辑的内容会自动加上html标签

editor.png

 
自动加上的标签

element.png

 
然后在使用elasticsearch进行高亮搜索的时候,高亮片段却只截取到部分标签

match.png

 
当高亮文本传到jsp上时,因为标签的不全导致页面混乱

error.png

 
请各位支个高招,如何解决这个问题?
已邀请:

kennywu76 - Wood

赞同来自: tacsklet su_san

增加一个比如content_preview字段, 索引数据的时候,除了索引完整的包含html标签的字段,另外将html标签剥离掉,索引到这个content_preview字段。  highlight的时候用preview字段,显示完整原文用包含html标签的字段。

小板凳

赞同来自: qinyuezhan

我也是被这个问题困惑可好久,下面是解决方案(注意加粗的地方):

HighlightBuilder hiBuilder = new HighlightBuilder().field("title").field("description").field("content") 
.fragmentSize(800000)//最大高亮分片数 
.numOfFragments(0)//从第一个分片开始获取高亮片段
 .requireFieldMatch(false);
 
这样就可以显示全部了
 

hufuman

赞同来自:

索引里不要放html标签

a805727141

赞同来自:

你们在实际应用中都是把大量的文本全部去除html标签再索引到es里的?
没有其他更合适的方法吗?

白衬衣 - 金桥

赞同来自:

当然应该去除标签存储,难道这些标签在搜索的时候能展现格式吗?只有显示全部才需要格式。

sky_ - 程序猿

赞同来自:

请问大佬如何解决的 非常感谢
 

要回复问题请先登录注册