Release Notes NG 1.1

Neue Features

Highlights

  • Es ist nun möglich, dass eine Channel-Hierarchie aus mehreren Ebenen von Parent-Channeln besteht. Wobei jeder Channel immer noch nur einen direkten Parent haben kann.
  • Kampagnen und Feedback-Texte können vererbt und teilweise überschrieben werden (ähnlich Facetten).
  • Die Mehrheit der Einstellungen, die aus einer Liste von Einträgen bestehen (beispielsweise Thesaurus und Präprozessor), können jetzt einzelne Einträge in einen oder mehrere andere Channel kopieren. Dies war bisher nur für Kampagnen möglich.
  • FACT-Finder ermöglicht nun die Durchführung von A/B-Tests.
  • Die Settings einer Konfiguration können nun von mehr als einer Person gleichzeitig bearbeitet werden, wenn die zu bearbeitenden Einstellungen nicht voneinander abhängen.

UI: Management Interface allgemein

Transaktionsmanagement

Beim Ausloggen mit offener Transaktion besteht nun die Option, die vorhandenen Änderungen zu speichern. Beim nächsten Einloggen können diese Änderungen dann wiederhergestellt werden, sofern der FACT-Finder zwischenzeitlich nicht neu gestartet wurde.

Kopieren einzelner Konfigurationseinträge

So wie es bisher nur für Kampagnen möglich war, können jetzt für die Mehrheit der Einstellungen, die aus einer Liste von Einträgen bestehen (beispielsweise Thesaurus und Präprozessor), einzelne Einträge in einen oder mehrere andere Channel kopiert werden. Dafür wurde in viele Tabellen ein neuer Button und eine neue Spalte zum Klonen von ausgewählten Einträgen hinzugefügt (siehe orange Markierung in Bild 3).
Ranking Regeln, CampaignSuggestProvider-Settings und Facetten-Bilder sind hiervon ausgenommen.

Autovalidierung

Es ist nun möglich, die Autovalidierung zu deaktivieren. Dies kann vor allem dann nützlich sein, wenn Änderungen durchzuführen sind, die die Konfiguration zwischenzeitlich in einen invaliden Zustand überführen. Vor dem Speichern der Änderungen wird die Validität der Konfiguration überprüft. Wie bisher können nur valide Konfigurationen gespeichert werden. Der Button zum Deaktivieren der Autovaliderung kann bei offener Transaktion in dem Popup zum Verwalten der Transaktion gefunden werden (siehe orange Markierung in Bild 9), wenn der aktuelle Nutzer den "Fortgeschrittenen Modus" aktiviert hat.

Präprozessor

Die Präprozessorseite wurde umgebaut und sollte nun deutlich schneller sein. Die Gruppen sind jetzt links aufgelistet. Die entsprechenden Werte der ausgewählten Gruppe werden rechts angezeigt. Beim Drag&Drop können Einträge innerhalb einer Gruppe, aber auch in eine andere bereits bestehende oder neue Gruppe verschoben werden. Es ist außerdem möglich, mehrere Einträge einer Tabelle gleichzeitig zu verschieben, wenn sie vorher über die Checkboxen ausgewählt wurden.

Facetten

Die Facettenseite wurde überarbeitet. Es kann nun für jede Einstellung einer Facette einzeln entschieden werden, ob die Werte für Suche und Navigation gelinkt werden sollen. Wenn die Werte gelinkt sind, übernimmt die Navigationsfacette, wie bisher, den Wert der Suchfacette, auch wenn dieser später nochmal geändert werden sollte.

Recommender

Die neue Darstellung der Beziehungen auf der Recommender Matrixseite erleichtert das Ablesen des aktuell angewandten Wertes einer Beziehung.
Dabei wird zwischen dem errechneten Wert, der sich auf Grund des Trackings ergibt, dem Standardwert und dem benutzerdefinierten Wert unterschieden. Der Standardwert ist der Wert, der für eine Ausgangskategorie für jede beliebige Zielkategorie verwendet werden soll. Er überschreibt den errechneten Wert. Der benutzerdefinierte Wert überschreibt den Standard- und damit auch den errechneten Wert und bezieht sich auf die Beziehung zwischen einer Ausgangskategorie und einer bestimmten Zielkategorie. All diese Werte gab es auch bisher schon.
In Bild 1 kann die neue Darstellung betrachtet werden:

  • Der Standardwert einer Ausgangskategorie kann über das Stift-Symbol neben dem Kategorienamen geändert/zurückgesetzt werden (siehe orange Markierung in Bild 1). Ist ein Standardwert gesetzt, wird er in Klammern neben dem Kategorienamen angezeigt.
  • Ist ein benutzerdefinierter Wert gesetzt, bekommt das Tabellen-Kästchen einen schwarzen Rahmen (siehe lila Markierung in Bild 1). Ein benutzerdefinierter Wert kann per Klick in das entsprechende Tabellen-Kästchen gesetzt und zurückgesetzt werden.
  • Der aktuell angewandte Wert einer Beziehung ist an der Farbe und dem Wert innerhalb des Tabellen-Kästchens zu erkennen. Wobei die Zahl in Klammern und die Farbe des kleinen Dreiecks unten rechts den errechneten Wert angibt (siehe rote Markierung in Bild 1). Dadurch ist nun leichter ersichtlich, ob der Wert der Beziehung geändert wurde.
  • Beim Bearbeiten eines Channels wird der Editor blau umrahmt. Zur Unterscheidung, dass gerade ein A/B-Test ausgewählt ist, ändert sich die Farbe in die Nutzerfarbe des Sperrmechanismus. Bei aktiven und beendeten A/B-Tests wird der Rahmen rot, um zu zeigen, dass der A/B-Test nicht mehr bearbeitet werden kann.
BILD 1: NEUE DARSTELLUNG DER WERTE DER BEZIEHUNGEN AUF DER MATRIXSEITE DES RECOMMENDERS


Kampagnenmanager

Vererbung bei Kampagneneinstellungen

Kampagnen nehmen nun an der Vererbung teil. Die einzelnen Einstellungen einer Kampagne lassen sich unabhängig überschreiben, sodass die restlichen Einstellungen weiterhin aus dem Parent-Channel übernommen werden.

Feedback-Texte können jetzt vererbt werden.

Neuer Dialog zum Kampagnen Editor

