Browse Source

领域检索

xiaoqiao 7 months ago
parent
commit
794a52e2b5

+ 3 - 6
src/main/java/com/bowintek/practice/controller/EsIndexController.java

@@ -15,6 +15,7 @@ import com.bowintek.practice.vo.EsIndexfieldVo;
 import com.bowintek.practice.vo.user.UserInfoModel;
 import com.github.pagehelper.PageInfo;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -92,14 +93,10 @@ public class EsIndexController {
 
     @ResponseBody
     @GetMapping("/getAllList")
-    public BaseResponse<PageInfo<EsIndexVo>> getAllList() throws Exception {
 
-        PageInfo<EsIndexVo> result = esIndexService.getList(1, 999, null, null, null);
+    public BaseResponse<List<EsIndexVo>> getAllList() throws Exception {
 
-        result.getList().forEach(x->{
-            x.setFieldList( esIndexService.getFieldList(x.getIndexId(),null));
-        });
-        return RespGenerstor.success(result);
+        return RespGenerstor.success(esIndexService.getAllList());
     }
 
     @ResponseBody

+ 62 - 47
src/main/java/com/bowintek/practice/services/impl/AnalyzeServiceImpl.java

@@ -7,10 +7,13 @@ import com.alibaba.fastjson.JSON;
 import com.bowintek.practice.mapper.cquery.EsQueryKeywordCQuery;
 import com.bowintek.practice.model.EsQueryKeyword;
 import com.bowintek.practice.services.service.AnalyzeService;
+import com.bowintek.practice.services.service.EsIndexService;
 import com.bowintek.practice.util.StringUtils;
 import com.bowintek.practice.vo.Analyze.AnalyzeComparisonResult;
 import com.bowintek.practice.vo.Analyze.AnalyzeModel;
 import com.bowintek.practice.vo.Analyze.ComparisonResult;
+import com.bowintek.practice.vo.EsIndexVo;
+import com.bowintek.practice.vo.EsIndexfieldVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -32,6 +35,8 @@ public class AnalyzeServiceImpl implements AnalyzeService {
     private ElasticsearchClient esClient;
     @Autowired
     private EsQueryKeywordCQuery esQueryKeywordCQuery;
+    @Autowired
+    private EsIndexService esIndexService;
 
     private static Date refTime = null;
     private static boolean isInitStaticWords = false;
@@ -46,8 +51,8 @@ public class AnalyzeServiceImpl implements AnalyzeService {
     //对象分词
     private static HashMap<String, AnalyzeModel> mapObjects = new HashMap<>();
 
-    private void initStaticWords(){
-        if(isInitStaticWords) return;
+    private void initStaticWords() {
+        if (isInitStaticWords) return;
         isInitStaticWords = true;
 
         //对比符号
@@ -67,73 +72,83 @@ public class AnalyzeServiceImpl implements AnalyzeService {
         //无用分词
         addToMainDict(mapUseless, "的", "无用", "");
     }
-    private void initKeyWords(){
+
+    private void initKeyWords() {
         initStaticWords();
 
         //查找是否有记录需要更新
         String timeString = null;
-        if(refTime!=null) {
-            timeString = (refTime.getTime()/1000)+"";
-            System.out.println("timeString:"+timeString);
+        if (refTime != null) {
+            timeString = (refTime.getTime() / 1000) + "";
+            System.out.println("timeString:" + timeString);
         }
         List<EsQueryKeyword> dbList = esQueryKeywordCQuery.getList(null, timeString);
-        if(dbList.size()==0) return;
+        if (dbList.size() == 0) return;
 
-        for(int i=0;i<dbList.size();i++){
+        for (int i = 0; i < dbList.size(); i++) {
             EsQueryKeyword keyword = dbList.get(i);
             //同义词
             List<String> synonymList = new ArrayList<>();
-            if(!StringUtils.IsNullEmpty(keyword.getSynonymText())) {
+            if (!StringUtils.IsNullEmpty(keyword.getSynonymText())) {
                 synonymList.addAll(List.of(keyword.getSynonymText().split(",")));
             }
 
-            if(keyword.getKeywordType().equals("无用")){
+            if (keyword.getKeywordType().equals("无用")) {
                 addToMainDict(mapUseless, keyword.getKeywordName(), keyword.getKeywordType(), keyword.getEsIndexField());
                 addToMainDict(mapUseless, synonymList, keyword.getKeywordType(), keyword.getEsIndexField());
-            }
-            else if(keyword.getKeywordType().equals("对象")){
+            } else if (keyword.getKeywordType().equals("对象")) {
                 addToMainDict(mapObjects, keyword.getKeywordName(), keyword.getKeywordType(), keyword.getEsIndexField());
                 addToMainDict(mapObjects, synonymList, keyword.getKeywordType(), keyword.getEsIndexField());
-            }
-            else if(keyword.getKeywordType().equals("单位")){
+            } else if (keyword.getKeywordType().equals("单位")) {
                 addToMainDict(mapUnits, keyword.getKeywordName(), keyword.getKeywordType(), keyword.getEsIndexField());
                 addToMainDict(mapUnits, synonymList, keyword.getKeywordType(), keyword.getEsIndexField());
-            }
-            else if(keyword.getKeywordType().equals("对比符号")){
+            } else if (keyword.getKeywordType().equals("对比符号")) {
                 addToMainDict(mapSymbols, keyword.getKeywordName(), keyword.getKeywordType(), keyword.getEsIndexField());
                 addToMainDict(mapSymbols, synonymList, keyword.getKeywordType(), keyword.getEsIndexField());
-            }
-            else{
+            } else {
                 addToMainDict(mapAnalyze, keyword.getKeywordName(), keyword.getKeywordType(), keyword.getEsIndexField());
                 addToMainDict(mapAnalyze, synonymList, keyword.getKeywordType(), keyword.getEsIndexField());
             }
 
             //最大更新时间
-            if(refTime==null || refTime.getTime() < keyword.getCreateTime().getTime())
+            if (refTime == null || refTime.getTime() < keyword.getCreateTime().getTime())
                 refTime = keyword.getCreateTime();
         }
+        EsIndexVo indexModel = esIndexService.getAllList().get(0);
+
+        sysMainDict(indexModel.getFieldList());
+    }
+
+    private void sysMainDict(List<EsIndexfieldVo> fields) {
+        fields.forEach(it -> {
+            addToMainDict(mapAnalyze, it.getFieldName(), "维度", it.getFieldCode());
+            if (it.getChildFields() != null && it.getChildFields().size() > 0) {
+                sysMainDict(it.getChildFields());
+            }
+        });
     }
 
-    private void addToMainDict(HashMap<String, AnalyzeModel> map,String keyword, String keywordType, String esIndexField){
+    private void addToMainDict(HashMap<String, AnalyzeModel> map, String keyword, String keywordType, String esIndexField) {
         List<String> extStringList = new ArrayList<>(Arrays.stream(new String[]{keyword}).toList());
         addToMainDict(map, extStringList, keywordType, esIndexField);
     }
-    private void addToMainDict(HashMap<String, AnalyzeModel> map,List<String> extStringList, String keywordType, String esIndexField){
-        extStringList.forEach(keyword->{
+
+    private void addToMainDict(HashMap<String, AnalyzeModel> map, List<String> extStringList, String keywordType, String esIndexField) {
+        extStringList.forEach(keyword -> {
             map.put(keyword, AnalyzeModel.GenModel(keywordType, esIndexField));
         });
 
         //动态添加分词配置
         Collection<String> colls = new Stack<>();
         org.wltea.analyzer.dic.Dictionary dictionary = org.wltea.analyzer.dic.Dictionary.getSingleton();
-        for(int i=0;i<extStringList.size();i++){
+        for (int i = 0; i < extStringList.size(); i++) {
             Hit hit = dictionary.matchInMainDict(extStringList.get(i).trim().toLowerCase().toCharArray());
-            if(!hit.isMatch()){
-                System.out.println("initKeyWords:添加["+extStringList.get(i)+"]到MainDict");
+            if (!hit.isMatch()) {
+                System.out.println("initKeyWords:添加[" + extStringList.get(i) + "]到MainDict");
                 colls.add(extStringList.get(i));
             }
         }
-        if(colls.size()>0) dictionary.addWords(colls);
+        if (colls.size() > 0) dictionary.addWords(colls);
     }
 
     @Override
@@ -145,8 +160,7 @@ public class AnalyzeServiceImpl implements AnalyzeService {
             AnalyzeResponse response = esClient.indices().analyze(builder.build());
             System.out.println(response.toString());
             return response;
-        }
-        catch (Exception ex){
+        } catch (Exception ex) {
             ex.printStackTrace();
             return null;
         }
@@ -156,16 +170,16 @@ public class AnalyzeServiceImpl implements AnalyzeService {
     public List<AnalyzeResponse> analyzes(String text) {
         String[] arys = text.split(" ");
         List<AnalyzeResponse> responses = new ArrayList<>();
-        for (int i=0;i<arys.length;i++){
+        for (int i = 0; i < arys.length; i++) {
             AnalyzeResponse response = analyze(arys[i]);
-            if(response!=null) responses.add(response);
+            if (response != null) responses.add(response);
         }
         return responses;
     }
 
     @Override
     public ComparisonResult analyzeJava(String text) {
-        try{
+        try {
             StringReader reader = new StringReader(text);
             IKSegmenter segmenter = new IKSegmenter(reader, true);
 
@@ -187,7 +201,7 @@ public class AnalyzeServiceImpl implements AnalyzeService {
             //分析表达式
             AnalyzeComparisonResult analyze = findAnalyzeMap(modelList, mapAnalyze);
             AnalyzeComparisonResult symbols = findAnalyzeMap(modelList, mapSymbols);
-            if(analyze.getIndex()==-1 || symbols.getIndex()==-1){
+            if (analyze.getIndex() == -1 || symbols.getIndex() == -1) {
                 //不存在对比操作,返回整串字符串进行全文搜索
                 return ComparisonResult.GenModel("query", text);
             }
@@ -197,17 +211,17 @@ public class AnalyzeServiceImpl implements AnalyzeService {
             result.setOpreation(symbols.getModel().getLexemeText());
             //度量、维度关联的字段
             result.setFieldName(analyze.getModel().getLexemeText());
-            if(!StringUtils.IsNullEmpty(analyze.getModel().getEsIndexField()))
+            if (!StringUtils.IsNullEmpty(analyze.getModel().getEsIndexField()))
                 result.setFields(analyze.getModel().getEsIndexField());
 
             //有 TYPE_CQUAN 说明读取到了 数值+单位
             AnalyzeComparisonResult cquan = findByLexemeType(modelList, "TYPE_CQUAN");
-            if(cquan.getIndex()>=0){
+            if (cquan.getIndex() >= 0) {
                 String[] splits = splitUnit(cquan.getModel().getLexemeText(), mapUnits);
 
                 //对比的值或单位
                 result.setValue(splits[0]);
-                if(splits.length>1) result.setUint(splits[1]);
+                if (splits.length > 1) result.setUint(splits[1]);
                 return result;
             }
 
@@ -215,19 +229,19 @@ public class AnalyzeServiceImpl implements AnalyzeService {
             AnalyzeComparisonResult useless = findAnalyzeMap(modelList, mapUseless);
             AnalyzeComparisonResult object = findAnalyzeMap(modelList, mapObjects);
             int end = text.length(), start = symbols.getModel().getEnd();
-            if(useless.getIndex()>0 && end > useless.getModel().getBegin())
+            if (useless.getIndex() > 0 && end > useless.getModel().getBegin())
                 end = useless.getModel().getBegin();
-            if(object.getIndex()>0 && end > object.getModel().getBegin())
+            if (object.getIndex() > 0 && end > object.getModel().getBegin())
                 end = object.getModel().getBegin();
             //System.out.println("start:"+start+" end:"+end);
 
-            if(start<end){
+            if (start < end) {
                 String valString = text.substring(start, end);
                 String[] splits = splitUnit(valString, mapUnits);
 
                 //对比的值或单位
                 result.setValue(splits[0]);
-                if(splits.length>1) result.setUint(splits[1]);
+                if (splits.length > 1) result.setUint(splits[1]);
             }
 
             return result;
@@ -246,12 +260,13 @@ public class AnalyzeServiceImpl implements AnalyzeService {
         }
         return new String[]{lexmeText};
     }
-    private AnalyzeComparisonResult findByLexemeType(List<AnalyzeModel> modelList, String lexmeType){
+
+    private AnalyzeComparisonResult findByLexemeType(List<AnalyzeModel> modelList, String lexmeType) {
         AnalyzeComparisonResult result = new AnalyzeComparisonResult();
         result.setIndex(-1);
 
-        for(int i=0;i<modelList.size();i++){
-            if(modelList.get(i).getLexemeType().equals(lexmeType)){
+        for (int i = 0; i < modelList.size(); i++) {
+            if (modelList.get(i).getLexemeType().equals(lexmeType)) {
                 result.setIndex(i);
                 result.setModel(modelList.get(i));
                 break;
@@ -260,12 +275,12 @@ public class AnalyzeServiceImpl implements AnalyzeService {
         return result;
     }
 
-    private AnalyzeComparisonResult findAnalyzeMap(List<AnalyzeModel> modelList, HashMap<String, AnalyzeModel> map){
+    private AnalyzeComparisonResult findAnalyzeMap(List<AnalyzeModel> modelList, HashMap<String, AnalyzeModel> map) {
         AnalyzeComparisonResult result = new AnalyzeComparisonResult();
         result.setIndex(-1);
 
-        for(int i=0;i<modelList.size();i++){
-            if(map.containsKey(modelList.get(i).getLexemeText())){
+        for (int i = 0; i < modelList.size(); i++) {
+            if (map.containsKey(modelList.get(i).getLexemeText())) {
                 AnalyzeModel model = map.get(modelList.get(i).getLexemeText());
                 model = JSON.parseObject(JSON.toJSONString(model), AnalyzeModel.class);
                 model.setLexemeType(modelList.get(i).getLexemeType());
@@ -288,9 +303,9 @@ public class AnalyzeServiceImpl implements AnalyzeService {
 
         List<ComparisonResult> results = new ArrayList<>();
         String[] arys = text.split(" ");
-        for (int i=0;i<arys.length;i++){
+        for (int i = 0; i < arys.length; i++) {
             ComparisonResult result = analyzeJava(arys[i]);
-            if(result!=null) {
+            if (result != null) {
                 results.add(result);
                 System.out.println(JSON.toJSON(result));
             }

+ 11 - 0
src/main/java/com/bowintek/practice/services/impl/EsIndexServiceImpl.java

@@ -14,6 +14,7 @@ import com.bowintek.practice.vo.EsIndexfieldVo;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 
 import java.util.Arrays;
@@ -105,7 +106,17 @@ public class EsIndexServiceImpl implements EsIndexService {
         }
         return result;
     }
+    @Override
+    @Cacheable(value = "esIndexList")
+    public List<EsIndexVo> getAllList() {
+        PageInfo<EsIndexVo> result = this.getList(1, 999, null, null, null);
+
+        result.getList().forEach(x->{
+            x.setFieldList( this.getFieldList(x.getIndexId(),null));
+        });
 
+        return  result.getList();
+    }
     @Override
     public List<EsIndexfieldVo> getFieldList(String indexId, String parentId) {
         List<EsIndexfieldVo> dbList = esIndexCquery.getFieldList(indexId, parentId);

+ 1 - 0
src/main/java/com/bowintek/practice/services/service/EsIndexService.java

@@ -14,4 +14,5 @@ public interface EsIndexService {
     List<EsIndexfieldVo> getFieldList(String indexId,String parentId);
     int delete(List<String> idList);
     List<EsIndexfieldVo> importData(List<EsIndexfieldVo> dataList);
+    List<EsIndexVo> getAllList();
 }

+ 0 - 5
target/classes/application.yml

@@ -115,11 +115,6 @@ appconfig:
   uploadfile-url: D:\我的文件\博颖项目\华北油田AI检索\smartsearch\src\main\resources\static\doc
   desKey: MMmmHHss
 
-  #ftp配置 192.168.0.51:21@aqfxgk:qwe123
-  #ftp-host: 192.168.0.68
-  #ftp-port: 21
-  #ftp-user: FtpUser
-  #ftp-pwd: bowin123
   ftp-host: 39.98.145.11
   ftp-port: 21
   ftp-user: BowinFtp

+ 1 - 1
vue/src/components/basic/es-result/query-criteria.vue

@@ -76,7 +76,7 @@ export default defineComponent({
       relation: 'AND'
     }]);
     const formState = ref(Object.assign({}, {
-      page: 1, rows: 10, showMoreQuery: true,
+      page: 1, rows: 10, showMoreQuery: false,
       well_common_name: '',
       bz_dwmc: '',
       formation_name: '',