ElasticSearch - Suche mit Bindestrichen

Elastic Search 1.6

Möchte ich index text mit Bindestrichen, z.B. U-12, U-17 -, WU-12, t-shirt... und in der Lage sein, eine "Simple Query-String" - Abfrage, um die Suche auf Sie.

Daten-Beispiel (vereinfacht):

{"title":"U-12 Soccer",
 "comment": "the t-shirts are dirty"}

Da gibt es eine ganze Reihe von Fragen, die bereits über Bindestriche, versuchte ich die folgende Lösung bereits:

Verwenden einen Char filter: ElasticSearch - Suche mit Bindestrichen im Namen.

Also ging ich für diese Zuordnung:

{
  "settings":{
    "analysis":{
      "char_filter":{
        "myHyphenRemoval":{
          "type":"mapping",
          "mappings":[
            "-=>"
          ]
        }
      },
      "analyzer":{
        "default":{
          "type":"custom",
          "char_filter":  [ "myHyphenRemoval" ],
          "tokenizer":"standard",
          "filter":[
            "standard",
            "lowercase"
          ]
        }
      }
    }
  },
  "mappings":{
    "test":{
      "properties":{
        "title":{
          "type":"string"
        },
        "comment":{
          "type":"string"
        }
      }
    }
  }
}

Suche erfolgt mit der folgenden Abfrage:

{"_source":true,
  "query":{
    "simple_query_string":{
      "query":"<Text>",
      "default_operator":"AND"
    }
  }
}
  1. Was funktioniert:

    "U-12", "U*", "t*", "ts*"

  2. Was hat nicht funktioniert:

    "U-*", "u-1*", "t-*", "t-sch*", ...

So scheint es, die char-filter wird nicht ausgeführt, auf search strings?
Was könnte ich tun, um diese Arbeit zu machen?

InformationsquelleAutor rvheddeg | 2015-06-18
Schreibe einen Kommentar