1
0
AE86 5 жил өмнө
parent
commit
cac3e890e4

+ 1 - 2
dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/impl/DataTemplate.java

@@ -1,7 +1,6 @@
 package org.dbsyncer.manager.template.impl;
 
 import org.dbsyncer.storage.StorageService;
-import org.dbsyncer.storage.constant.ConfigConstant;
 import org.dbsyncer.storage.enums.StorageEnum;
 import org.dbsyncer.storage.query.Query;
 import org.slf4j.Logger;
@@ -28,7 +27,7 @@ public final class DataTemplate {
     private StorageService storageService;
 
     public List<Map> query(StorageEnum type, String collectionId, int pageNum, int pageSize) {
-        Query query = new Query(true, pageNum, pageSize);
+        Query query = new Query(pageNum, pageSize);
         return storageService.query(type, query, collectionId);
     }
 

+ 45 - 0
dbsyncer-storage/src/main/java/org/dbsyncer/storage/query/Option.java

@@ -0,0 +1,45 @@
+package org.dbsyncer.storage.query;
+
+import org.apache.lucene.search.highlight.SimpleHTMLFormatter;
+import org.dbsyncer.common.util.CollectionUtils;
+
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * @version 1.0.0
+ * @Author AE86
+ * @Date 2020-06-01 22:57
+ */
+public class Option {
+
+    private Set<String> highLightKeys;
+    private boolean enableHighLightSearch;
+    private SimpleHTMLFormatter formatter = null;
+
+    public Option() {
+    }
+
+    public Option(Query query) {
+        this.highLightKeys = query.getParams().stream()
+                .filter(p -> p.isHighlighter())
+                .map(p -> p.getKey())
+                .collect(Collectors.toSet());
+        if (!CollectionUtils.isEmpty(highLightKeys)) {
+            enableHighLightSearch = true;
+            formatter = new SimpleHTMLFormatter(query.getPreTag(), query.getPostTag());
+        }
+    }
+
+    public Set<String> getHighLightKeys() {
+        return highLightKeys;
+    }
+
+    public boolean isEnableHighLightSearch() {
+        return enableHighLightSearch;
+    }
+
+    public SimpleHTMLFormatter getFormatter() {
+        return formatter;
+    }
+}

+ 11 - 0
dbsyncer-storage/src/main/java/org/dbsyncer/storage/query/Param.java

@@ -8,12 +8,19 @@ package org.dbsyncer.storage.query;
 public class Param {
     private String key;
     private String value;
+    private boolean highlighter;
 
     public Param(String key, String value) {
         this.key = key;
         this.value = value;
     }
 
+    public Param(String key, String value, boolean highlighter) {
+        this.key = key;
+        this.value = value;
+        this.highlighter = highlighter;
+    }
+
     public String getKey() {
         return key;
     }
@@ -21,4 +28,8 @@ public class Param {
     public String getValue() {
         return value;
     }
+
+    public boolean isHighlighter() {
+        return highlighter;
+    }
 }

+ 5 - 8
dbsyncer-storage/src/main/java/org/dbsyncer/storage/query/Query.java

@@ -12,8 +12,6 @@ public class Query {
 
     private List<Param> params;
 
-    private boolean highlighter;
-
     private String preTag = "<span style='color:red'>";
 
     private String postTag = "</span>";
@@ -26,8 +24,7 @@ public class Query {
         this.params = new ArrayList<>();
     }
 
-    public Query(boolean highlighter, int pageNum, int pageSize) {
-        this.highlighter = highlighter;
+    public Query(int pageNum, int pageSize) {
         this.pageNum = pageNum;
         this.pageSize = pageSize;
         this.params = new ArrayList<>();
@@ -37,6 +34,10 @@ public class Query {
         params.add(new Param(key, value));
     }
 
+    public void put(String key, String value, boolean highlighter) {
+        params.add(new Param(key, value, highlighter));
+    }
+
     public List<Param> getParams() {
         return params;
     }
@@ -45,10 +46,6 @@ public class Query {
         this.params = params;
     }
 
-    public boolean isHighlighter() {
-        return highlighter;
-    }
-
     public String getPreTag() {
         return preTag;
     }

+ 1 - 3
dbsyncer-storage/src/main/java/org/dbsyncer/storage/support/DiskStorageServiceImpl.java

@@ -76,9 +76,7 @@ public class DiskStorageServiceImpl extends AbstractStorageService {
             List<Param> params = query.getParams();
             if (!CollectionUtils.isEmpty(params)) {
                 BooleanQuery.Builder builder = new BooleanQuery.Builder();
-                params.forEach(p ->
-                        builder.add(new TermQuery(new Term(p.getKey(), p.getValue())), BooleanClause.Occur.MUST)
-                );
+                params.forEach(p -> builder.add(new TermQuery(new Term(p.getKey(), p.getValue())), BooleanClause.Occur.MUST));
                 BooleanQuery q = builder.build();
                 return shard.query(q, pageNum, pageSize, sort);
             }