Der Kampagnen Editor hat einen neuen Dialog bekommen. Hierbei werden alle Änderungen direkt gespeichert.

  • Er nimmt nun die volle Breite des Bildschirms ein.
  • Über Abbrechen ist es möglich, alle gemachten Änderungen wieder rückgängig zu machen.
  • Die einzelnen Unterabschnitte sind nun über einzelne Tabs im Kopf des Dialogs erreichbar.
  • Die Fragen und Antworten der Beraterkampagnen werden nun in einer Baumansicht dargestellt. Wird eine Frage oder Antwort ausgewählt, kann sie im rechten Teil des Dialoges bearbeitet werden. Einige Einstellungen wie Überschreiben, Löschen und Hinzufügen lassen sich über die 3 Punkte neben dem Eintrag im Baum erreichen. Um eine bessere Übersicht zu erhalten, ist es möglich die Trennung zwischen Baum und Editor per Drag & Drop nach links oder rechts zu ziehen.

A/B-Testing

Neues Feature: A/B-Testing

FACT-Finder erlaubt nun die Durchführung von multivarianten A/B-Tests.
Folgende Features können A/B-getestet werden: Thesaurus, Präprozessor, Stoppwörter, Mülleimer, Kampagnen, Feedbacktexte, Tunespeed, Filter/Navigation, ASN-Vorschaubilder, Einzelwort-Suche, Semantic Enhancer und Recommendation.
A/B-Tests ermöglichen es, verschiedene Konfigurationen in einem Channel zu testen, indem die Nutzer per Zufallsprinzip in zwei Gruppen aufgeteilt werden. Kunden aus der A-Gruppe erleben die Suche basierend auf der Ausgangsversion der Konfiguration (Variante A). Die Suche für Kunden aus der B-Gruppe wird von der modifizierten Konfiguration (Variante B) definiert.
Nach der Testphase können verschiedene Statistiken (beispielsweise Conversion Rate und Traffic - siehe blaue Markierung in Bild 3) ausgewertet werden, um zu entscheiden, welche Variante die gewünschten Effekte besser erzielen kann.

How to A/B-Test

Es wurde eine neue Nutzer-Rolle AbTestManager hinzugefügt. Sie erlaubt es dem Nutzer A/B-Tests zu erstellen, zu bearbeiten, zu löschen, zu starten und zu beenden.

Um einen A/B-Test zu ermöglichen, wird eine A/B-Variante erstellt. Die A/B-Variante ist eine Art Konfiguration, welche allerdings nur die Änderungen zur Ausgangsversion der Konfiguration enthält. Bei der A/B-Variante handelt es sich nicht um einen Child-Channel.

Die Dauer und der Zeitraum des A/B-Testes können eingestellt werden. Wenn ein A/B-Test aktiv ist und das aktuelle Datum im Zeitraum des A/B-Testes liegt, wird dieser ausgespielt.

Es ist wählbar, welcher prozentuale Anteil der Benutzer die Suche auf Basis der B-Variante erleben soll (siehe grüne Markierung in Bild 2).

Einige UI-Seiten sind für die Verwendung mit einer A/B-Variante nicht vorgesehen. Der Installer beispielsweise kann mit einer A/B-Variante nicht verwendet werden, da es keinen Sinn macht, die Feld-Settings innerhalb eines Channels zu ändern. Diese Seiten sind in der linken Navigation deaktiviert, wenn sie mit einer A/B-Variante betrachtet werden.

Die Konfiguration einer A/B-Variante kann nicht mehr verändert werden, wenn der Test abgeschlossen ist. Außerdem können B-Varianten für einen laufenden Test nicht bearbeitet werden. Die Anpassung von A-Varianten ist mit der Einschränkung, dass Einstellungen, die in der B-Variante angepasst wurden, nicht gelöscht werden können, auch während eines Testes gestattet. Änderungen in einer A-Variante wirken sich auch auf die B-Variante aus.

Tracking und Suggest bei A/B-Tests

Das Tracking muss insofern angepasst werden, als dass für die Suggest-Api der neue sid-Parameter befüllt werden muss.

Wenn über die Apis keine SessionID (sid) an FACT-Finder übergeben wird, wird immer die Suche basierend auf der A-Variante ausgespielt, da anhand der SessionID entschieden wird, welche Variante des A/B-Testes ausgespielt werden soll. Dieses Vorgehen stellt sicher, dass Nutzer auch bei Folgeanfragen eine Suche basierend auf derselben Konfiguration erleben.
Die Diagnosesuche liefert die Ergebnisse entsprechend der aktuell gewählten Variante zurück: Wenn der A/B-Test-Bearbeitungsmodus und die B-Variante aktiv sind, werden immer Ergebnisse auf Basis dieser Konfiguration zurückgegeben. Sonst entsprechend der A-Variante.

BILD 2: A/B - TEST - UI NACH ANLAGE EINES NEUEN TESTES

A/B-Test UI

Die neue A/B-Test-UI kann über den Module-Menüpunkt in der linken Navigation erreicht werden. Hier können A/B-Tests erstellt (siehe orange Markierung in Bild 2), bearbeitet, gestartet, gestoppt und gelöscht (siehe rote Markierung in Bild 2) werden.

Um einen Test bearbeiten oder anlegen zu können, wird eine offene Transaktion für den Channel benötigt.

Zeitraum eines A/B-Tests

Ein A/B-Test hat, ähnlich wie Kampagnen, einen Start- und einen Endzeitpunkt, welche beim Erstellen des Testes festgelegt werden.
Für welchen Zeitraum Tests definiert sind, kann in der Verlauf & Planung - Übersicht abgelesen werden (siehe blaue Markierung in Bild 2).

Die verbleibende Dauer eines laufenden Testes kann in seinem Bereich in der oberen rechten Ecke abgelesen werden (siehe rote Markierung in Bild 3).

Bearbeiten eines A/B-Tests

Um eine Variante zu bearbeiten, kann diese neben der Channelauswahl gewählt werden.
Für die Bearbeitung der A-Variante greift das für einen Channel übliche Locking-Verhalten (siehe dazu Sektion "Multi-Transaktion - Änderungen am Transaktionsmanagement" in diesen Release Notes).

Änderungen der B-Variante

Eine Übersicht über die in den Varianten vorgenommenen Änderungen wird in der A/B-UI gegeben (siehe lila Markierung in Bild 3).

BILD 3: A/B - TEST - UI BEI LAUFENDEM TEST

Multi-Ebenen-Vererbung

  • Eine Channel-Hierarchie kann nun aus mehreren Ebenen bestehen. Wobei ein Channel immer noch nur einen einzigen direkten Parent-Channel haben kann. Allerdings ist es jetzt gestattet, dass der Parent-Channel auch einen Parent-Channel hat und so weiter.
    Bitte beachten Sie, dass jeder Channel einer Hierarchie eine eigene Konfiguration unterhält, welche beim Speichern eines Channels der Hierarchie bei der Validierung beachtet werden muss. Dies kann für sehr komplexe Hierarchien zu Performanceeinbußen beim Editieren führen. Vermeiden Sie deshalb unnötige Channel-Ebenen.
  • Wenn eine Einstellung in einem Parent gelocked ist (für Informationen über Locks siehe Abschnitt "Multi-Transaktion - Änderungen am Transaktionsmanagement"), ist sie auch in allen Child-Channeln gelocked.

