Home » FAQ » Wie kann ich die Suche nach Artikelnummern mit und ohne Leerzeichen optimieren?

Wie kann ich die Suche nach Artikelnummern mit und ohne Leerzeichen optimieren?

OBS Hilfecenter
Inhalt

Es kommt vor das Artikelnummern Leerzeichen enthalten, die dazu führen, dass die Suche nach einer bestimmten Nummer nicht erfolgreich ist. Zur Optimierung kopieren wir die Artikelnummern (mpn) in ein weiteres Feld Namens „search_mpn_whitespace“ und wenden darauf einen anderen Analyzer an, mit einem speziellen Filter, der die Leerzeichen entfernt. Anschließend muss das neue Feld mit in den Suchoptionen aufgenommen werden.

Elasticsearch

Über das Elasticsearch Mapping kann das Verhalten der Suche im Onlineshop angepasst werden. Die Anpassungen müssen in den „settings“ und „properties“ der Elasticsearch Mapping Datei im JSON Format vorgenommen werden.

Siehe auch:

„Bitte nehmen Sie nur Änderungen vor, wenn Sie mit der Technik vertraut sind! Falsche Einstellungen können zum Datenverlust führen.“

Auslieferungszustand

Im Auslieferungszustand sehen die „settings“ im Elasticsearch Mapping wie folgt aus:

"settings":{
   "index.mapping.nested_objects.limit":20000,
   "max_result_window":100000,
   "max_ngram_diff":"50",
   "analysis":{
      "filter":{
         "nGram_filter":{
            "type":"nGram",
            "min_gram":1,
            "max_gram":20,
            "token_chars":[
               "letter",
               "digit",
               "punctuation",
               "symbol"
            ]
         }
      },
      "analyzer":{
         "nGram_analyzer":{
            "type":"custom",
            "tokenizer":"whitespace",
            "filter":[
               "lowercase",
               "asciifolding",
               "nGram_filter"
            ]
         },
         "whitespace_analyzer":{
            "type":"custom",
            "tokenizer":"whitespace",
            "filter":[
               "lowercase",
               "asciifolding"
            ]
         }
      }
   }
}

Weiteren Filter und Analyzer in den Settings erstellen

Die Suche im Onlineshop erfolgt über verschiedene Datenfelder, die alle auf den „nGram_analyzer“ verweisen. Wir erstellen einen weiteren Analyzer Eintrag namens „nGram_analyzer_whitespace“ und einen Filter den wir „whitespace_remove“ nennen.

"settings":{
   "index.mapping.nested_objects.limit":20000,
   "max_result_window":100000,
   "max_ngram_diff":"50",
   "analysis":{
      "filter":{
         "whitespace_remove": {
            "type": "pattern_replace",
            "pattern": " ",
            "replacement": ""
         },
         "nGram_filter":{
            "type":"nGram",
            "min_gram":1,
            "max_gram":20,
            "token_chars":[
               "letter",
               "digit",
               "punctuation",
               "symbol"
            ]
         }
      },
      "analyzer": {
        "nGram_analyzer": {
                "type": "custom",
                "tokenizer": "whitespace",
                "filter": [
                        "lowercase",
                        "asciifolding",
                        "nGram_filter"
                ]
        },
        "nGram_analyzer_whitespace": {
                "type": "custom",
                "tokenizer": "keyword",
                "filter": [
                        "lowercase",
                        "whitespace_remove",
                        "asciifolding",
                        "nGram_filter"
                ]
        },
        "whitespace_analyzer": {
                "type": "custom",
                "tokenizer": "whitespace",
                "filter": [
                        "lowercase",
                        "asciifolding"
                ]
        }
      }
   }
}

Artikelnummern kopieren und Analyzer zuweisen

Das Feld für die Artikelnummern in den Produktdatensätzen nennt sich „item_mpn_boxss“ und befindet sich unterhalb der „properties“ in der JSON-Datei. Unterhalb von „copy_to“ tragen wir ein neues Feld namens „search_mpn_whitespace“ ein, dadurch stehen die Artikelnummern als zusätzliche Kopie in dem Feld für die neue Analyse zur Verfügung.

        ...        
        "item_mpn_boxss": {
            "type": "keyword",
            "copy_to": [
                    "search_mpn",
                    "search_mpn_whitespace"
            ],
            "fields": {
                    "keyword": {
                            "type": "keyword"
                    }
            }
        },
        ...

Das Feld „search_mpn_whitespace“ muss noch unterhalb der „properties“ angelegt und dem neuen Analyzer zugeordnet werden.  

        ...        
        "search_mpn_whitespace": {
            "type": "text",
            "analyzer": "nGram_analyzer_whitespace",
            "search_analyzer": "whitespace_analyzer"
        },
        ...

Suchoptionen erweitern

In den Suchoptionen erweitern wir das „Boosting von Produktdetails“ um das neue Feld „search_mpn_whitespace“, damit es zukünftig bei den Suchanfragen berücksichtigt wird.

Siehe:

Elasticsearch zurücksetzen

Damit die Änderungen aktiv werden, muss Ihr ERP-System angewiesen werden, den Index im Elasticsearch zu löschen und mit den Einstellungen aus der geänderten Elasticsearch Mapping Datei neu aufzubauen (Elasticsearch zurücksetzen).

Siehe:

Hilfecenter: