文档库--全文搜索(优先展示正文,正文不匹配则展示拼接内容)
This commit is contained in:
-9
@@ -1413,7 +1413,6 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
|
|||||||
StringBuilder valuesBuilder = new StringBuilder();
|
StringBuilder valuesBuilder = new StringBuilder();
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
List<List<String>> fileTextList = new ArrayList<>();
|
|
||||||
List<OSSFile> oSSFileAll = new ArrayList<>();
|
List<OSSFile> oSSFileAll = new ArrayList<>();
|
||||||
for (Map.Entry<String, Object> entry : map.entrySet()) {
|
for (Map.Entry<String, Object> entry : map.entrySet()) {
|
||||||
String key = entry.getKey();
|
String key = entry.getKey();
|
||||||
@@ -1475,14 +1474,6 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
|
|||||||
fieldsBuilder.append(key + ",");
|
fieldsBuilder.append(key + ",");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Map<String,Object> mapFullText = new HashMap<>();
|
|
||||||
mapFullText.put("id", id);
|
|
||||||
mapFullText.put("module_type", "文档库");
|
|
||||||
mapFullText.put("serial_number", map.get("serial_number"));
|
|
||||||
mapFullText.put("title", map.get("title"));
|
|
||||||
mapFullText.put("file_text", fileTextList);
|
|
||||||
mapFullText.put("content", sb.toString());
|
|
||||||
|
|
||||||
List<String> fileIdList = oSSFileAll.stream().map(OSSFile::getId).collect(Collectors.toList());
|
List<String> fileIdList = oSSFileAll.stream().map(OSSFile::getId).collect(Collectors.toList());
|
||||||
List<OSSFile> fileInfos = iOSSFileService.getFileInfos(StringUtils.join(fileIdList, ","));
|
List<OSSFile> fileInfos = iOSSFileService.getFileInfos(StringUtils.join(fileIdList, ","));
|
||||||
List<Map<String,Object>> mapListTemp = new ArrayList<>();
|
List<Map<String,Object>> mapListTemp = new ArrayList<>();
|
||||||
|
|||||||
+31
-20
@@ -497,34 +497,45 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
|
|||||||
//二次查询
|
//二次查询
|
||||||
int count = 0;
|
int count = 0;
|
||||||
for (Map.Entry<String, Object> entry : mapSource.entrySet()) {
|
for (Map.Entry<String, Object> entry : mapSource.entrySet()) {
|
||||||
String key = entry.getKey();
|
|
||||||
String value = (String) entry.getValue();
|
String value = (String) entry.getValue();
|
||||||
//二次搜索的file_text是在一次搜索的基础上
|
|
||||||
if("file_text".equals(key)){
|
|
||||||
//判断value中是否包含首次搜索中的字符
|
|
||||||
boolean flag = judgeContains(value, selectValue);
|
|
||||||
if(flag){
|
|
||||||
//截取第一处高亮的前后100个字符
|
|
||||||
value = getFileText(value, selectValue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//判断value中是否包含二次搜索中的字符
|
//判断value中是否包含二次搜索中的字符
|
||||||
boolean flag = judgeContains(value, selectValueTwo);
|
boolean flag = judgeContains(value, selectValueTwo);
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
if (flag) {
|
if (flag) {
|
||||||
//截取第一处高亮的前后100个字符
|
//截取第一处高亮的前后100个字符
|
||||||
value = getFileText(value, selectValue);
|
value = getFileText(value, selectValueTwo);
|
||||||
count++;
|
count++;
|
||||||
StringBuilder sb = new StringBuilder();
|
for (int i = 0; i < value.length(); i++) {
|
||||||
if (StringUtils.isNotBlank(value)) {
|
String chStr = String.valueOf(value.charAt(i));
|
||||||
|
//第一次的搜索条件也需要高亮
|
||||||
|
String condition = selectValueTwo + selectValue;
|
||||||
|
if (condition.contains(String.valueOf(chStr))) {
|
||||||
|
chStr = "<text class='highlight-class'>" + chStr + "</text>";
|
||||||
|
}
|
||||||
|
sb.append(String.valueOf(chStr));
|
||||||
|
}
|
||||||
|
entry.setValue(sb.toString());
|
||||||
|
}else{
|
||||||
|
//第二次搜索的时候file_text中不包含搜索条件的时候将file_text赋值空(此时展示拼接的内容)
|
||||||
|
if("file_text".equals(entry.getKey())){
|
||||||
|
entry.setValue("");
|
||||||
|
}
|
||||||
|
count++;
|
||||||
|
//如果内容中不包含第二次搜索条件,则继续高亮第一处
|
||||||
|
//判断value中是否包含首次搜索中的字符(因为其他的字段有可能包含二次的搜索条件查出来的这条数据,所以还得判断value中是否包含首次搜索中的字符)
|
||||||
|
boolean flagOne = judgeContains(value, selectValue);
|
||||||
|
if(flagOne){
|
||||||
|
//如果包含第一次的搜索条件,先前后截取100字符后再高亮
|
||||||
|
value = getFileText(value, selectValue);
|
||||||
for (int i = 0; i < value.length(); i++) {
|
for (int i = 0; i < value.length(); i++) {
|
||||||
String chStr = String.valueOf(value.charAt(i));
|
String chStr = String.valueOf(value.charAt(i));
|
||||||
if (selectValueTwo.contains(String.valueOf(chStr))) {
|
if (selectValue.contains(String.valueOf(chStr))) {
|
||||||
chStr = "<text class='highlight-class'>" + chStr + "</text>";
|
chStr = "<text class='highlight-class'>" + chStr + "</text>";
|
||||||
}
|
}
|
||||||
sb.append(String.valueOf(chStr));
|
sb.append(String.valueOf(chStr));
|
||||||
}
|
}
|
||||||
|
entry.setValue(sb.toString());
|
||||||
}
|
}
|
||||||
entry.setValue(sb.toString());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
@@ -545,15 +556,14 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
|
|||||||
//判断value中是否包含搜索中的字符
|
//判断value中是否包含搜索中的字符
|
||||||
boolean flag = judgeContains(value, selectValue);
|
boolean flag = judgeContains(value, selectValue);
|
||||||
if(flag){
|
if(flag){
|
||||||
// mapSource.put("file_text_flag","true");
|
|
||||||
//截取第一处高亮的前后100个字符
|
//截取第一处高亮的前后100个字符
|
||||||
value = getFileText(value, selectValue);
|
value = getFileText(value, selectValue);
|
||||||
|
}else{
|
||||||
|
//第一次搜索的时候file_text中不包含搜索条件的时候将file_text赋值空(此时展示拼接的内容)
|
||||||
|
entry.setValue("");
|
||||||
|
value = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if("content".equals(key)){
|
|
||||||
//判断value中是否包含搜索中的字符
|
|
||||||
boolean flag = judgeContains(value, selectValue);
|
|
||||||
}
|
|
||||||
for (int i = 0; i < value.length(); i++) {
|
for (int i = 0; i < value.length(); i++) {
|
||||||
String chStr = String.valueOf(value.charAt(i));
|
String chStr = String.valueOf(value.charAt(i));
|
||||||
if (selectValue.contains(String.valueOf(chStr))) {
|
if (selectValue.contains(String.valueOf(chStr))) {
|
||||||
@@ -677,6 +687,7 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
|
|||||||
|| FieldTypeEnum.TEXT_NUMBER.getValue().equals(e.getFieldShowType()))
|
|| FieldTypeEnum.TEXT_NUMBER.getValue().equals(e.getFieldShowType()))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
List<String> inputFieldList = inputOnlCgformFieldList.stream().map(OnlCgformField::getDbFieldName).collect(Collectors.toList());
|
List<String> inputFieldList = inputOnlCgformFieldList.stream().map(OnlCgformField::getDbFieldName).collect(Collectors.toList());
|
||||||
|
inputFieldList.add("file_text");//在输入框的类型中添加正文字段
|
||||||
//下拉,树形,日期等字段
|
//下拉,树形,日期等字段
|
||||||
List<OnlCgformField> otherOnlCgformFieldList = fieldList.stream()
|
List<OnlCgformField> otherOnlCgformFieldList = fieldList.stream()
|
||||||
.filter(e -> FieldTypeEnum.PULL_SINGLE.getValue().equals(e.getFieldShowType())//下拉单选
|
.filter(e -> FieldTypeEnum.PULL_SINGLE.getValue().equals(e.getFieldShowType())//下拉单选
|
||||||
|
|||||||
Reference in New Issue
Block a user