Taichi Masuyama 4 лет назад
Родитель
Сommit
f82ce1144f

+ 1 - 1
packages/app/src/server/interfaces/search.ts

@@ -13,7 +13,7 @@ export type QueryTerms = {
   not_tag: string[],
 }
 
-export type ParsedQuery = { terms?: QueryTerms, delegatorName?: string }
+export type ParsedQuery = { queryString: string, terms?: QueryTerms, delegatorName?: string }
 
 export interface SearchQueryParser {
   parseSearchQuery(queryString: string): Promise<ParsedQuery>

+ 5 - 8
packages/app/src/server/service/search.ts

@@ -162,7 +162,7 @@ class SearchService implements SearchQueryParser, SearchResolver {
 
     // when Normal Query
     if (!regexp.test(queryString)) {
-      return { terms: this.parseQueryString(queryString) };
+      return { queryString, terms: this.parseQueryString(queryString) };
     }
 
     // when Named Query
@@ -178,17 +178,17 @@ class SearchService implements SearchQueryParser, SearchResolver {
 
     let parsedQuery;
     if (aliasOf != null) {
-      parsedQuery = { terms: this.parseQueryString(aliasOf) };
+      parsedQuery = { queryString, terms: this.parseQueryString(aliasOf) };
     }
     if (delegatorName != null) {
-      parsedQuery = { delegatorName };
+      parsedQuery = { queryString, delegatorName };
     }
 
     return parsedQuery;
   }
 
   async resolve(parsedQuery: ParsedQuery): Promise<[SearchDelegator, SearchableData | null]> {
-    const { terms, delegatorName } = parsedQuery;
+    const { queryString, terms, delegatorName } = parsedQuery;
 
     if (delegatorName != null) {
       const nqDelegator = this.nqDelegators[delegatorName];
@@ -213,7 +213,7 @@ class SearchService implements SearchQueryParser, SearchResolver {
     return delegator.search(data, user, userGroups, searchOpts);
   }
 
-  parseQueryString(_queryString: string): QueryTerms {
+  parseQueryString(queryString: string): QueryTerms {
     // terms
     const matchWords: string[] = [];
     const notMatchWords: string[] = [];
@@ -224,9 +224,6 @@ class SearchService implements SearchQueryParser, SearchResolver {
     const tags: string[] = [];
     const notTags: string[] = [];
 
-    let queryString = _queryString.trim();
-    queryString = queryString.replace(/\s+/g, ' '); // eslint-disable-line no-param-reassign
-
     // First: Parse phrase keywords
     const phraseRegExp = new RegExp(/(-?"[^"]+")/g);
     const phrases = queryString.match(phraseRegExp);