2016-09-09 7 views
1

私は次のようelasticsearchの設定があります。上記のelasticsearchで部分アクセント型キーワードを検索するにはどうすればよいですか?

"settings": { 
    "index":{ 
     "analysis":{ 
      "analyzer":{ 
       "analyzer_keyword":{ 
       "tokenizer":"keyword", 
       "filter":["lowercase", "asciifolding"] 
       } 
      } 
     } 
    } 
} 

を次のキーワードのため正常に動作します:

  • ビヨンセ
  • セリーヌ・ディオン

上記のデータはelasticsearchに保存されていますそれぞれbeyonceceline dionとなります。

アクセントなしでCelineまたはCeline Dionを検索できますが、同じ結果が得られます。しかし、私がCélineを検索する瞬間、私は結果を得られません。アクセント付きの部分的なキーワードを検索するためにelasticsearchを設定するにはどうすればよいですか?

照会本体は、次のようになります。

{ 
    "track_scores": true, 
    "query": { 
     "bool": { 
      "must": [ 
       { 
        "multi_match": { 
         "fields": ["name"], 
         "type": "phrase", 
         "query": "Céline" 
        } 

       } 

      ] 
     } 
    } 
} 

とマッピングが

"mappings" : { 
    "artist" : { 
    "properties" : { 
     "name" : { 
     "type" : "string", 
     "fields" : { 
      "orig" : { 
      "type" : "string", 
      "index" : "not_analyzed" 
      }, 
      "simple" : { 
      "type" : "string", 
      "analyzer" : "analyzer_keyword" 
      } 
     }, 
     } 
+0

何あなたのクエリは次のように見えますか?検索しているフィールドのマッピングはどうですか? – eemp

+0

@emp質問で更新されたクエリ本体 –

+0

尋ねられたとおり、マッピングを提供していません。 –

答えて

1

私はこのマッピングを提案し、そこから行くでしょう:

{ 
    "settings": { 
    "index": { 
     "analysis": { 
     "analyzer": { 
      "analyzer_keyword": { 
      "tokenizer": "whitespace", 
      "filter": [ 
       "lowercase", 
       "asciifolding" 
      ] 
      } 
     } 
     } 
    } 
    }, 
    "mappings": { 
    "test": { 
     "properties": { 
     "name": { 
      "type": "string", 
      "analyzer": "analyzer_keyword" 
     } 
     } 
    } 
    } 
} 
+0

私は新しいアナライザを作成し、トークナイザを空白に設定しましたが、これはうまくいきます。 –

0

では、同じアナライザは、クエリ時に慣れていることを確認してください。

  • あなたは何アナライザがありませんそのためtermまたはtermsクエリを使用している
  • 同様の分析を行っていないことを目的に、クエリ時に別のアナライザを指定します。ここではそれが起こっていない可能性がありますなぜいくつかの可能な理由があります適用されます(Term Queryを参照してください)。
  • query_stringクエリを使用しています(例:Simple Query String Query参照) - 異なるアナライザで複数のフィールドを指定すると、フィールドを別々のクエリに分け、アナライザを指定する必要がありました(バージョン2.0での作業)パラメータ
関連する問題