Yuki Takei 7 лет назад
Родитель
Сommit
3f6df80526
2 измененных файлов с 12 добавлено и 19 удалено
  1. 10 18
      resource/search/mappings.json
  2. 2 1
      src/server/util/search.js

+ 10 - 18
resource/search/mappings.json

@@ -5,21 +5,13 @@
         "english_stop": {
         "english_stop": {
           "type":       "stop",
           "type":       "stop",
           "stopwords":  "_english_"
           "stopwords":  "_english_"
-        },
-        "english_stemmer": {
-          "type":       "stemmer",
-          "language":   "english"
-        },
-        "english_possessive_stemmer": {
-          "type":       "stemmer",
-          "language":   "possessive_english"
         }
         }
       },
       },
       "tokenizer": {
       "tokenizer": {
-        "ngram_tokenizer": {
-          "type": "ngram",
+        "edge_ngram_tokenizer": {
+          "type": "edge_ngram",
           "min_gram": 2,
           "min_gram": 2,
-          "max_gram": 3,
+          "max_gram": 20,
           "token_chars": ["letter", "digit"]
           "token_chars": ["letter", "digit"]
         }
         }
       },
       },
@@ -28,13 +20,11 @@
           "tokenizer": "kuromoji_tokenizer",
           "tokenizer": "kuromoji_tokenizer",
           "char_filter" : ["icu_normalizer"]
           "char_filter" : ["icu_normalizer"]
         },
         },
-        "english": {
-          "tokenizer": "ngram_tokenizer",
+        "english_edge_ngram": {
+          "tokenizer": "edge_ngram_tokenizer",
           "filter": [
           "filter": [
-            "english_possessive_stemmer",
             "lowercase",
             "lowercase",
-            "english_stop",
-            "english_stemmer"
+            "english_stop"
           ]
           ]
         }
         }
       }
       }
@@ -56,7 +46,8 @@
             },
             },
             "en": {
             "en": {
               "type": "text",
               "type": "text",
-              "analyzer": "english"
+              "analyzer": "english_edge_ngram",
+              "search_analyzer": "standard"
             }
             }
           }
           }
         },
         },
@@ -69,7 +60,8 @@
             },
             },
             "en": {
             "en": {
               "type": "text",
               "type": "text",
-              "analyzer": "english"
+              "analyzer": "english_edge_ngram",
+              "search_analyzer": "standard"
             }
             }
           }
           }
         },
         },

+ 2 - 1
src/server/util/search.js

@@ -450,6 +450,7 @@ SearchClient.prototype.appendCriteriaForQueryString = function(query, queryStrin
     const q = {
     const q = {
       multi_match: {
       multi_match: {
         query: parsedKeywords.match.join(' '),
         query: parsedKeywords.match.join(' '),
+        type: 'most_fields',
         fields: ['path.ja^2', 'path.en^2', 'body.ja', 'body.en'],
         fields: ['path.ja^2', 'path.en^2', 'body.ja', 'body.en'],
       },
       },
     };
     };
@@ -460,7 +461,7 @@ SearchClient.prototype.appendCriteriaForQueryString = function(query, queryStrin
     const q = {
     const q = {
       multi_match: {
       multi_match: {
         query: parsedKeywords.not_match.join(' '),
         query: parsedKeywords.not_match.join(' '),
-        fields: ['path.ja^2', 'path.en^2', 'body.ja', 'body.en'],
+        fields: ['path.ja', 'path.en', 'body.ja', 'body.en'],
         operator: 'or'
         operator: 'or'
       },
       },
     };
     };