Channelwizard

Der Channelwizard wurde ersatzlos entfernt. Beim Erstellen eines neuen Channels ist es nun möglich, direkt eine volle Hierarchie mit zu erstellen. Bei jedem Channel vom Typ "parent" lassen sich so direkt Kinder hinzufügen.

Personalisierung

FACT-Finder benutzt nun die von Worldmatch bereitgestellte Personalisierung in den Modulen Suche, Kampagnen-Manager, und Recommender. In weiten Teilen entspricht dies der Personalisierung von 7.3. WM legt Personalisierungsdaten entweder auf Disk oder in der Postgres-Datenbank ab.

Das Setting personalization.database.connectionString ist entfallen. Ist eine Postgres-Datenbank für den Importer konfiguriert, so wird diese zu Ablage der Personalisierungs-Daten benutzt, andernfalls die dateibasierte Persistenz. Unterschiedliche Postgres-Datenbanken für den Importer und die Personalisierung sind nicht vorgesehen.

Zurzeit besteht keine Unterstützung, um die Anzahl der durch Personalisierung neu positionierten Produkte zu beschränken. 

Hinzugekommen sind

  • personalization.cacheSize (Int, fff-Properties): gibt die Anzahl der im Speicher gehaltenen Personalisierungs-Daten an.
  • personalization.sessionRepositorySize (Int, fff-Properties): gibt die maximale Anzahl der Zuweisungen von Session-zu-Nutzer an, welche berücksichtigt werden.
  • sessionWeight (Int, Config-XML): beeinflusst die Abwertung älterer Session-Daten. Ein höheres Sesssion-Gewicht betont die Events der derzeitigen Session.

Neu-Importe in die Worldmatch-Datenbank werden bei (De-)Aktivierung der Personalisierung und bei Änderung der Persistenz-Einstellungen oder Cache-Größen notwendig. Geänderte Session- und Event-Gewichte werden nach Neuladen der Konfiguration auch ohne Neu-Import sofort berücksichtigt.

Verbesserungen / Änderungen

Wichtige Änderungen in der Konfiguration


Facetten

Die Einstellungen der Such- und Navigationsfacetten, die bisher in zwei verschiedenen Bereichen definiert wurden, auch wenn sie den gleichen facetName hatten, wurden in jeweils einer gemeinsamen Facette für jeden facetName zusammengeführt.
Zusätzlich befindet sich defaultResultsPerPage für Suche und Navigation nun in einem gemeinsamen Eintrag.
Weiterhin werden die Previewimages jetzt außerhalb der Bereiche für such - und navigationsbezogene Settings definiert und enthalten stattdessen zwei neue Attribute (search und navigation), über die definiert werden kann, ob das Bild für die Suche respektive Navigation aktiv sein soll.
Bitte beachten Sie die entsprechende example.xml.
Hier ein Beispiel einer Konfiguration in einem Child, wobei die Suchfacette partiell, die Navigationsfacette vollständig überschrieben ist:

<refinement>
  <search>
    <facets> 
        <facet id="67916351-5506-404a-9f47-aeb0877f380a">
            <displayName>Color</displayName>
            <previewImages>
                <previewImage id="956a7023-737a-404e-880e-0cbc6cc0d30c" value="white" url="White"/>
            </previewImages>
            <inheritance>
                <overrides>
                    <override id="956a7023-737a-404e-880e-0cbc6cc0d30c"/>
                    <override id="displayName"/>
                </overrides>
            </inheritance>
        </facet>
    </search>
    <navigation>
        <facet id="265c7865-38d9-4e76-a8d7-5212a6b34c53" sort="22">
            <field>ColorGroup</field>
            <breadCrumbText>{VALUE}</breadCrumbText>
            <detailedLinks>5</detailedLinks>
            <displayName>Color</displayName>
            <groupSort>count</groupSort>
            <selectionType>multiSelectOr</selectionType>
            <previewImages>
                <previewImage id="c4eddef4-af6a-4333-ae64-670c528b05cc" value="yellow" url="Yellow"/>
            </previewImages>
            <showPreviewImages>true</showPreviewImages>
        </facet>
    </facets>
   </navigation>
</refinement>


Die Facetten werden zu einer Facette zusammengeführt. Da die Facetten unterschiedliche Vererbungszustände haben, wird der ursprünglicheOVERRIDE- Zustand der Navigationsfacette jetzt über eine partielle Vererbung aller Settings erreicht. Die bereits vorher partiell vererbten Einstellungen der Suchfacette bleiben partiell vererbt:

<refinement>
    <facets>
        <facet id="67916351-5506-404a-9f47-aeb0877f380a">
                        <field>ColorGroup</field>
            <search>
                <displayName>Color</displayName>
            </search>
            <navigation>
                <active>true</active>
                <displayName>Color</displayName>
                <detailedLinks>5</detailedLinks>
                <moreElementsDescription/>
                <groupSort>count</groupSort>
                <parentFacetId/>
                <steps/>
                <unit/>
                <anton>0</anton>
                <minElementCount>2</minElementCount>
                <minResultsPerElement>1</minResultsPerElement>
                <removeIfQueryMatches>false</removeIfQueryMatches>
                <mandatory>false</mandatory>
                <parentGroupQueries/>
                <deselectText/>
                <sort>23.0</sort>
                <minResultCoverage>0</minResultCoverage>
                <breadCrumbText>{VALUE}</breadCrumbText>
                <numericGroupDigits>2</numericGroupDigits>
                <showPreviewImages>true</showPreviewImages>
                <valueType>RANGE</valueType>
                <selectionType>multiSelectOr</selectionType>
            </navigation>
            <inheritance>
                <overrides>
                    <override id="navigation.active"/>
                    <override id="navigation.detailedLinks"/>
                    <override id="navigation.deselectText"/>
                    <override id="navigation.minResultCoverage"/>
                    <override id="956a7023-737a-404e-880e-0cbc6cc0d30c"/>
                    <override id="c91c98c5-29c6-47cc-9d50-a6682db2885e"/>
                    <override id="navigation.displayName"/>
                    <override id="navigation.parentGroupQueries"/>
                    <override id="navigation.unit"/>
                    <override id="navigation.groupSort"/>
                    <override id="navigation.breadCrumbText"/>
                    <override id="navigation.steps"/>
                    <override id="navigation.numericGroupDigits"/>
                    <override id="navigation.selectionType"/>
                    <override id="navigation.mandatory"/>
                    <override id="navigation.valueType"/>
                    <override id="navigation.parentFacetId"/>
                    <override id="navigation.anton"/>
                    <override id="navigation.moreElementsDescription"/>
                    <override id="navigation.removeIfQueryMatches"/>
                    <override id="navigation.showPreviewImages"/>
                    <override id="navigation.sort"/>
                    <override id="search.displayName"/>
                    <override id="navigation.minElementCount"/>
                    <override id="navigation.minResultsPerElement"/>
                </overrides>
            </inheritance>
            <previewImages>                      
                <previewImage navigation="false" search="true" id="956a7023-737a-404e-880e-0cbc6cc0d30c" value="white" url="White"/>
                <previewImage navigation="true" search="false" id="c91c98c5-29c6-47cc-9d50-a6682db2885e" value="yellow" url="Yellow"/>
            </previewImages>
        </facet> 
    </facets>
