2016-08-08 14 views
0

私はエッジngramアナライザを使用しています。フィールドの解析APIをチェックしている間、私は以下の結果を得ています。また、スペースを含むelasticsearchのエッジngramを使用してデータをインデックスする方法はありますか?

たとえば、クエリ "galaxy j7"では、次のように解析されます。

["g","ga","gal","gala","galax","galaxy","j","j7"] 

データを以下のように分析します。

["g","ga","gal","gala","galax","galaxy","galaxy j","galaxy j7"] 

どうすれば可能ですか?

インデックスの設定は次のとおりです。

{ 
    "analysis": { 
    "filter": { 
     "autocomplete_filter": { 
      "type": "edge_ngram", 
      "min_gram": "1", 
      "max_gram": "20" 
     } 
    }, 
    "analyzer": { 
     "autocomplete_analyzer": { 
      "filter": ["lowercase", "autocomplete_filter"], 
      "type": "custom", 
      "tokenizer": "standard" 
     } 
    } 
    } 
} 

フィールドのマッピングは以下のとおりです。

{ 
    "title_suggest": { 
     "type": "string", 
     "index_analyzer": "autocomplete_analyzer", 
     "search_analyzer": "standard", 
     "search_quote_analyzer": "autocomplete_analyzer" 
    } 
} 

答えて

1

代わりedge_ngramフィルタで、edgeNGram tokenizerを使用する必要があります。

{ 
    "analysis": { 
    "tokenizer": { 
     "autocomplete_tokenizer": { 
      "type": "edgeNGram", 
      "min_gram": "1", 
      "max_gram": "20" 
     } 
    }, 
    "analyzer": { 
     "autocomplete_analyzer": { 
      "filter": ["lowercase"], 
      "type": "custom", 
      "tokenizer": "autocomplete_tokenizer" 
     } 
    } 
    } 
} 
+0

私もこれを使用していました。しかし、使用しないでください。 –

+0

何がうまくいかなかったのですか?インデックスを削除し、新しいアナライザでインデックスを作成し、データを再インデックスする必要があります。どうやって進んだ? – Val

+0

私はそれだけでしたが、結果と同じようになっています。 "g"、 "ga"、 "gal"、 "gala"、 "galax"、 "galaxy"、 "j"、 "j7"のように しかし、もう一方が欲しい。言葉で分かれるだけです。私は文全体でそれを必要とします。 –

関連する問題