2017-02-14 1 views
0

Wenn ich ohne Akzent eine Suche, ich keine Übereinstimmung mit den gleichen Worten haben die einen Akzent trotz haben von i ein französisch-Analysator in AbbildungElasticsearch: Suche Problem mit Akzent trotz französisch Analysator

gesetzt

Das ist mein Mapping:

PUT /test12h31 
{ 
    "mappings": { 
     "proj": { 
     "properties": { 
      "movieTitle": { 
      "type": "text", 
      "fields": { 
      "keyword": { 
         "type": "keyword", 
         "ignore_above": 256 
        } 
      }, 
      "analyzer": "french" 
      } 
     } 
     } 
    } 
} 

ich trete Daten mit:

PUT /test12h31/proj/_search 
    { 
     "movieTitle":"Le Retour Du Héros" 
    } 

und ich habe kein Ergebnis, wenn ich diese Suche zu tun:

POST /test12h31/proj/_search 
{ 
    "query": { 
    "match": { 
     "movieTitle": "hero" 
    } 
    } 
} 

Wenn ich "Hero" durch "Héro" in meiner Suchanfrage ersetze, habe ich ein Ergebnis.

Können Sie mir helfen zu verstehen, was passiert und wie Akzente zu ignorieren bitte?

Antwort

2

Der french Analyzer kümmert sich nicht um Akzente, dafür müssen Sie den Token-Filter asciifolding einbeziehen.

Ich schlage vor, Sie Ihren Index Einstellungen und Mapping wie folgt ändern, um die french Analysator neu zu definieren, die asciifolding Token-Filter enthalten:

PUT /test12h31 
{ 
    "settings": { 
    "analysis": { 
     "filter": { 
     "french_elision": { 
      "type":   "elision", 
      "articles_case": true, 
      "articles": [ 
       "l", "m", "t", "qu", "n", "s", 
       "j", "d", "c", "jusqu", "quoiqu", 
       "lorsqu", "puisqu" 
      ] 
     }, 
     "french_stop": { 
      "type":  "stop", 
      "stopwords": "_french_" 
     }, 
     "french_stemmer": { 
      "type":  "stemmer", 
      "language": "light_french" 
     } 
     }, 
     "analyzer": { 
     "french": { 
      "tokenizer": "standard", 
      "filter": [ 
      "french_elision", 
      "lowercase", 
      "asciifolding", 
      "french_stop", 
      "french_stemmer" 
      ] 
     } 
     } 
    } 
    }, 
     "mappings": { 
      "proj": { 
      "properties": { 
       "movieTitle": { 
       "type": "text", 
       "fields": { 
       "keyword": { 
          "type": "keyword", 
          "ignore_above": 256 
         } 
       }, 
       "analyzer": "french" 
       } 
      } 
      } 
     } 
    } 
} 

Dann werden Sie Ergebnisse für Ihre Suche bekommen.

+0

danke, es ist sicherlich der gute Weg ist, aber ich habe eine Fehlermeldung: { "Fehler": { "Wurzel_Ursache": [ { "type": "illegal_argument_exception", "Grund": „Schlüsselwort Filter erfordern entweder '' keywords' oder keywords_path' konfiguriert werden“ } ], "type": "illegal_argument_exception" "Grund": "Keyword-Filter erfordern entweder '' keywords' oder keywords_path' konfiguriert werden" }, "status": 400 } –

+0

Ich habe den 'keywords' Filter entfernt, da er leer war. Bitte versuche es erneut. – Val

Verwandte Themen