</refinement>

Beispiel für die Änderungen in einem Nicht-Child-Channel:

<refinement>
    <search>
        <paging>
            <defaultResultsPerPage>12</defaultResultsPerPage>
        </paging>
        <facets>
            <facet facetId="Weight" id="b0a791a8-5572-4ee1-8ec8-12d8246c5d26" sort="8">
                <field>MultiFilter</field>
                <attribute>Weight</attribute>
                <displayName>Weight</displayName>
                <groupSort>ascending</groupSort>
                <minResultsPerElement>2</minResultsPerElement>
                <minResultCoverage>20</minResultCoverage>
                <unit>gr</unit>
            </facet>
            <facet facetId="Price" id="92b1e8d4-15d2-4743-bab5-d5cd3510d074" sort="9">
                 <field>Price</field>
                 <breadCrumbText>{VALUE}</breadCrumbText>
                 <displayName>Price</displayName>
                 <groupSort>ascending</groupSort>
                 <minResultsPerElement>2</minResultsPerElement>
                 <steps>slider</steps>
                 <unit>€</unit>
             </facet>
          </facets>
        </search>
    <navigation>
        <paging>
            <defaultResultsPerPage>12</defaultResultsPerPage>
        </paging>
        <facets>
            <facet facetId="Price" id="8574dc14-c060-4475-b320-0ebf9f25202c" sort="4">
                <field>Price</field>
                <breadCrumbText>{VALUE}</breadCrumbText>
                <displayName>Price</displayName>
                <groupSort>ascending</groupSort>
                <minResultsPerElement>2</minResultsPerElement>
                <steps>slider</steps>
                <unit>€</unit>
            </facet>
        </facets>
    </navigation>
</refinement>


Die Facetten werden zusammengeführt. Ebenso das Paging. Die sort-Einstellung wird ein eigenes Tag. Da die Weight-Facette nur für die Suche erstellt wurde, erhält sie im Abschnitt für die Navigationssettings ein active-Tag, das false ist und die Facette für Navigation deaktiviert:


<refinement>
    <paging>
        <defaultResultsPerPage search="12" navigation="12" />
    </paging>
    <facets>
        <facet facetId="Weight" id="b0a791a8-5572-4ee1-8ec8-12d8246c5d26">
            <field>MultiFilter</field>
            <attribute>Weight</attribute>
            <search>
                <displayName>Weight</displayName>
                <groupSort>ascending</groupSort>
                <unit>gr</unit>
                <minResultsPerElement>2</minResultsPerElement>
                <sort>9.0</sort>
                <minResultCoverage>20</minResultCoverage>
            </search>
            <navigation>
                <active>false</active>
            </navigation>
        </facet>
        <facet facetId="Price" id="92b1e8d4-15d2-4743-bab5-d5cd3510d074">
            <field>Price</field>
            <search>
                <displayName>Price</displayName>
                <groupSort>ascending</groupSort>
                <steps>slider</steps>
                <unit>€</unit>
                <minResultsPerElement>2</minResultsPerElement>
                <sort>10.0</sort>
                <breadCrumbText>{VALUE}</breadCrumbText>
            </search>
            <navigation>
                <sort>5.0</sort>
            </navigation>
        </facet>
    </facets>
</refinement>

Normalisierung

Stoppwörter, Thesaurus- und Mülleimer-Einträge werden jetzt erst bei der Verwendung normalisiert. Bisher wurden die Einträge unterschiedlich gehandhabt, je nachdem wo sie erstellt wurden:

  • Einträge, welche über die UI erstellt wurden, wurden bereits normalisiert in die Konfiguration geschrieben.
  • Wenn ein Eintrag von Hand in die xml eingetragen wurde, wurde der Wert so beibehalten, wie er hinzugefügt wurde.

Vererbung bei Kampangen

Um die Vererbung von Kampagnen zu ermöglichen, wurde die Kampagnen-Konfiguration ein wenig angepasst:

  • Alle Kampagnen-Settings haben nun eine ID.
  • Einige Einstellungen (wie criterion, question, answer, pushedProduct und product) haben ein sort-Attribut hinzubekommen, welches ihre Reihenfolge untereinander definiert und größer 0 sein muss.


Für Feedback-Texte wurde die number, welche die Position des Textes auf Shop-Seite angeben konnte, entfernt. Bereits vor 6.10 wurde die Nummer durch das label-Setting ersetzt und nur aus Kompatibilitätsgründen beibehalten. Um Multi-Transaktion zu ermöglichen, war es notwendig, das number-Setting zu entfernen.

Da Kampagnen einen Feedback-Text bisher über seine number referenziert haben, haben Feedback-Texte IDs bekommen, welche nun über das neue AttributfeedbackTextSettingId im Abschnitt für Feedback-Texte in Kampagnen verwendet werden:

<campaigns version="ng-1.0">
    <feedbackTextSetting>
        <number>0</number>
        <label>above searchbar</label>
        <isHtml>true</isHtml>
    </feedbackTextSetting>
    <campaign locale="en" codePage="ISO-8859-15" id="3453464561-24-dae-78234af">
                ...
        <feedback>
            <texts>
                <text id="0">...</text>
            </texts>
            <pushedProducts/>
        </feedback>
    </campaign>
</campaigns>
wird zu:
 
<campaigns version="ng-1.1">
    <feedbackTextSetting id="ad35678-5678-454-23234-345346">
        <label>above searchbar</label>
        <isHtml>true</isHtml>
    </feedbackTextSetting>
    <campaign locale="en" codePage="ISO-8859-15" id="3453464561-24-dae-78234af">
                 ...
        <feedback>
            <texts>
                <text id="12345346-12a45-123-56678" feedbackTextSettingId="ad35678-5678-454-23234-34534">...</text>
            </texts>
            <pushedProducts/>
        </feedback>
    </campaign>
</campaigns>

