Kaynağa Gözat

search-service 添加 DataSearchService#countIndex rpc 方法

reghao 7 ay önce
ebeveyn
işleme
221000dda2

+ 22 - 0
search/search-api/src/main/java/cn/reghao/tnb/search/api/dto/IndexCount.java

@@ -0,0 +1,22 @@
+package cn.reghao.tnb.search.api.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author reghao
+ * @date 2025-08-22 20:19:35
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Getter
+public class IndexCount implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private int maxDocs;
+    private int numDocs;
+    private int numDeletedDocs;
+}

+ 2 - 0
search/search-api/src/main/java/cn/reghao/tnb/search/api/iface/DataSearchService.java

@@ -1,5 +1,6 @@
 package cn.reghao.tnb.search.api.iface;
 
+import cn.reghao.tnb.search.api.dto.IndexCount;
 import cn.reghao.tnb.search.api.dto.VideoSummary;
 import cn.reghao.jutil.jdk.db.PageList;
 
@@ -15,4 +16,5 @@ public interface DataSearchService {
     void updateVideoSummary(VideoSummary videoSummary);
     void deleteVideoSummary(String videoId);
     PageList<VideoSummary> searchVideo(String keyword, List<Integer> scopes, int pageNumber);
+    IndexCount countIndex(String indexName);
 }

+ 3 - 1
search/search-service/src/main/java/cn/reghao/tnb/search/app/lucene/LuceneIndex.java

@@ -1,5 +1,6 @@
 package cn.reghao.tnb.search.app.lucene;
 
+import cn.reghao.tnb.search.api.dto.IndexCount;
 import cn.reghao.tnb.search.app.config.ElasticProperties;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.document.Document;
@@ -143,7 +144,7 @@ public class LuceneIndex {
         indexWriter.close();
     }
 
-    public void check(String indexName) throws IOException {
+    public IndexCount countIndex(String indexName) throws IOException {
         IndexWriter indexWriter = getIndexWriter(indexName);
         IndexReader indexReader = getIndexReader(indexWriter);
 
@@ -154,6 +155,7 @@ public class LuceneIndex {
         // 被标记删除的索引文档
         int numDeletedDocs = indexReader.numDeletedDocs();
         indexWriter.close();
+        return new IndexCount(maxDocs, numDocs, numDeletedDocs);
     }
 
     public void restore() {

+ 13 - 0
search/search-service/src/main/java/cn/reghao/tnb/search/app/rpc/DataSearchServiceImpl.java

@@ -1,5 +1,6 @@
 package cn.reghao.tnb.search.app.rpc;
 
+import cn.reghao.tnb.search.api.dto.IndexCount;
 import cn.reghao.tnb.search.api.dto.VideoSummary;
 import cn.reghao.tnb.search.api.iface.DataSearchService;
 import cn.reghao.tnb.search.app.es.ElasticService;
@@ -144,4 +145,16 @@ public class DataSearchServiceImpl implements DataSearchService {
         long publishTime = videoText.getPublishTime();
         return new VideoSummary(videoId, title, description, scope, publishTime);
     }
+
+    @Override
+    public IndexCount countIndex(String indexName) {
+        try {
+            IndexCount indexCount = luceneIndex.countIndex(indexName);
+            return indexCount;
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        return null;
+    }
 }