Procházet zdrojové kódy

update search-service

reghao před 7 měsíci
rodič
revize
16c91e2e23

+ 1 - 1
search/search-service/src/main/java/cn/reghao/tnb/search/app/es/SearchService.java

@@ -122,7 +122,7 @@ public class SearchService {
                 ))
         );
 
-        String keyword1 = "大奶";
+        String keyword1 = "隔壁";
         SearchRequest searchRequest1 = SearchRequest.of(s -> s
                 .index(indexName)
                 .query(q -> q.bool(b -> b

+ 17 - 24
search/search-service/src/main/java/cn/reghao/tnb/search/app/es/VideoTextDocument.java

@@ -1,6 +1,5 @@
 package cn.reghao.tnb.search.app.es;
 
-import cn.reghao.jutil.tool.id.SnowFlake;
 import cn.reghao.tnb.search.app.model.po.VideoText;
 import co.elastic.clients.elasticsearch.ElasticsearchClient;
 import co.elastic.clients.elasticsearch._types.Result;
@@ -21,28 +20,24 @@ import java.util.List;
 @Slf4j
 @Service
 public class VideoTextDocument {
-    private String indexName = "video_text";
-    private int pageSize = 12;
+    private final String indexName = "video_text";
     private final ElasticsearchClient esClient;
-    private final SnowFlake idGenerator;
 
     public VideoTextDocument(ElasticService elasticService) {
         this.esClient = elasticService.getElasticsearchClient();
-        this.idGenerator = new SnowFlake(1, 1);
     }
 
-    public void addVideoText(VideoText videoText) throws IOException {
-        //videoText.setId(""+idGenerator.nextId());
-        IndexResponse indexResponse = esClient.index(i -> i.index(indexName).id(videoText.getId()).document(videoText));
-        String jsonResult = indexResponse.result().jsonValue();
+    public void addOrUpdateVideoText(VideoText videoText) {
+        try {
+            IndexResponse response = esClient.index(i -> i.index(indexName).id(videoText.getId()).document(videoText));
+            Result result = response.result();
+            log.info(result.jsonValue());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
     }
 
     public void batchAddVideoText(List<VideoText> videoTextList) {
-        videoTextList.forEach(videoText -> {
-            //videoText.setId(""+idGenerator.nextId());
-            //videoText.setId(videoText.getVideoId());
-        });
-
         List<BulkOperation> bulkOperations = new ArrayList<>();
         videoTextList.forEach(p -> bulkOperations.add(BulkOperation.of(b -> b.index(c -> c.id(p.getId()).document(p)))));
         try {
@@ -54,16 +49,14 @@ public class VideoTextDocument {
         }
     }
 
-    public void updateVideoText(VideoText videoText) throws IOException {
-        String id = videoText.getId();
-        IndexResponse response = esClient.index(i -> i.index(indexName).document(videoText).id(id));
-        Result result = response.result();
-        System.out.println(result.jsonValue());
-    }
-
-    public void deleteVideoText(VideoText videoText) throws IOException {
-        String id = videoText.getId();
-        DeleteResponse deleteResponse = esClient.delete(s -> s.index(indexName).id(id));
+    public void deleteVideoText(String id) {
+        try {
+            DeleteResponse response = esClient.delete(s -> s.index(indexName).id(id));
+            Result result = response.result();
+            log.info(result.jsonValue());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
     }
 
     public void deleteAllDocument() {

+ 13 - 16
search/search-service/src/main/java/cn/reghao/tnb/search/app/es/VideoTextQuery.java

@@ -32,8 +32,8 @@ import java.util.stream.Collectors;
 @Slf4j
 @Service
 public class VideoTextQuery {
-    private String indexName = "video_text";
-    private int pageSize = 12;
+    private final String indexName = "video_text";
+    private final int pageSize = 12;
     private final ElasticsearchClient esClient;
 
     public VideoTextQuery(ElasticService elasticService) {
@@ -84,6 +84,7 @@ public class VideoTextQuery {
                 .requireFieldMatch(false)
                 .build();
 
+        String sortField = "publishTime";
         // 3.搜索请求
         int start = (pageNumber-1)*pageSize;
         SearchRequest searchRequest = new SearchRequest.Builder()
@@ -92,21 +93,24 @@ public class VideoTextQuery {
                 .size(pageSize)
                 .query(query)
                 .highlight(highlight)
+                //.sort(f -> f.field(o -> o.field(sortField).order(SortOrder.Desc)))
                 .build();
         try {
             SearchResponse<VideoText> searchResponse = esClient.search(searchRequest, VideoText.class);
             HitsMetadata<VideoText> hitsMetadata = searchResponse.hits();
             long total = hitsMetadata.total().value();
-            List<VideoText> list = hitsMetadata.hits().stream().map(mapper -> {
-                Map<String, List<String>> highlightMap = mapper.highlight();
+            List<VideoText> list = hitsMetadata.hits().stream().map(hit -> {
+                double score = hit.score() != null ? hit.score() : 0.0;
+                log.info("score -> {}", score);
+                Map<String, List<String>> highlightMap = hit.highlight();
                 String highlightStr = "";
                 if (!highlightMap.isEmpty()) {
-                    highlightStr = mapper.highlight()
+                    highlightStr = hit.highlight()
                             .get(highlightFieldName)
                             .get(0);
                 }
 
-                VideoText videoText = mapper.source();
+                VideoText videoText = hit.source();
                 try {
                     Class<?> clazz = videoText.getClass();
                     Field field = clazz.getDeclaredField(highlightFieldName);
@@ -115,7 +119,7 @@ public class VideoTextQuery {
                 } catch (Exception e) {
                     log.error(e.getMessage());
                 }
-                return mapper.source();
+                return hit.source();
             }).collect(Collectors.toList());
 
             if (total > pageSize*100L) {
@@ -131,17 +135,15 @@ public class VideoTextQuery {
     }
 
     public List<VideoText> queryByPage(int pageNumber) {
-        String sortField = "publishTime";
-        Query query = RangeQuery.of(r -> r.field("age").gte(JsonData.of(8)))._toQuery();
+        Query rangeQuery = RangeQuery.of(r -> r.field("age").gte(JsonData.of(8)))._toQuery();
         String fieldName = "host";
         String searchText = "api.iquizoo.com";
         Query matchQuery = MatchQuery.of(m -> m.field(fieldName).query(searchText))._toQuery();
-        Query matchQuery1 = MatchQuery.of(m -> m.field(fieldName).query(searchText))._toQuery();
-
         Query matchAllQuery = new Query.Builder()
                 .matchAll(new MatchAllQuery.Builder().build())
                 .build();
 
+        String sortField = "publishTime";
         int start = (pageNumber-1)*pageSize;
         SearchRequest searchRequest = SearchRequest.of(s -> s
                 .index(indexName)
@@ -154,11 +156,6 @@ public class VideoTextQuery {
 
         try {
             SearchResponse<VideoText> searchResponse = esClient.search(searchRequest, VideoText.class);
-        /*List<Hit<NginxLog>> hits = searchResponse.hits().hits();
-        for (Hit<NginxLog> hit : hits) {
-            NginxLog product = hit.source();
-            log.info("search page result: {}", product);
-        }*/
             return searchResponse.hits().hits().stream().map(Hit::source).collect(Collectors.toList());
         } catch (Exception e) {
             log.error("{}", e.getMessage());

+ 6 - 8
search/search-service/src/main/java/cn/reghao/tnb/search/app/rpc/DataSearchServiceImpl.java

@@ -45,14 +45,9 @@ public class DataSearchServiceImpl implements DataSearchService {
     }
 
     public void addVideoSummary(VideoSummary videoSummary) {
-        int type = 1;
-        try {
-            VideoText videoText = new VideoText(videoSummary);
-            videoTextDocument.addVideoText(videoText);
-            //luceneIndex.createVideoTextIndex(videoText);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
+        VideoText videoText = new VideoText(videoSummary);
+        videoTextDocument.addOrUpdateVideoText(videoText);
+        //luceneIndex.createVideoTextIndex(videoText);
     }
 
     public void addVideoSummaryList(List<VideoSummary> list) {
@@ -64,10 +59,13 @@ public class DataSearchServiceImpl implements DataSearchService {
 
     @Override
     public void updateVideoSummary(VideoSummary videoSummary) {
+        VideoText videoText = new VideoText(videoSummary);
+        videoTextDocument.addOrUpdateVideoText(videoText);
     }
 
     @Override
     public void deleteVideoSummary(String videoId) {
+        videoTextDocument.deleteVideoText(videoId);
     }
 
     @Override

+ 1 - 3
search/search-service/src/test/java/SearchTest.java

@@ -271,14 +271,12 @@ public class SearchTest {
     @Test
     public void searchTest() {
         int pageNumber = 1;
-        String keyword = "大奶";
+        String keyword = "隔壁";
 
         List<Integer> scopes = List.of(PostScope.PUBLIC.getCode(), PostScope.PROTECT.getCode());
         Page<VideoText> page = videoTextQuery.queryWithHighlight(keyword, scopes, pageNumber);
-        //Page<VideoText> page1 = esQuery.queryByPage(index, "query", pn, ps, VideoText.class);
         long total = page.getTotalElements();
         List<VideoText> list = page.getContent();
-
         List<VideoText> list1 = videoTextQuery.queryByPage(pageNumber);
         System.out.println();
     }