Falls ein Feedback-Text bereits ein Label besitzt, wird dieses beibehalten und die Nummer entfernt. Sonst wird als Label die alte Nummer benutzt und die Nummer entfernt.

  • Der Wert für sort - Settings (z.B. in Facetten und Präprozessor) muss jetzt für alle Channel größer als 0 sein. Früher wurde zwischen Parent- und Child-Channeln differenziert.
  • Die Sortierung wurde von Ranking Gruppen entfernt, da diese Einstellung bisher keine Auswirkung hatte.
  • Ranking Regeln sind nun ein Teil der Einstellungen ihrer Ranking Gruppe. Bisher wurden Ranking Regeln und Gruppen als getrennte Settings betrachtet und die Regeln enthielten den Namen ihrer Gruppe als Einstellung. Aus:

    <rankingConfig version="ng-1.0">
        <rankingRulesGroups>
            <rankingRulesGroup id="4230c825-8661-44bd-b025-343ebaebfc63" sort="1.0">
                <name>age</name>
                <active>true</active>
                <permanent>true</permanent>
                <startDate>0</startDate>
                <activeTimes/>
            </rankingRulesGroup>
        </rankingRulesGroups>
        <rankingRules>
            <rankingRule nr="0" type="timeRank" id="88f6d3ee-5df6-47af-b558-878ff7daee0c" sort="1.0">
                <field>Insert_Date</field>
                <groupId>4230c825-8661-44bd-b025-343ebaebfc63</groupId>
                <active>true</active>
                <exclude>false</exclude>
                <pattern>yyy-MM-dd</pattern>
                <timeRanks>
                    ...
                </timeRanks>
            </rankingRule>
        </rankingRules>
    </rankingConfig>


    wird also:

    <rankingConfig version="ng-1.1">
        <rankingRulesGroups>
            <rankingRulesGroup id="4230c825-8661-44bd-b025-343ebaebfc63">
                <name>age</name>
                <active>true</active>
                <permanent>true</permanent>
                <startDate>0</startDate>
                <activeTimes/>
                <rankingRules>
                    <rankingRule nr="0" type="timeRank" id="88f6d3ee-5df6-47af-b558-878ff7daee0c" sort="2.0">
                        <field>Insert_Date</field>
                        <active>true</active>
                        <exclude>false</exclude>
                        <pattern>yyy-MM-dd</pattern>
                        <timeRanks>
                            ...
                        </timeRanks>
                    </rankingRule>
                </rankingRules>
            </rankingRulesGroup>
        </rankingRulesGroups>
    </rankingConfig>

Die Vererbungsid für die Recommender Matrix wurde von matrix zu customMatrix umbenannt, um mit dem Namen des entsprechenden xml-Tags übereinzustimmen.

Multi-Transaktion - Änderungen am Transaktionsmanagement

Konflikte von Transaktionen

FACT-Finder gestattet nun das simultane Bearbeiten eines Channels durch mehrere Nutzer. Abhängige Settings können allerdings immer nur exklusiv angepasst werden: Sollen beispielsweise die Feedback-Texte bearbeitet werden, können zeitgleich keine Kampagnen gepflegt werden, weil letztere erstere verwenden können und ein gleichzeitiges Anpassen beider Settings zu Konflikten führen kann, die nicht automatisch aufgelöst werden können.

Locks

Das neue Transaktionsmanagement arbeitet mit Transaktionen und Locks (Sperrungen).
Wie bisher wird die Transaktion für einen gesamten Channel geholt und führt dazu, dass der Channel im Bearbeitungsstatus ist (siehe lila Markierung in Bild 4). Anders als bisher können jetzt beliebig viele Nutzer gleichzeitig eine Transaktion für einen Channel öffnen. Wird ein Setting bearbeitet, bekommt der Nutzer das Lock für die Einstellung und sperrt dieses dadurch. Locks werden nur bei geöffneter Transaktion angezeigt und können auch nur dann geholt werden.

Transaktionen und Locks in der UI

Die Locks werden über Schloss-Symbole dargestellt. Ein offenes Schloss (siehe blaue Markierung in Bild 4) bedeutet, dass der Nutzer das Setting sperren und bearbeiten kann. Ein geschlossenes Lock mit einer stilisierten Person (siehe gelbe Markierungen in Bild 4) bedeutet, dass der aktuelle Nutzer dieses Setting bereits gesperrt hat. Welcher Nutzer das Lock hält, wird beim Hovern über das Lock angezeigt sowie durch die farbige Umrandung (siehe gelbe Markierungen in Bild 4).
Hat ein anderer Nutzer die Einstellung gesperrt, wird ein geschlossenes Schloss ohne stilisierte Person angezeigt, die Einstellung ist außerdem durch den aktuellen Nutzer nicht zu bearbeiten und wird in Tabellen schraffiert dargestellt (siehe grüne Markierung in Bild 4).
In Tabellen wird für die gesperrten Einträge am Zeilenanfang durch einen dünnen farbigen Balken angezeigt, welcher Nutzer den Eintrag gesperrt hat (siehe rote Markierungen in Bild 4). Falls alle Einträge einer Tabelle oder Nicht-Tabellen-Settings gesperrt sind, wird dies durch einen farbigen Rahmen um das entsprechende Setting gekennzeichnet (siehe grüne Markierung und grüner Pfeil in Bild 5): Die Farbe richtet sich, wie bei dem Farbbalken am Zeilenanfang in Tabellen, nach dem Namen des Nutzers, der die Einstellung gesperrt hat, und muss nicht zwangsläufig eindeutig sein.
Ist das Lock-Symbol ausgegraut, handelt es sich entweder um ein implizites Lock, also ein Lock, welches auch gesperrt wurde, weil ein anderes Lock gesperrt wurde, oder es ist keine Transaktion für den Channel offen und deshalb kann mit dem Lock nicht interagiert werden.

Es ist nun nicht mehr notwendig, Einträge und Einstellungen in Child Channeln zuerst zu überschreiben, um diese zu bearbeiten. Der Vererbungsstatus wird nun automatisch gesetzt, sobald eine Änderung durchgeführt wird.

BILD 4: DIE VERSCHIEDENEN ZUSTÄNDE DER LOCKS

Reichweite von Locks

Es kann sich auf ein einzelnes Setting beziehen: beispielsweise einen speziellen Thesauruseintrag (siehe gesperrte Locks in Bild 4).

Es kann sich auch auf eine Reihe von Settings beziehen (siehe lila Markierungen in Bild 5). In diesem Fall sind automatisch alle zu diesem Lock gehörenden Einstellungen gesperrt. Das sind im Falle des Locks auf der Thesaurusseite alle Thesauruseinträge. Es kann sich aber auch um ein Setting und alle abhängigen Settings handeln: zum Beispiel sperrt ein Lock in der Tabelle der Feedback-Texte automatisch alle Kampagnen, da diese davon abhängen.

