一种模拟Elasticsearch处理高亮的方法
文献发布时间:2024-04-18 19:58:26
技术领域
本发明涉及页面处理技术领域,具体为一种模拟Elasticsearch处理高亮的方法。
背景技术
当用户根据某个关键字查询一些文本内容时候,需要比较直观的看到自己所查内容是否满足自己的需求;或是某些关键字与文本内容已经做过特殊符号,关键字不能直接与文本内容直接匹配。那么就需要有这么一个方法,能将文本内容与关键字相关的内容比较直观的呈现出来。而常用的方法是Replace,但它有局限,当有多个关键字、html标签正好包含关键字,这样转换出来就会出问题,因此,针对上述问题提出一种模拟Elasticsearch处理高亮的方法。
发明内容
本发明的目的在于提供一种模拟Elasticsearch处理高亮的方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
一种模拟Elasticsearch处理高亮的方法,包括如下步骤:
步骤一:定义方法名、两个接收参数,一个源文本value,一个关键字列表keywords;
步骤二:定义操作过程所需要的相关变量;
步骤三:遍历关键字列表、记录相关信息,在循环体中,为每个关键字添加特殊字符串正则表达式,设为变量k,用k去匹配源文,若有匹配到相应的字符串,设为tmp,tmp的长度为length;
步骤四:对highList按item中的index从小到大排序、创建起始位置变量posi=0;
步骤五:遍历highList,构造高亮文本;
步骤六:将value从posi到value.length位置的字符串append到result中。这样文本就替换完成;
步骤七:返回result.toString()。
优选的,步骤二的具体操作为:
对关键字列表按长到短排序;
创建文本内容副本sourceTmp;
创建关键字所在文本的信息item对象(属性:index、length、content);
创建存放item对象的列表highList;
创建替换文件字符串存储StringBuffer。
优选的,步骤三中,用indexOf找出tmp在sourceTmp的第一个位置,设置index,并将sourceTmp中的tmp的第一个位置length个#替换。用tmp构造高亮文本content。将index、length、content构造item实体并添加,到highList。
优选的,步骤五中,将value从posi到item.index位置的字符串append到result中。
优选的,步骤五中,将item.content append到result中,将posi值改为item.index+item.length。
与现有技术相比,本发明的有益效果是:根据正则、Replace等方法,找出源文本匹配的关键字,对关键的长度进行排序,最终把关键字替换带有样式的html标签。
附图说明
图1为本发明一种模拟Elasticsearch处理高亮的方法流程示意图。
具体实施方式
下为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
需要说明的是,当元件被称为“固定于”或“设置于”另一个元件,它可以直接在另一个元件上或者间接在该另一个元件上。当一个元件被称为是“连接于”另一个元件,它可以是直接连接到另一个元件或间接连接至该另一个元件上。
在本发明的描述中,需要理解的是,术语“长度”、“宽度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
为了更好地理解上述技术方案,下面将结合说明书附图以及具体实施方式对上述技术方案进行详细的说明。
实施例:
请参阅图1,本实施例提供一种技术方案:
一种模拟Elasticsearch处理高亮的方法,具体步骤如下:
步骤1:定义方法名、两个接收参数,一个源文本value,一个关键字列表keywords
步骤2:定义操作过程所需要的相关变量
对关键字列表按长到短排序;
创建文本内容副本sourceTmp;
创建关键字所在文本的信息item对象(属性:index、length、content);
创建存放item对象的列表highList;
创建替换文件字符串存储StringBuffer;
步骤3:遍历关键字列表、记录相关信息
在循环体中:
为每个关键字添加特殊字符串正则表达式,设为变量k;
用k去匹配源文,若有匹配到相应的字符串,设为tmp,tmp的长度为length;
用indexOf找出tmp在sourceTmp的第一个位置,设置index,并将sourceTmp中的tmp的第一个位置length个#替换。用tmp构造高亮文本content。将index、length、content构造item实体并添加,到highList;
步骤4:对highList按item中的index从小到大排序、创建起始位置变量posi=0;
步骤5:遍历highList,构造高亮文本;
在循环体中
将value从posi到item.index位置的字符串append到result中;
将item.content append到result中;
将posi值改为item.index+item.length;
步骤6:将value从posi到value.length位置的字符串append到result中。这样文本就替换完成;
步骤7:返回result.toString()。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
- 一种基于国产环境的Elasticsearch数据动态处理方法
- 一种基于Elasticsearch的大数据分析处理方法及装置