From 8ef42c8be46d3a50ccedbbff00b7a3a8888ec1ce Mon Sep 17 00:00:00 2001 From: zhn <947514737@qq.com> Date: Thu, 31 Mar 2022 18:03:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3=E5=BA=93--=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=E4=B8=AD=E8=8B=B1=E6=96=87=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/document/enums/SearchEnum.java | 4 +- .../BussDocumentLibraryEOServiceImpl.java | 289 +++++++++++++----- .../impl/DocumentSearchServiceImpl.java | 54 ++-- .../modules/searchcenter/vo/SearchVO.java | 52 +--- 4 files changed, 250 insertions(+), 149 deletions(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/enums/SearchEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/enums/SearchEnum.java index 6fc880e4c..279e77bcd 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/enums/SearchEnum.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/enums/SearchEnum.java @@ -8,7 +8,9 @@ package com.jero.modules.document.enums; public enum SearchEnum { INDEX_NAME_DOCUMENT("文档库索引名称","documentLibrary"), TYPE_NAME_DOCUMENT("文档库类型","document"), - FULL_TEXT_SEARCH("全部","fulltextsearch"); + FULL_TEXT_SEARCH("全部中文","fulltextsearchcn"), + FULL_TEXT_SEARCH_CN("全部中文","fulltextsearchcn"), + FULL_TEXT_SEARCH_EN("全部英文","fulltextsearchen"); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java index 0a8356fc8..7392f2d44 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/document/service/impl/BussDocumentLibraryEOServiceImpl.java @@ -220,9 +220,17 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl> fileTextList = new ArrayList<>(); List oSSFileAll = new ArrayList<>(); try { + for (Map.Entry entry : map.entrySet()) { String key = entry.getKey(); Object value = entry.getValue(); //es全文新增数据(数据转换) - esFullText(cut, fieldList, categoryList, dictItemList, mapList, sb, entry); + esFullText(cut, fieldList, categoryList, dictItemList, mapList, sbCn,sbEn, entry); //处理日期格式 if (fieldDateList.contains(key)) { @@ -1170,11 +1181,13 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl fileIdList = oSSFileAll.stream().map(OSSFile::getId).collect(Collectors.toList()); List fileInfos = iOSSFileService.getFileInfos(StringUtils.join(fileIdList, ",")); - List> mapListTemp = new ArrayList<>(); + List> mapListTempCn = new ArrayList<>(); + List> mapListTempEn = new ArrayList<>(); try { if (fileInfos.size() != 0) { for (OSSFile ossFile : fileInfos) { - Map stringMap = new HashMap<>(); + Map stringMapCn = new HashMap<>(); + Map stringMapEn = new HashMap<>(); String fileText = ""; if (ossFile.getFileName().endsWith(".doc") || ossFile.getFileName().endsWith(".docx") @@ -1207,38 +1220,73 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl stringMap = new HashMap<>(); + Map stringMapCn = new HashMap<>(); + Map stringMapEn = new HashMap<>(); for (OnlCgformField onlCgformField : searchFieldList) { String s = (String) map.get(onlCgformField.getDbFieldName()); // if (StringUtils.isBlank(s)) { // s = ""; // } if(StringUtils.isNotBlank(s)){ - stringMap.put(onlCgformField.getDbFieldName(), s); + stringMapCn.put(onlCgformField.getDbFieldName(), s); + stringMapEn.put(onlCgformField.getDbFieldName(), s); } } - stringMap.put("id", idTemp); - stringMap.put("module_type", "文档库"); - stringMap.put("serial_number", map.get("serial_number")); - stringMap.put("title", map.get("title")); - stringMap.put("content", sb.toString()); - stringMap.put("file_text", ""); - stringMap.put("file_name", ""); - mapListTemp.add(stringMap); + String cutCn = CutEnum.CN.getValue(); + String cutEn = CutEnum.EN.getValue(); + //封装中文的全文内容(es) + putMapCn(idTemp, + (String) map.get("serial_number"), + "文档库", + sbCn.toString(), + (String) map.get("title"), + "", + "", + cutCn, + stringMapCn); + //封装英文的全文内容(es) + putMapCn(idTemp, + (String) map.get("serial_number"), + "document library", + sbEn.toString(), + (String) map.get("title"), + "", + "", + cutEn, + stringMapEn); + mapListTempCn.add(stringMapCn); + mapListTempEn.add(stringMapEn); } @@ -1262,13 +1310,13 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl fieldList, List categoryList, List dictItemList, List> mapList, StringBuilder sb, Map.Entry entry) { + private void esFullText(String cut, List fieldList, + List categoryList, + List dictItemList, + List> mapList, + StringBuilder sbCn, StringBuilder sbEn, + Map.Entry entry) { try { List onlCgformFieldList = fieldList.stream().filter(e -> entry.getKey().equals(e.getDbFieldName())).collect(Collectors.toList()); for (OnlCgformField onlCgformField : fieldList) { + String fieldNameCn = onlCgformField.getDbFieldTxt(); + String fieldNameEn = onlCgformField.getDbFieldEnName(); //输入框 if ((FieldTypeEnum.TEXT_STRING.getValue().equals(onlCgformField.getFieldShowType()) || FieldTypeEnum.TEXT_NUMBER.getValue().equals(onlCgformField.getFieldShowType())) && onlCgformField.getDbFieldName().equals(entry.getKey())) { if (ObjectUtils.isEmpty(entry.getValue())) { - sb.append(onlCgformField.getDbFieldTxt() + ":" + "-- "); + sbCn.append(fieldNameCn + ":" + "-- "); + sbEn.append(fieldNameEn + ":" + "-- "); } else { - sb.append(onlCgformField.getDbFieldTxt() + ":" + entry.getValue() + " "); + sbCn.append(fieldNameCn + ":" + entry.getValue() + " "); + sbEn.append(fieldNameEn + ":" + entry.getValue() + " "); } } //下拉框 @@ -1332,25 +1389,32 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl dictItems = dictItemList.stream() .filter(e -> StringUtils.isNotBlank(e.getDictCode()) && e.getDictCode().equals(onlCgformFieldList.get(0).getDictField())) .collect(Collectors.toList()); - StringBuilder sbText = new StringBuilder(); + StringBuilder sbTextCn = new StringBuilder(); + StringBuilder sbTextEn = new StringBuilder(); //处理数据字典 for (String item : entry.getValue().toString().split(",")) { if (dictItems.size() != 0) { List itemValue = dictItems.stream().filter(e -> item.equals(e.getItemValue())).collect(Collectors.toList()); if (itemValue.size() != 0) { - sbText.append(itemValue.get(0).getItemText() + ","); + sbTextCn.append(itemValue.get(0).getItemText() + ","); + sbTextEn.append(itemValue.get(0).getEnName() + ","); } } } - if (StringUtils.isNotBlank(sbText)) { - String substring = sbText.substring(0, sbText.length() - 1); - sb.append(onlCgformField.getDbFieldTxt() + ":" + substring + " "); + if (StringUtils.isNotBlank(sbTextCn)) { + String substring = sbTextCn.substring(0, sbTextCn.length() - 1); + sbCn.append(fieldNameCn + ":" + substring + " "); + } + if (StringUtils.isNotBlank(sbTextEn)) { + String substring = sbTextEn.substring(0, sbTextEn.length() - 1); + sbEn.append(fieldNameEn + ":" + substring + " "); } } } @@ -1359,19 +1423,19 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl idList = Arrays.asList(entry.getValue().toString().split(",")); List sysCategoryList = categoryList.stream().filter(e -> idList.contains(e.getId())).collect(Collectors.toList()); List nameList = sysCategoryList.stream().map(SysCategory::getName).collect(Collectors.toList()); List nameEnList = sysCategoryList.stream().map(SysCategory::getEnName).collect(Collectors.toList()); - if (CutEnum.CN.getValue().equals(cut)) { - sbTree.append(StringUtils.join(nameList, ",")); - } else { - sbTree.append(StringUtils.join(nameEnList, ",")); - } - sb.append(onlCgformField.getDbFieldTxt() + ":" + sbTree.toString() + " "); + sbTreeCn.append(StringUtils.join(nameList, ",")); + sbTreeEn.append(StringUtils.join(nameEnList, ",")); + sbCn.append(fieldNameCn + ":" + sbTreeCn.toString() + " "); + sbEn.append(fieldNameEn + ":" + sbTreeEn.toString() + " "); } } @@ -1379,16 +1443,19 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl fileInfos = iOSSFileService.getFileInfos((String) entry.getValue()); List fileNameList = fileInfos.stream().map(OSSFile::getFileName).collect(Collectors.toList()); - sb.append(onlCgformField.getDbFieldTxt() + ":" + StringUtils.join(fileNameList, ",") + " "); + sbCn.append(fieldNameCn + ":" + StringUtils.join(fileNameList, ",") + " "); + sbEn.append(fieldNameEn + ":" + StringUtils.join(fileNameList, ",") + " "); } } } @@ -1548,7 +1618,7 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl mapNew = new LinkedHashMap<>(); @@ -1568,11 +1638,13 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl oSSFileAll = new ArrayList<>(); + StringBuilder sbCn = new StringBuilder(); + StringBuilder sbEn = new StringBuilder(); for (Map.Entry entry : mapNew.entrySet()) { String key = entry.getKey(); Object value = entry.getValue(); //es全文新增数据(数据转换) - esFullText(cut, fieldList, categoryList, dictItemList, listMap, sb, entry); + esFullText(cut, fieldList, categoryList, dictItemList, listMap, sbCn,sbEn, entry); if (ObjectUtils.isNotEmpty(value)) { //处理修改人和修改时间 @@ -1630,11 +1702,13 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl fileIdList = oSSFileAll.stream().map(OSSFile::getId).collect(Collectors.toList()); List fileInfos = iOSSFileService.getFileInfos(StringUtils.join(fileIdList, ",")); - List> mapListTemp = new ArrayList<>(); + List> mapListTempCn = new ArrayList<>(); + List> mapListTempEn = new ArrayList<>(); try { if (fileInfos.size() != 0) { for (OSSFile ossFile : fileInfos) { - Map stringMap = new HashMap<>(); + Map stringMapCn = new HashMap<>(); + Map stringMapEn = new HashMap<>(); String fileText = ""; if (ossFile.getFileName().endsWith(".doc") || ossFile.getFileName().endsWith(".docx") @@ -1669,21 +1743,40 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl stringMap = new HashMap<>(); + Map stringMapCn = new HashMap<>(); + Map stringMapEn = new HashMap<>(); for (OnlCgformField onlCgformField : searchFieldList) { String s = (String) map.get(onlCgformField.getDbFieldName()); if(FieldTypeEnum.DATE_SINGLE.getValue().equals(onlCgformField.getFieldShowType()) && StringUtils.isNotBlank(s)){ @@ -1693,17 +1786,35 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl objectMap : mapListTemp) { - jeroElasticsearchTemplate.delete(SearchEnum.FULL_TEXT_SEARCH.getValue(), SearchEnum.FULL_TEXT_SEARCH.getValue(), (String) objectMap.get("id")); + //删除全部中文 + for (Map objectMap : mapListTempCn) { + jeroElasticsearchTemplate.delete(SearchEnum.FULL_TEXT_SEARCH_CN.getValue(), SearchEnum.FULL_TEXT_SEARCH_CN.getValue(), (String) objectMap.get("id")); + } + //删除全部中文 + for (Map objectMap : mapListTempEn) { + jeroElasticsearchTemplate.delete(SearchEnum.FULL_TEXT_SEARCH_EN.getValue(), SearchEnum.FULL_TEXT_SEARCH_EN.getValue(), (String) objectMap.get("id")); } jeroElasticsearchTemplate.saveOrUpdate(SearchEnum.INDEX_NAME_DOCUMENT.getValue(), SearchEnum.TYPE_NAME_DOCUMENT.getValue(), (String) map.get("id"), jsonObject); //添加全文 - jeroElasticsearchTemplate.saveBatch(SearchEnum.FULL_TEXT_SEARCH.getValue(), SearchEnum.FULL_TEXT_SEARCH.getValue(), array); -// jeroElasticsearchTemplate.saveOrUpdate(SearchEnum.FULL_TEXT_SEARCH.getValue(), SearchEnum.FULL_TEXT_SEARCH.getValue(), (String) map.get("id"), jsonObjectAll); + jeroElasticsearchTemplate.saveBatch(SearchEnum.FULL_TEXT_SEARCH_CN.getValue(), SearchEnum.FULL_TEXT_SEARCH_CN.getValue(), arrayCn); + jeroElasticsearchTemplate.saveBatch(SearchEnum.FULL_TEXT_SEARCH_EN.getValue(), SearchEnum.FULL_TEXT_SEARCH_EN.getValue(), arrayEn); } catch (Exception e) { log.error("文档库编辑es失败"); } @@ -3866,4 +3981,18 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl stringMap){ + stringMap.put("id", id); + stringMap.put("serial_number", serialNumber); + stringMap.put("module_type", moduleType); + stringMap.put("content", content); + stringMap.put("title", title); + stringMap.put("file_text", fileText); + stringMap.put("file_name", fileName); + stringMap.put("cut",cut); + + } + } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/DocumentSearchServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/DocumentSearchServiceImpl.java index 85156bdec..8dd63e3f9 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/DocumentSearchServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/DocumentSearchServiceImpl.java @@ -463,10 +463,17 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { @Override public IPage getFullTextInfoList(SearchVO searchVO) { //判断索引是否存在 - boolean flagTemp = jeroElasticsearchTemplate.indexExists(SearchEnum.FULL_TEXT_SEARCH.getValue()); + boolean flagTemp = true; + if(CutEnum.CN.getValue().equals(searchVO.getCut())){ + flagTemp = jeroElasticsearchTemplate.indexExists(SearchEnum.FULL_TEXT_SEARCH_CN.getValue()); + }else{ + flagTemp = jeroElasticsearchTemplate.indexExists(SearchEnum.FULL_TEXT_SEARCH_EN.getValue()); + } + if (!flagTemp) { return new Page(searchVO.getPageNo(), searchVO.getPageSize()); } + String selectValue = searchVO.getSelectValue(); String selectValueTwo = searchVO.getSelectValueTwo(); //不查询高亮字段 @@ -523,7 +530,7 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { queryMapJsonAll.add(jsonObjectTwo); } - IPage page = getiPage(selectValue, selectValueTwo, queryMapJsonAll, null, pageNo, pageSize, null); + IPage page = getiPage(selectValue, selectValueTwo, queryMapJsonAll, null, pageNo, pageSize, null,searchVO.getCut()); return page; @@ -531,7 +538,8 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { } @NotNull - private IPage getiPage(String selectValue, String selectValueTwo, JSONArray queryMapJson, JSONArray should, Integer pageNo, Integer pageSize, String paragraphFlag) { + private IPage getiPage(String selectValue, String selectValueTwo, JSONArray queryMapJson, + JSONArray should, Integer pageNo, Integer pageSize, String paragraphFlag,String cut) { JSONObject jsonObject = new JSONObject(); //基础添加封装 if ("paragraphFlag".equals(paragraphFlag)) { @@ -549,22 +557,16 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { pageSize); // JSONObject queryObject11 = jeroElasticsearchTemplate.buildQuery(null, jsonObject11,highlightMap,null, Integer.parseInt(map.get("pageNo").toString()), Integer.parseInt(map.get("pageSize").toString())); //2. 数据查询 - JSONObject search = jeroElasticsearchTemplate.search(SearchEnum.FULL_TEXT_SEARCH.getValue(), - SearchEnum.FULL_TEXT_SEARCH.getValue(), - queryObject); - - - JSONObject queryObjectAll = jeroElasticsearchTemplate.buildQuery(null, - null, - null, - null, - pageNo-1, - pageSize); - //全部的数据(调试接口用--最后删除即可) - JSONObject searchAll = jeroElasticsearchTemplate.search(SearchEnum.FULL_TEXT_SEARCH.getValue(), - SearchEnum.FULL_TEXT_SEARCH.getValue(), - queryObjectAll); - + JSONObject search = new JSONObject(); + if(CutEnum.CN.getValue().equals(cut)){ + search = jeroElasticsearchTemplate.search(SearchEnum.FULL_TEXT_SEARCH_CN.getValue(), + SearchEnum.FULL_TEXT_SEARCH_CN.getValue(), + queryObject); + }else{ + search = jeroElasticsearchTemplate.search(SearchEnum.FULL_TEXT_SEARCH_EN.getValue(), + SearchEnum.FULL_TEXT_SEARCH_EN.getValue(), + queryObject); + } List> list = (List>) (((Map) search.get("hits")).get("hits")); @@ -758,7 +760,8 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { @Override public void deleteAll() { jeroElasticsearchTemplate.removeIndex(SearchEnum.INDEX_NAME_DOCUMENT.getValue()); - jeroElasticsearchTemplate.removeIndex(SearchEnum.FULL_TEXT_SEARCH.getValue()); + jeroElasticsearchTemplate.removeIndex(SearchEnum.FULL_TEXT_SEARCH_CN.getValue()); + jeroElasticsearchTemplate.removeIndex(SearchEnum.FULL_TEXT_SEARCH_EN.getValue()); } @@ -770,9 +773,16 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { */ @Override public IPage getParagraphInfoList(Map map) { + String cut = (String) map.get("cut"); //module_type 代表文档库的段落 //判断索引是否存在 - boolean flagTemp = jeroElasticsearchTemplate.indexExists(SearchEnum.FULL_TEXT_SEARCH.getValue()); + boolean flagTemp = true; + if(CutEnum.CN.getValue().equals(cut)){ + flagTemp = jeroElasticsearchTemplate.indexExists(SearchEnum.FULL_TEXT_SEARCH_CN.getValue()); + }else{ + flagTemp = jeroElasticsearchTemplate.indexExists(SearchEnum.FULL_TEXT_SEARCH_EN.getValue()); + } + if (!flagTemp) { return new Page(Integer.parseInt(map.get("pageNo").toString()), Integer.parseInt(map.get("pageSize").toString())); } @@ -843,7 +853,7 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { String paragraphFlag = "paragraphFlag"; - IPage iPage = getiPage(selectValue, selectValueTwo, must, should, pageNo, pageSize, paragraphFlag); + IPage iPage = getiPage(selectValue, selectValueTwo, must, should, pageNo, pageSize, paragraphFlag,(String) map.get("cut")); return iPage; } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/vo/SearchVO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/vo/SearchVO.java index 77f37f27a..df671824a 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/vo/SearchVO.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/vo/SearchVO.java @@ -14,19 +14,11 @@ public class SearchVO { private String ids; //记录从哪个索引表中查数据 private String selectIndex; - - - private String keywords; - private String resultKeyword; - - - // 条目搜索条件 - private String itemsName; - private String itemsNum; - private String parts; private Integer pageNo; private Integer pageSize; + private String cut; + public Integer getPageNo() { return pageNo; } @@ -75,43 +67,11 @@ public class SearchVO { this.selectIndex = selectIndex; } - public String getKeywords() { - return keywords; + public String getCut() { + return cut; } - public void setKeywords(String keywords) { - this.keywords = keywords; - } - - public String getResultKeyword() { - return resultKeyword; - } - - public void setResultKeyword(String resultKeyword) { - this.resultKeyword = resultKeyword; - } - - public String getItemsName() { - return itemsName; - } - - public void setItemsName(String itemsName) { - this.itemsName = itemsName; - } - - public String getItemsNum() { - return itemsNum; - } - - public void setItemsNum(String itemsNum) { - this.itemsNum = itemsNum; - } - - public String getParts() { - return parts; - } - - public void setParts(String parts) { - this.parts = parts; + public void setCut(String cut) { + this.cut = cut; } }