Außerdem gibt es noch die volle Sperrung (Full-Lock): Dabei werden alle Einstellungen eines Channels gesperrt. Solch ein Lock ist beispielsweise bei der Verwendung des Installers oder dem Wiederherstellen von Backups notwendig. Eine Vollsperrung wird bei Bedarf automatisch von FACT-Finder erstellt und kann durch einen Nutzer nur dadurch erreicht werden, dass alle Settings von Hand gesperrt werden. Aktionen, welche eines Full-Locks bedürfen, können entsprechend nur ausgeführt werden, wenn in einem Channel keinerlei Sperrung oder Transaktion existiert.

BILD 5: ANZEIGE, WENN EIN ANDERER NUTZER DAS LOCK EINER EINSTELLUNG HÄLT

Hält ein anderer Nutzer ein Lock und ist der aktuelle Nutzer ein Administrator, wird dem aktuellen Nutzer im Tooltip des Locks angeboten, das Lock zu übernehmen oder zu entfernen (siehe rote Markierung in Bild 5). Beim Übernehmen erhält der aktuelle Nutzer das Lock samt aller bisher vom anderen Nutzer getätigten Änderungen. Wird das Lock entfernt, wird es freigegeben und alle Änderungen verworfen.

Der Channel-Selektor zeigt an, in welchem Zustand sich ein Channel befindet.
Auch wenn der aktuelle Nutzer keine Transaktion geöffnet hat (siehe orange Markierung in Bild 6), kann anhand der kursiven Schrift des Channel-Names erkannt werden, dass ein anderer Nutzer bereits eine Transaktion für den Channel geöffnet hat (siehe rote Markierung in Bild 6).
Wird über die Combobox des Channel-Selektors gehovert, gibt das erscheinende Popup Informationen über die Nutzer, welche den Channel gerade bearbeiten und welche Locks die jeweiligen Nutzer halten (siehe grüne Markierung in Bild 6).

BILD 6: CHANNEL-SELEKTOR

  • Hat der aktuelle Nutzer eine offene Transaktion für einen Channel, erscheint, wie bisher auch, ein Stift neben dem Channel-Namen.
  • Wird in einem Parent-Channel eine Einstellung gesperrt, gilt diese Sperrung auch für alle Child-Channel, um Konflikte zu vermeiden.
  • Auch um den Vererbungsstatus eines Settings ändern zu können, wird eine offene Transaktion und ein Lock für das Setting benötigt.
  • Für die Verwendung des Installers und das Wiederherstellen eines Backups wird eine komplette Sperrung aller Einstellungen eines Channels benötigt. Entgegen der sonstigen Vorgehensweise darf in diesem Fall keine offene Transaktion und kein gesperrtes Lock vorhanden sein. Sind diese Voraussetzungen gegeben, kann der Installer gestartet beziehungsweise das Backup wiederhergestellt werden. Die entsprechenden benötigten Sperrungen werden automatisch von FACT-Finder erzeugt und wieder freigegeben.
  • Wenn ein anderer Nutzer eine Einstellung der Seite, welche der aktuelle Nutzer gerade anschaut, ändert, wird diese Einstellung beim aktuellen Nutzer aktualisiert, so der aktuelle Nutzer eine offene Transaktion für diesen Channel hat.
  • Innerhalb einer Tabelle zeigt das Lock-Symbol neben dem Lock-Zustand auch den aktuellen Zustand eines Eintrags an (siehe Bild 7: ungeändert - lila Markierung, gelöscht - orange Markierung, hinzugefügt - rote Markierung, geändert - grüne Markierung).
BILD 7: DARSTELLUNG DER VERSCHIEDENEN ZUSTÄNDE IN TABELLENEINTRÄGEN

Neu erstellte und gelöschte Einträge erzeugen automatisch ein gesperrtes Lock für den Eintrag.

Da gelöschte Einträge nun erst dann wirklich gelöscht werden, wenn das zugehörige Lock gespeichert wird, zeigen jetzt alle Channel-Typen (Children, Parents und Channel außerhalb einer Hierarchie) immer den Filter für gelöschte Einträge im Tabellenkopf an. Dies ermöglicht, dass gelöschte Einträge auch in der Tabelle wiederhergestellt werden können, indem das entsprechende Lock verworfen wird.

Beim Hovern über ein gesperrtes Lock werden die Änderungen, die für dieses Lock vorgenommen wurden, angezeigt.

  • Wenn es sich bei den Settings, welche das Lock verwaltet, nur um Einträge einer Tabelle handelt, werden die Unterschiede an dem jeweils zum Eintrag gehörenden Lock angezeigt (siehe blaue Markierung in Bild 8).
  • Kontrolliert das Lock einzelne Einstellungen, wie beispielsweise das Lock auf der Such-Algorithmus-Seite, dann zeigt das Lock oben neben der Seiten-Überschrift die Änderungen an.
BILD 8: ANZEIGE DER ÄNDERUNGEN FÜR EIN LOCK

Beim Klick auf den Transaktion verwalten - Button links neben dem Channel-Selektor (das Rädchen-Icon; siehe hellblaue Markierung in Bild 9) oder auf den Lock verwalten - Button beim Hovern über ein durch den aktuellen Nutzer gesperrtes Lock (siehe rote Markierung in Bild 8) öffnet sich das Popup, welches eine Übersicht über die eigenen gehaltenen Sperrungen und gemachten Änderungen gibt (siehe Bild 9).

BILD 9: DAS POPUP ZUM VERWALTEN DER TRANSAKTION

Transaktionsverwaltung

  • Links sind die verschiedenen Locks, welche der aktuelle Nutzer hält, aufgelistet.
    Ganz oben ist immer die gesamte Transaktion mit allen Locks zu finden. Hier kann auch die Auto-Validierung de-/aktiviert werden (siehe orange Markierung in Bild 9), wenn der aktuelle Nutzer den "Fortgeschrittenen Modus" aktiviert hat.
    Alle Locks und auch der Eintrag für die gesamte Transaktion haben je zwei Buttons: Das Häkchen speichert das Lock beziehungsweise die Transaktion samt allen zugehörigen Änderungen (siehe rote Markierung in Bild 9). Der andere Button (siehe lila Markierung in Bild 9) gibt das Lock respektive die Transaktion frei und verwirft dabei alle Änderungen.
  • Im rechten Bereich werden die Änderungen für das aktuell im linken Bereich ausgewählte Lock angezeigt (siehe dunkelblaue Markierung in Bild 9).
    Das Stift-Icon innerhalb der Tabelle leitet auf die zur Änderung gehörende Seite weiter.
    Im Kopf der Übersicht über die Änderungen finden sich eine Suche (siehe gelbe Markierung in Bild 9) und eine Option die Änderungen nach Channel, Setting oder gar nicht zu gruppieren (siehe dunkelgrüne Markierung in Bild 9).
    Beim Klick auf den Bearbeiten-Button im Tabellenkopf (siehe hellgrüne Markierung in Bild 9) wechselt die Ansicht in den entsprechenden Modus und einzelne Änderungen können ausgewählt und entfernt oder gespeichert werden. Diese Funktion ist nur im "Fortgeschrittenen Modus" verfügbar.
    Bitte beachten Sie, dass Änderungen unter Umständen auf einander aufbauen und sich Validierungsfehler ergeben können, die ein Zurücksetzen einer einzelnen Änderung verhindern. Zum Beispiel: Ein neuer Thesauruseintrag wird hinzugefügt und anschließend geändert. In der Übersicht sind für diesen Thesauruseintrag nun zwei Änderungen zu sehen. Wenn die erste, also das Hinzufügen des Eintrags, entfernt werden soll, wird ein Validierungsfehler geworfen, weil die zweite Änderung auf einem nicht vorhandenen Eintrag arbeiten würde, wenn die erste Änderung verworfen werden würde.

