Mao 4 лет назад
Родитель
Сommit
083d823733
2 измененных файлов с 19 добавлено и 19 удалено
  1. 8 1
      packages/app/src/server/routes/search.js
  2. 11 18
      packages/app/src/server/service/search.js

+ 8 - 1
packages/app/src/server/routes/search.js

@@ -151,7 +151,14 @@ module.exports = function(crowi, app) {
       const ids = esResult.data.map((page) => { return page._id });
       const findResult = await Page.findListByPageIds(ids);
 
-      searchService.addElasticSearchInfo(findResult.pages, esResult);
+      findResult.pages.map((page) => {
+        const data = esResult.data.find((data) => {
+          return page.id === data._id;
+        });
+        page._doc.tags = data._source.tag_names;
+        page._doc.elasticSearchResultInfo = data.elasticSearchResultInfo;
+        return page;
+      });
 
       result.meta = esResult.meta;
       result.totalCount = findResult.totalCount;

+ 11 - 18
packages/app/src/server/service/search.js

@@ -138,8 +138,15 @@ class SearchService {
   }
 
   async searchKeyword(keyword, user, userGroups, searchOpts) {
+    const options = {
+      whiteList: {
+        em: ['class'],
+      },
+    };
+    const myXss = new xss.FilterXSS(options);
+    let esResult;
     try {
-      return await this.delegator.searchKeyword(keyword, user, userGroups, searchOpts);
+      esResult = await this.delegator.searchKeyword(keyword, user, userGroups, searchOpts);
     }
     catch (err) {
       logger.error(err);
@@ -148,22 +155,8 @@ class SearchService {
       this.isErrorOccuredOnSearching = true;
       throw err;
     }
-  }
-
-  addElasticSearchInfo(pages, esResult) {
-    const options = {
-      whiteList: {
-        em: ['class'],
-      },
-    };
-    const myXss = new xss.FilterXSS(options);
-
-    pages.map((page) => {
+    esResult.data.forEach((data) => {
       const elasticSearchResult = { snippet: '', matchedPath: '' };
-      const data = esResult.data.find((data) => {
-        return page.id === data._id;
-      });
-      page._doc.tags = data._source.tag_names;
       if (data._highlight['body.en'] == null && data._highlight['body.ja'] == null) {
         elasticSearchResult.contentWithNoSearchedKeyword = myXss.process(data._source.body);
       }
@@ -175,9 +168,9 @@ class SearchService {
         const pathMatch = data._highlight['path.en'] == null ? data._highlight['path.ja'] : data._highlight['path.en'];
         elasticSearchResult.matchedPath = pathMatch;
       }
-      page._doc.elasticSearchResultInfo = elasticSearchResult;
-      return page;
+      data.elasticSearchResultInfo = elasticSearchResult;
     });
+    return esResult;
   }
 
 }