feat: There is no way the, Es 标题检索 优化标亮
This commit is contained in:
+17
-3
@@ -1369,6 +1369,10 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
|||||||
.should(QueryBuilders.wildcardQuery("yearOrder.keyword", searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1003f))
|
.should(QueryBuilders.wildcardQuery("yearOrder.keyword", searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1003f))
|
||||||
.should(QueryBuilders.wildcardQuery("nameTitle.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1002f))
|
.should(QueryBuilders.wildcardQuery("nameTitle.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1002f))
|
||||||
.should(QueryBuilders.wildcardQuery("title.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1000f));
|
.should(QueryBuilders.wildcardQuery("title.keyword", "*" + searchInfoEO.getSelectValue().toUpperCase() + "*").boost(1000f));
|
||||||
|
// queryBuilder1 = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),
|
||||||
|
// "sortTitle","numberTitle","yearOrder","nameTitle","title"
|
||||||
|
// ).field("sortTitle",1005f).field("numberTitle",1004f).field("yearOrder",1003f).field("nameTitle",1002f).field("title",1000f);
|
||||||
|
|
||||||
// queryBuilder1 = QueryBuilders.wildcardQuery("title.keyword","*" + searchInfoEO.getSelectValue() + "*");
|
// queryBuilder1 = QueryBuilders.wildcardQuery("title.keyword","*" + searchInfoEO.getSelectValue() + "*");
|
||||||
// queryBuilder1 = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),
|
// queryBuilder1 = QueryBuilders.multiMatchQuery(searchInfoEO.getSelectValue(),
|
||||||
// "title"
|
// "title"
|
||||||
@@ -1452,7 +1456,9 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
|||||||
|
|
||||||
//高亮标题覆盖原标题
|
//高亮标题覆盖原标题
|
||||||
String titleStr = sourceAsMap.get("title").toString();
|
String titleStr = sourceAsMap.get("title").toString();
|
||||||
titleStr = titleStr.replace(searchInfoEO.getSelectValue(),"<span class='highlight-Es-class'>"+searchInfoEO.getSelectValue()+"</span>");
|
int i = indexOfToKMP(titleStr.toUpperCase(), searchInfoEO.getSelectValue().toUpperCase(), 0, getNextValInstance());
|
||||||
|
String selectValue = titleStr.substring(i,i+searchInfoEO.getSelectValue().length());
|
||||||
|
titleStr = titleStr.replace(selectValue,"<span class='highlight-Es-class'>"+selectValue+"</span>");
|
||||||
if(StringUtils.isNotBlank(textStatusColor)){
|
if(StringUtils.isNotBlank(textStatusColor)){
|
||||||
sourceAsMap.put("title", "<span class='"+textStatusColor+"'>"+titleStr+"</span>");
|
sourceAsMap.put("title", "<span class='"+textStatusColor+"'>"+titleStr+"</span>");
|
||||||
}else {
|
}else {
|
||||||
@@ -1481,8 +1487,16 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
String str = "GB B005-2022 啊啊啊啊啊";
|
||||||
|
String str1 = "B005";
|
||||||
|
int i = indexOfToKMP(str, str1, 0, getNextValInstance());
|
||||||
|
System.out.println(i);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// 改进版的nextVal数组
|
// 改进版的nextVal数组
|
||||||
public NextArray getNextValInstance() {
|
public static NextArray getNextValInstance() {
|
||||||
return target -> {
|
return target -> {
|
||||||
// 初始化数组大小
|
// 初始化数组大小
|
||||||
int[] nextVal = new int[target.length()];
|
int[] nextVal = new int[target.length()];
|
||||||
@@ -1518,7 +1532,7 @@ public class SearchCenterServiceImpl implements SearchCenterService {
|
|||||||
* @param nextArray 函数式接口,传入获取next数组的方法(因为next数组上面定义了两种获取方式)
|
* @param nextArray 函数式接口,传入获取next数组的方法(因为next数组上面定义了两种获取方式)
|
||||||
* @return 目标字符串在源字符串中第一次出现的索引位置
|
* @return 目标字符串在源字符串中第一次出现的索引位置
|
||||||
*/
|
*/
|
||||||
public int indexOfToKMP(String source, String target, int pos, NextArray nextArray) {
|
public static int indexOfToKMP(String source, String target, int pos, NextArray nextArray) {
|
||||||
int i, j;
|
int i, j;
|
||||||
// 调用接口中的方法,获取next数组
|
// 调用接口中的方法,获取next数组
|
||||||
int[] next = nextArray.getNext(target);
|
int[] next = nextArray.getNext(target);
|
||||||
|
|||||||
Reference in New Issue
Block a user