Locks von Einträgen in Tabellen erlauben auch das Speichern beziehungsweise Zurücksetzen der Änderungen für diesen Eintrag direkt am Lock selbst (siehe braune Markierung in Bild 4).

Betrieb

Im Clusterbetrieb können Worker nun den Director als OAuth-Authentification-Server verwenden. Damit können sich Worker gegenüber Analytics authentifizieren, wenn Analytics den Director als OAuth-Server verwendet.
Man muss zunächst in der fff.properties des Directors die Client-Credentials, bestehend aus einer ID und einem Secret, konfigurieren:

oauth.authorization.client.CLIENT_ID.secret=CLIENT_SECRET

Nach der Änderung muss der Director neu gestartet werden. Die Konfiguration des Directors kann man mit


überprüfen. Der Director sollte einen gültigen Token zurückgeben.

Weiterhin muss man alle Worker als OAuth-Clients mit den gleichen Credentials konfigurieren. Dazu muss man die fff.properties um die folgenden Einträge erweitern:

oauth.client.id=CLIENT_ID
oauth.client.secret=CLIENT_SECRET
oauth.server.url=http://director:8080/fact-finder


Campaign Manager

Die Buttons im Kampagnen-Wizard wurden überarbeitet. Statt eines "Close" Buttons (welcher vormals auch zum Speichern angeklickt werden musste) gibt es nun einen "Cancel" Button zum Abbrechen und einen "Finish" Button zum Schließen (gespeichert wird sowieso schon automatisch im Hintergrund). Das Abbrechen setzt dabei die jeweiligen Änderungen zurück: Bricht man das Erstellen einer Kampagne ab, so wird die erstellte Kampagne gelöscht. Bricht man das Editieren einer Kampagne ab, so werden die vorgenommenen Änderungen zurückgenommen. Desweiteren wurde der "Create" Button beim Erstellen einer Kampagne durch die klassischen "Next"/"Back" Buttons ersetzt. Falls man die Konfiguration nicht bearbeitet, sondern sich eine Kampagne nur anschaut, so bleibt der alte "Close" Button erhalten. 

SEO-Enhancer

Das Seo-Enhancer-Modul wurde entfernt. 

Technical

Der SEO-Enhancer und zugehörige Konfigurationseinstellungen wurden entfernt.  Die externen Apis (Webservice, xml, json, REST)  liefern weiterhin den "SeoPath" und "Keywords" zurück. Diese werden aber nicht mehr befüllt. Es ist auch immernoch möglich "useKeywords" in den "SearchControlParams" anzugeben. Doch wird dies von FACT-Finder ignoriert werden. Dieses Vorgehen dient lediglich dazu, auf Kundenseite Anpassungen an den Apis zu vermeiden.  Die Felder werden in einer späteren Version entfernt werden. 

Suggest

Technical

Für die Nutzung von A/B-Tets in Suggest gibt es mit sid einen neuen Parameter in der Suggest-API. Dieser Parameter beinhaltet die SessionId, über die ein A/B-Test ausgewählt wird. 

Der Response-Header {{Access-Control-Max-Age}} wird nun per Default mit dem Wert 3600 befüllt.

UI: Management Interface

In der FACT-Finder Oberfläche können nur noch die unterstützten Sprachen Deutsch und Englisch ausgewählt werden.  

Recommendation Engine

Technical

FF schreibt nun in jedem Fall nur die ausgespielten Produktvorschläge ins Recommendation-Log. War Personalisierung aktiv, so konnte es zuvor vorkommen, dass FF alle vorgeschlagenen Produkt-IDs ins Recommendation-Log geschrieben hat (zum Teil mehr als 1000 Produkt-IDs), was zu sehr langen Reco-Lognachrichten geführt hat.  Ebenfalls abhängig von der Personalisierung hat FF das Recommendation-Callback entweder mit allen Core-Recommendations oder der bereits gekürzten Produktliste aufgerufen hat. In NG sieht das Recommendation-Callback nun jederzeit alle Produkt-IDs des Core-Recommenders, und kann die Reihenfolge beeinflussen. Erst danach beschränkt FF die Produktliste auf die maximale Anzahl von vorgeschlagenen ("ausgespielten") Produkten. 

Auf der Matrix-Seite der Recommendation Engine gibt es nun einen neuen Button Selbstrelationen bearbeiten. Damit lassen sich alle Selbstrelationen (Relationen der Form X -> X, dh. die Matrix-Diagonale) auf einmal auf denselben Wert setzen. Darüber kann man auch die Customisierung aller Selbstrelationen auf einmal wieder aufheben. 

Import

Technical

In Download URLs von Importdateien wird das file Protokoll aus Sicherheitsgründen nicht mehr unterstützt. 

Tracking

Technical

Die Parameter origPos und origPageSize wurden aus der Tracking-API entfernt.  

After Search Navigation (ASN)

Technical

Cluster-Facetten wurden bisher in der Regel nur genutzt, um mehrere Felder zu einem Kategorie-Pfad zu bündeln. Daher sind Cluster-Facetten redundant zu Kategoriepfaden, erhöhen aber die Komplexität in FF deutlich. Um den Wartungsaufwand gering zu halten, wird nur noch ein Weg für die Erzeugung von Pfad-Facetten unterstützt: Kategoriepfade.  Support für das manuelle Clustern von Facetten ist entfallen. Für das Zusammenfügen von mehreren Feldern zu einem Kategorie-Pfad steht nun der CombineFieldsImportHandler zur Verfügung. Sollten die einzelnen Quellfelder über einen Feldwerttrenner verfügen, so gibt der entstehende Kategoriepfad das kartesische Produkt wieder. Dieser Import-Handler ist Delta-Update fähig, und erlaubt das gemeinsame Setzen neuer Werte für alle Quellfelder, und somit auch das Aktualisieren des resultierenden Kategoriepfads. 

