Kleine Anpassung im Elastic Search Model

Issue #610 resolved
Dietmar Sauer (Stadt Nuernberg) created an issue

Durch eine minimale Anpassung um Elastic Search Model unter /modules/searchbar/elasticSearch/model.js könnten die Suchergebnisse mit Quelle angezeigt werden.

Die Quelle (Variable type) würde dann falls sie im Elastic Search Backend angegeben ist übernommen werden. Falls nicht wird die Quelle aus der config.json genommen. Das gleiche gilt für das Glyphicon.

Die Änderung folgt jetzt im Detail:

Ursprünglicher Code der Funktion createHit:

createHit: function (result, hitMap, hitType, hitGlyphicon, triggerEvent) {
    let hit = {};

    Object.keys(hitMap).forEach(key => {
        hit[key] = this.findAttributeByPath(result, hitMap[key]);
    });
    hit.type = hitType;
    hit.glyphicon = hitGlyphicon;
    if (Object.keys(triggerEvent).length > 0) {
        hit = Object.assign(hit, {triggerEvent: triggerEvent});
    }
    return hit;
},

Neuer Vorschlag:

createHit: function (result, hitMap, hitType, hitGlyphicon, triggerEvent) {
    let hit = {};
    hit.type = hitType;
    hit.glyphicon = hitGlyphicon;
    Object.keys(hitMap).forEach(key => {
        hit[key] = this.findAttributeByPath(result, hitMap[key]);
    });
    if (Object.keys(triggerEvent).length > 0) {
        hit = Object.assign(hit, {triggerEvent: triggerEvent});
    }
    return hit;
},

Der einzige Unterschied wäre das nun type und glyphicon vom Backend überschrieben werden können, da sie 5 Zeilen früher implementiert sind. Das der Scope der Veränderung minimal ist sind keine Auswirkungen auf andere Module zu erwarten. Diese Verbesserung würde, der Elastic Search Instanz in Frankfurt sowie bei uns in Nürnberg helfen.

Folgend noch Bilder mit der Verbesserung im Vorher-Nachher-Vergleich.

Vorher:

Nachher:

Comments (11)

  1. mkl

    Sehr geehrter Herr Sauer,

    haben Sie vielen Dank für Ihren Beitrag. Die von Ihnen gewünschten Änderungen wurden mit demPR 3281 umgesetzt.

    Die Anpassungen werden mit der nächsten Veröffentlichung verfügbar sein.

    Viele Grüße

  2. Patrick

    wir haben diesen Bug wie folgt gelöst:

     createRecommendedList: function (responseData) {
            const triggerEvent = this.get("triggerEvent"),
                hitMap = this.get("hitMap"),
                hitType = i18next.t(this.get("hitType")),
                hitGlyphicon = this.get("hitGlyphicon");
    
            if (responseData.length > 0) {
                responseData.forEach(result => {
                    //aconst hit = this.createHit(result, hitMap, hitType, hitGlyphicon, triggerEvent); //alt
                    const hit = this.createHit(result, hitMap, result.type, hitGlyphicon, triggerEvent); //fix
    
                    Radio.trigger("Searchbar", "pushHits", "hitList", hit);
                });
            }
            else {
                Radio.trigger("Searchbar", "removeHits", "hitList", {type: hitType});
            }
            Radio.trigger("Searchbar", "createRecommendedList", "elasticSearch");
        },
    

  3. Patrick

    Die Methode createHit() wird nun mit dem hitType des einzelnen Suchergebnis aufgerufen statt mit einem pauschalen HitType welcher für die gesamte Liste bestimmt war.

  4. mkl

    Hallo Patrick,

    vielen Dank für deine Nachricht.
    Dieses Issue wurde bereits resolved. Und wird von unserer Seite, soweit keine weiteren Fehler/Bugs auftreten, nicht weiter bearbeitet.

    Viele Grüße

    Melanie Klamp

  5. Dietmar Sauer (Stadt Nuernberg) reporter

    Hallo Patrick,

    vielen Dank. Können Sie mir mehr Informationen zukommen lassen, mit meinem Vorschlag ließen sich ja die Suchergebnis Icons, ja nach Elastic Search Ergebnis anzeigen (Schwimmbäder, Polizei usw). Wie muss dass im Masterportal konfiguriert werden bzw. wie sollen die Elastic Search Features konfiguriert sein?

    Mit freundlichen Grüßen

    Dietmar Sauer

  6. mkl

    Guten Tag Herr Sauer,
    Guten Tag Patrick,
    es sieht für mich so aus, als ob hier verschiedene Anfragen zusammenlaufen.

    Es sollte nun eigentlich möglich sein, die entsprechenden Icons aus dem Backend zu übergeben.

    Liegt derzeit noch ein weiterer Bug vor, durch den der hittype nicht korrekt zugeordnet wird?
    Und falls ja: besteht hierdurch Handlungsbedarf unsererseits?

  7. Dietmar Sauer (Stadt Nuernberg) reporter

    Hallo mkl,

    zu einem Bug, kann ich an dieser Stelle nichts sagen, mein Vorschlag damals war ja als Erweiterung gedacht, da eigene Icons thematisch Zugeordnet aus dem Elastic Backend damals nicht gingen… Wenn das jetzt geht ist das prima, allerdings wäre es schön zu Wissen wie hierfür Elastic konfiguriert werden muss. Als Beispiel nochmal wir wir das in der alten Masterportal Version mit leichter Code Erweiterung gemacht haben: GeoPortal Nürnberg (nuernberg.de)

  8. mkl

    Hallo Herr Sauer,

    Ihren Vorschlag und Ihre Änderungen haben wir übernommen.

    • Eine eigene thematische Zuordnung von Icons aus dem Elastic Backend ist nun möglich.

    Für die Konkreten Einstellungen des Elastic Search Backends, können wir an dieser Steller leider keine Hilfestellung liefern.
    Beantwortet das Ihre Frage?

    Beste Grüße
    Melanie Klamp

  9. Log in to comment