2016-04-22 2 views
0

Ich bin in Unterstützung von Faltung von Nicht-Standard-ASCII-Zeichen wie this guide schlägt vor.Korrekt falten ASCII-Zeichen in Elasticsearch

PUT /my_index 
{ 
    "settings": { 
    "analysis": { 
     "analyzer": { 
     "folding": { 
      "tokenizer": "standard", 
      "filter": [ "lowercase", "asciifolding" ] 
     } 
     } 
    } 
    } 
} 

Seltsamerweise kann ich das Beispiel im ersten Codefragment nicht replizieren.

Wenn ich ausführen

GET /my_index/_analyze?analyzer=folding&text=My œsophagus caused a débâcle 

die folgenden Token zurückgegeben:

sophagus, caused, a, d, b, cle 

Was will ich erreichen ist:

Variationen der Schreibweise von Wörtern wie "école" (zB Ecole, ècole) sollte als das gleiche Wort behandelt werden.

Gerade jetzt, wenn ich

GET /my_index/_analyze?analyzer=folding&text=école ecole 

ausführen bekomme ich die Token cole, ecole

Dies sind die Einstellungen, die ich zur Zeit für die Textanalyse der Dokumente verwenden

"analysis": { 
    "filter": { 
    "french_stop": { 
     "type": "stop", 
     "stopwords": "_french_" 
    }, 
     "french_elision": { 
     "type": "elision", 
      "articles": [ 
      "l", 
      "m", 
      "t", 
      "qu", 
      "n", 
      "s", 
      "j", 
      "d", 
      "c", 
      "jusqu", 
      "quoiqu", 
      "lorsqu", 
      "puisqu" 
      ] 
     }, 
     "french_stemmer": { 
      "type": "stemmer", 
      "language": "light_french" 
     } 
    }, 
    "analyzer": { 
     "index_French": { 
     "filter": [ 
      "french_elision", 
      "lowercase", 
      "french_stop", 
      "french_stemmer" 
     ], 
      "char_filter": [ 
      "html_strip" 
      ], 
      "type": "custom", 
       "tokenizer": "standard" 
     }, 
     "sort_analyzer": { 
      "type": "custom", 
      "filter": [ 
       "lowercase" 
      ], 
       "tokenizer": "keyword" 
     } 
    } 
} 

Meine Idee war, um die Filter des index_French-Analysators so zu ändern, dass die Liste die folgende ist:

"filter": ["french_elision","lowercase","asciifolding","french_stop","french_stemmer"] 

Danke für Ihre Hilfe.

+0

Sie deutlich den 'asciifolding' Token Filter verwenden, müssen erhalten werden, versuchen Sie es raus und du wirst sehen. – Val

+0

Wenn Sie sich auf den größeren Analysator beziehen, sind Sie richtig. aber ich kann die richtige Faltung nicht mit der kleinen Probe aus der Dokumentationsseite erreichen, die ich verlinkt habe. – Kralizek

+0

Ich habe es gerade versucht und es funktioniert gut. Können Sie das stattdessen versuchen? 'curl -XGET 'localhost: 9200/mein_index/_analysieren? analysator = falten & hübsches' -d 'Mein ossophagus verursachte ein debak'' – Val

Antwort

1

In Sense benötigen Sie den _analyze Endpunkt so nennen und es wird funktionieren:

POST /foldings/_analyze 
{ 
    "text": "My œsophagus caused a débâcle", 
    "analyzer": "folding" 
} 

Sie

{ 
    "tokens": [ 
     { 
     "token": "my", 
     "start_offset": 0, 
     "end_offset": 2, 
     "type": "<ALPHANUM>", 
     "position": 0 
     }, 
     { 
     "token": "oesophagus", 
     "start_offset": 3, 
     "end_offset": 12, 
     "type": "<ALPHANUM>", 
     "position": 1 
     }, 
     { 
     "token": "caused", 
     "start_offset": 13, 
     "end_offset": 19, 
     "type": "<ALPHANUM>", 
     "position": 2 
     }, 
     { 
     "token": "a", 
     "start_offset": 20, 
     "end_offset": 21, 
     "type": "<ALPHANUM>", 
     "position": 3 
     }, 
     { 
     "token": "debacle", 
     "start_offset": 22, 
     "end_offset": 29, 
     "type": "<ALPHANUM>", 
     "position": 4 
     } 
    ] 
} 
+0

Ok, ich fühle mich jetzt dumm. Ich habe eine merkwürdige Antwort: Es enthält "Analyzer", "Faltung" und "Text" in der Token-Liste. http://pastebin.com/6qHDZhK5 – Kralizek

+0

Ok Ich denke, Sie testen gegen ES 1.x und ich war testen mit ES 2.x und 'POST _analyze' wird nur in ES 2.x ab, aber versuchen Sie mit curl und es wird auf beide arbeiten – Val

+0

Ja. AWS läuft auf 1.5 ... auf PowerShell funktionierte korrekt. Gibt es einen Grund für den Unterschied? – Kralizek