FACT-Finder unterstützt jetzt normalisierte Filterwerte, so dass man beispielsweise {{filter=Brand:hand-fusspflege}} statt {{filter=Brand:Hand- & Fußpflege}} als Filter verwenden kann. Die Details zur Konfiguration können der {{config.xml.example}} entnommen werden. 

Sonstiges

Technical

Die Tags selected und implicitSelection des FacetElement Attributes in der Suchrückgabe wurden unter selected vereinheitlicht. Dadurch wurden die boolean flags durch die Strings TRUEFALSE und IMPLICIT ersetzt. 

Das Licence-File wurde um ein zusätzliches Tag "defaultLicence" erweitert, welches angibt, ob es sich bei dem Licence File um die default Licence (aus den defaultresources) handelt oder nicht. Sollte dies der Fall sein, startet der FF nun trotzdem, gibt in der UI auf einem Banner allerdings eine Benachrichtigung an den Benutzer aus, mit der Bitte die eigene "richtige" Lizenz zu benutzen (bzw. das Licence File dementsprechend zu überarbeiten). Ältere Licence Files ohne das neuen Tag werden als "richtige" Lizenzen erkannt. 

Die customClassConfig enthält nun die Configuration für alle Channel. Die alten customClassConfig.{CHANNEL}.json Datein werden nicht mehr eingelesen und werden in der Resources Migration entfernt bzw. mit der customClassConfig.json gemerged.  Siehe `customClassConfig.json.example` für die neue Struktur.  

Der Channel-Wizard wurde entfernt. 

Der Searchcallback FillInfoAsPreviewImageSearchCallback wurde hinzugefügt. Dieser entspricht von der Funktionalität her dem früheren FileBasedAsnEnrichmentSearchCallback. Das Feld "previewImageUrl" der Gruppenelemente innerhalb der ASN kann mit den Inhalten einer CSV Datei befüllt werden. Das Mapping findet auf Grundlage des Gruppen- sowie Elementnamen statt.  Einstellungen:

  • _sourceFileType_ Referenziert den zu verwendenden Importdateityp aus der Suchkonfiguration.
  • _facetNameField_ Überschrift der CSV-Spalte die den Namen der ASN-Gruppe enthält, auf die gemappt wird.
  • _facetElementField_ Überschrift der CSV-Spalte die den Namen des ASN-Elements enthält, auf das gemappt wird.
  • _facetInfoField_ Überschrift der CSV-Spalte, deren Inhalt in das "previewImageUrl" Feld des gemappten ASN-Elements übertragen wird.  


Die Diagnosesuche hat im rechten Tool Panel einen Eintrag für einen Test Modus erhalten, mit dem Einstellungen in der Diagnosesuche vorgenommen werden können ohne diese direkt in die Transaktion einzuspeisen. Danach ist es möglich die Änderungen bei Gefallen zu übernehmen, zu verwerfen oder in einen A/B-Test auszulagern. 

Mit Worldmatch ist es nicht mehr notwendig, einen separaten Cache für eine Abbildung von Multi-Attributs-Feld auf das zugehörige Quellfeld zu unterhalten. In der Folge entfällt die fff-Property multiAttributeIndexFile und die zugehörige Datei ff.\{CHANNEL}.db.multi

Die Zusammenfassung der persistierten Lizenzdateien hat sich geändert. Es gibt nun nur noch einen Job der alle älteren Dateien zusammen fasst. Dieser Job läuft stündlich. Dabei werden noch nicht abgeschlossene Zeiträume ignoriert. Dateien der laufenden Stunde werden demnach nicht zu einer Stundendatei zusammen gefasst. Ebensowenig werden die Stunden-Dateien des aktuellen Tages zusammen gefasst oder die Tagesdateien des aktuellen Monats. 

Properties in der fff.properties können jetzt auch aus Dateien befüllt werden. Beispiel:

importer.password={file:/run/secrets/pg_password}

Relative Pfade werden als relativ zum Resourcen-Ordner behandelt. 

Bugfixes

Import

Technical

Ein Fehler wurde gefixt, der dazu führte, dass bei einem Import für alle Channel, die Channel, die noch keine Zwischendatenbank haben, den Import  mit einem "Table not found in schema."-Fehler abgebrochen haben. Der Fehler wurde auch für einen Importstart über den "Import oder Cacheflush notwendig"-Dialog gefixt. Auch hier kam es für Channel ohne Zwischendatenbank zu Fehlern. 

Einem Master-Feld in der CSV in den Varianten verschiedene Werte zuzuweisen resultiert nun in einem Fehler zum Importzeitpunkt.  

UI: Suche

Technical

Ein Fehler wurde behoben, der bei bestimmten Konfigurationen dazu führte, dass keine Produktvorschläge ausgespielt wurden, wenn der SuggestWithProductSuggestionsFromSearchDatabase-Callback verwendet wurde. Die Suchparameter für Produktvorschläge, die von diesem Callback generiert werden, enthalten nun als Query die Produktnummer, falls diese vorhanden ist und das Feld für die Artikelnummernsuche freigegeben ist sowie ein Pattern enthält. Falls nicht die Produktnummer verwendet werden kann, wird die Masterartikelnummer benutzt, so vorhanden und samt Pattern für die Artikelnummernsuche konfiguriert. Wenn weder Produkt- noch Masterartikelnummer verwendet werden kann, wird der Produktname als Query verwendet. 

UI: Management Interface

Technical

Änderungen an Eigenschaften von Feldern wurden nicht korrekt im Transaction Dialog angezeigt. Dies lag an einer fehlenden Annotation und einem fehlenden Extractor für die Unterschiede. Des weiteren wurden die Benennungen der Eigenschaften wie z.B. Feldtyp für den Transaction Dialog angepasst. 

Kampagnenmanager

Technical

Das folgende Problem wurde behoben: Beim Erstellen oder Ändern einer Kampagne gab es ein Problem bei der Auslösung der Kampagne. Wurde hier ein Wert angegeben und dann die Eigenschaft in etwas geändert was keinen Wert benötigt (zum Beispiel ein Wechsel von "ähnelt" zu "ist leer"), so wurde der vorherige Wert trotzdem gespeichert und weitergegeben, was zu Anzeigeproblemen geführt hatte. 

Doppelte Einträge in der Liste der erlaubten Assignments haben zu Problemen beim Erstellen und Bearbeiten von Produktkampagnen geführt. Deshalb werden nun doppelte Einträge herausgefiltert.

Auf dieser Seite