Explorar el Código

增加查重时抽取题干与选项文本

宋悦 hace 8 años
padre
commit
d8167c8caf

+ 6 - 2
cqb-paper/src/main/java/com/qmth/cqb/paper/web/PaperController.java

@@ -12,6 +12,7 @@ import java.util.stream.Stream;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.qmth.cqb.question.service.QuesService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -62,6 +63,9 @@ public class PaperController {
     @Value("${question.reduplicate.similarity}")
     private double reduplicateSimilarity;
 
+    @Autowired
+    QuesService quesService;
+
     /**
      * 根据Id获取试卷
      *
@@ -320,8 +324,8 @@ public class PaperController {
                 PaperDetailUnitExp paperDetailUnitExp1 = allPaperDetailUnitList.get(i);
                 PaperDetailUnitExp paperDetailUnitExp2 = allPaperDetailUnitList.get(j);
                 double similarity = StringSimilarityUtils.getSimilarityWithCosinesBySeg(
-                        paperDetailUnitExp1.getQuestion().getQuesBody(),
-                        paperDetailUnitExp2.getQuestion().getQuesBody());
+                        quesService.getExtractText(paperDetailUnitExp1.getQuestion()),
+                        quesService.getExtractText(paperDetailUnitExp2.getQuestion()));
                 if (similarity > reduplicateSimilarity) {
                     boolean found = false;
                     for (int k = 0; k < reduplicateId.size(); k++) {

+ 17 - 0
cqb-question-resource/src/main/java/com/qmth/cqb/question/service/QuesService.java

@@ -290,4 +290,21 @@ public class QuesService {
         }
     }
 
+    /**
+     * 获取试题有效文本
+     * @param question
+     * @return
+     */
+    public String getExtractText(Question question){
+        StringBuilder quesText = new StringBuilder();
+        quesText.append(DocxProcessUtil.getTextInHtml(question.getQuesBody()));
+        List<QuesOption> quesOptionList = question.getQuesOptions();
+        if(quesOptionList!=null && quesOptionList.size() > 0){
+            for(QuesOption quesOption:quesOptionList){
+                quesText.append(DocxProcessUtil.getTextInHtml(quesOption.getOptionBody()));
+            }
+        }
+        return quesText.toString();
+    }
+
 }