Technische Release Notes 7.3

Neue Features

Multi-Channel

FACT-Finder ermöglicht es, die Einstellungen eines Eltern-Channels in mehrere Kinder-Channel zu vererben. Dadurch ist es nun möglich generelle Einstellungen nur einmal vornehmen zu müssen und sie gegebenenfalls an einer zentralen Stelle wieder zu ändern.

Technical

Um an der Vererbung teilzunehmen müssen Channel neu erstellt werden. Um die Einrichtung zu erleichtern, besteht zudem die Möglichkeit einen bereits existierenden Channel als Parent- oder Child-Channel zu kopieren.

In der channels.properties werden Parent-Channel nicht in der channels, sondern in der templateChannels Liste geführt. Damit ersichtlich ist welche Kinder ein Channel hat, werden diese neben der channels-Liste ebenfalls unter parentName.children aufgelistet.

Neu erstellte Channel können einen Parent-Channel referenzieren und übernehmen mit wenigen Ausnahmen (z.B. den Pfad zur Datenbank) alle Einstellungen von diesem. Sollen Einstellungen des Kindes von denen des Parents abweichen, gibt es je nach Typ der Einstellung verschiedene Möglichkeiten:

  • Einfache Einstellungen (z.B. minSimi, Tunespeed, ASO, Personalisierung, etc): Diese können als überschrieben markiert werden, wodurch das Kind seinen eigenen Wert verwaltet und den des Parents ignoriert. Hierbei wird nur auf der obersten Ebene gearbeitet, d.h. wenn TuneSpeed überschrieben wird, wird das komplette Objekt vom Kind verwaltet, auch wenn nur similarWordsCount geändert wird.
  • Listen-Einstellungen (z.B. Stoppwörter, Thesaurus, Ranking Regeln, etc): Hier besteht die Möglichkeit eigene Einträge hinzuzufügen, die nur im Kind gültig sind. Ebenso ist es möglich, ähnlich den einfachen Einstellungen, einzelne Einträge zu überschreiben. Hierfür gilt, genauso wie für die einfachen Einstellungen, dass Einträge nur als ganzes überschrieben werden können.  Sollten Einträge im Kind unerwünscht sein, können diese als gelöscht markiert werden, wodurch sie in diesem Kind keine Anwendung mehr finden. 
  • Einzelne Einstellungen von Listeneinträgen (Facetten, SuggestionPostProcessoren, SuggestionProvidern): Für Facetten und Suggest-Klassen besteht neben den oben genannten noch die Möglichkeit nur einzelne Einstellungen eines Eintrages zu überschreiben, wobei der Rest weiterhin vom Parent geerbt wird.

Für den Fall, dass wieder auf den Wert des Parents gewechselt werden soll, ist es möglich eine Einstellung zurückzusetzen. Dadurch wird der überschrieben/gelöscht Status entfernt und wieder der Parent-Wert übernommen.

Damit in der Konfiguration ersichtlich ist, welche Einstellungen überschrieben oder gelöscht sind, bekommt jeder Eintrag eine in der Channelhierarchie eindeutige ID zugewiesen. Für einfache Einstellungen ist diese meist identisch mit dem xml-Tag, für Listeneinträge wird beim Erstellen eine UUID generiert.  Beim manuellen editieren der XML-Dateien ist zu beachten, dass die IDs von Listeneinträgen zwingend innerhalb der Channel-Hierarchie für die bearbeitete Konfiguration einmalig sein muss, da es sonst zu ID-Konflikten kommt, welche die Funktionalität beeinträchtigen. Daher wird bei gefundenen Konflikten, das Laden der Konfiguration abgebrochen. Aus dem gleichen Grund ist es erforderlich, dass jeder Eintrag eine ID besitzt.

Diese IDs können nun im Inheritanceblock (<inheritance>) der Konfiguration unter <overrides> und <deletes> eingetragen werden und die Einstellung somit aus der Vererbung ausgenommen werden. Beim Laden der Konfiguration wird geprüft, ob alle IDs des Inheritanceblocks vorhanden sind und überflüssige ggf. beim nächsten speichern entfernt.

Listeneinträge, deren Einstellungen einzeln überschrieben werden können (Facetten, etc), verwalten hierbei ihren eigenen Inheritanceblock. Zur Zeit sind dies:

  • Suchkonfiguration:
    • Facetten
    • Suggestkonfiguration
      • LogfileProvider
      • WhitelistProvider
      • BlacklistPostProcessor
      • SuggestionPriorityProcessor
      • DeduplicationSuggestionsProcessor
      • SearchDatabaseProvider
      • SearchWithListResponse
      • SearchWithBlockResponse

Parent-Channel sind nicht für den produktiven Einsatz bestimmt. Dennoch können zu Testzwecken Datenbanken erzeugt werden. Da es für Parent-Channel im Normalfall keine Tracking-Informationen geben wird, werden die Datenbank der Empfehlungsmaschine, Whats-Hot-Reports und Analyticsreports in diesem Falle leer sein.         

Campaign Manager

Neuer, vom Suchergebnis abhängiger Kampagnentrigger

Ein neuer Kampagnentrigger wurde eingeführt, mit dem es möglich ist, auf das Vorhandensein eines bestimmten Artikels im Suchergebnis zu reagieren.

Technical

Der Kampagnentrigger sucht im Suchergebnis nach einer spezifizierten Import-ID. In Betracht gezogen werden dabei die ersten 1000 gefundenen Ergebnisse die nicht mehr als 10% weniger Similarity haben als das beste gefundene Produkt. Wird dieser Trigger eingesetzt ist mit kleinen Performanceeinbußen zu rechnen, weil das Suchergebnis einmal durchsucht werden muss. Dabei werden aber alle Trigger gleichzeitig verarbeitet weshalb die Anzahl der Kampagnen keine große Rolle spielt.

Excel-Export für Kampagnen

Es ist jetzt möglich sich auf der Kampagnenseite einen Excel-Export aller Kampagnen eines Channels generieren zu lassen.

Mehrfachklonen von Kampagnen

Kampagnen können gleichzeitig in mehrere Channel geklont werden. Dabei kann ein Channel auch mehrfach ausgewählt werden, wodurch die Kampagnen mehrfach in denselben Channel geklont werden.

Product Comparison

ProductCompareCallback

Technical

Über das Interface ProductCompareCallback gibt es jetzt die Möglichkeit in den Prozess des Produktvergleichs einzugreifen. Wie in den anderen Callbacks gibt es auch hier eine Defaultimplementierung DefaultProductCompareCallback, welche alle Methoden überschreibt ohne eine Aktion durchzuführen. Wenn also nur eine oder wenige Methode überschrieben werden müssen, sollte man den DefaultProductCompareCallback erweitern, anstatt das Interface zu implementieren. Über die fff.properties ist es über den Schlüssel productCompareCallback.implementation möglich, eine eigene Implementierung des ProductCompareCallback zu konfigurieren. Es ist nicht möglich mehrere Callbacks zu konfigurieren, wie es beispielsweise bei der Suche der Fall ist. 

UI: Management Interface

Button zum Einfügen von Bildern im HtmlEditor hinzugefügt

Technical

In der Toolbar des HtmlEditors wurde ein Button zum Einfügen von Bildern hinzugefügt.

Installation Wizard / Migrator

Bestimmte Felder sind nun im Installer ausgeblendet

Technical

Datenfelder, die der Installationwizard erstellt und FACT-Finder intern sind (FFAfterSearchReorder, FFAutomaticSearchOptimization, DQAttributes und FFCheckoutCount) bekommen nun per Standard die Einstellung, dass diese nicht in den Ergebnisrückgaben vorhanden sind.

Operating

Anzahl von OpenMP-Threads jetzt für aktuellen Suchkontext setzbar

Technical

Es besteht nun ab 7.2 die Möglichkeit, bei der Verwendung von Table.find die Anzahl von OpenMP-Threads mitzuteilen, die für diese ausschließlich für diese Suche (abweichend vom konfigurierten Wert) benutzt werden soll.

Response / APIs

What's Hot Reports per REST-API

Technical

Die REST-API bietet nun zusätzlich die Möglichkeit die Konfiguration neu zu laden und What's Hot-Reports zu generieren. Mehr Informationen dazu können der Swagger-UI entnommen werden.

https://ng-demo.fact-finder.de/fact-finder/swagger-ui.html

Verbesserungen/Änderungen

Search behaviour

Das Verhaltensmuster von „Ähnliche Produkte“ ist nun beeinflussbar

Technical

Bei der Konfiguration eines Feldes für das Feature "Ähnliche Produkte" ist es nun möglich zu definieren, wie sich die Suchergebnisse bei mehreren Treffern in einem Multivalue-Felder verhalten. Die Einstellung wird über das Attribut assignmentOperator angegeben, und kann die Werte or (ODER-Verknüpfung) oder and (UND-Verknüpfung) besitzen. Standard-Wert ist and.

<similarArticleAttributeField assignmentOperator="or">true</similarArticleAttributeField>

Zusätzlich verwendet die Logik nun eine exakte Suche für Felder, die nicht mehrere Werte enthalten oder Kategoriepfade sind.

Automatic Search Optimisation (ASO)

Suggest

Backend: Änderungen an der Suggest Whitelist-Konfiguration

Technical

Die Konfiguration der Suggest Whitelist hat sich verändert. Die Whitelistitems befinden sich nun nicht mehr in einer separaten Xml-Datei, deren Pfad in der config.{CHANNEL}.xml von Suggest hinterlegt ist, sondern liegen von nun an direkt in der Suggest config.{CHANNEL}.xml. Sie sind im Bereich der WhitelistProvider-Definition unterhalb des conf-Elementes zu finden. Ein Whitelistitem benötigt von nun an eine Id, welche für den Channel und im Falle einer Channelhierarchie, für den Master und alle seine Childchannel, einzigartig sein muss. Das uniqueId Attribut wurde in id umbenannt. Außerdem sind die itemspezifischen Attribute in ein entsprechendes Element gewandert. Hier ein Beispiel: Stand in der whitelist.{CHANNEL}.xml früher


<list>

<item uniqueId="id1" id="customId">A</item>

<item uniqueId="id1">B</item>

<item uniqueId="id2">C</item>

<item custom="custom">D</item>

<item uniqueId="id4">E</item>

<item uniqueId="id5">F</item>

</list>


muss nun in der Suggest config.\{CHANNEL\}.xml Folgendes stehen:


<class>de.factfinder.suggest.indexer.WhitelistProvider</class>
<conf>

<items>

  <item id="uniqueId1" term="A">

     <customAttributes>

        <id>customId</id>

     </customAttributes>

  </item>

  <item id="uniqueId2" term="B"/>

  <item id="uniqueId3" term="C"/>

  <item id="uniqueId4" term="D">

     <customAttributes>

        <custom>custom</custom>

     </customAttributes>

  </item>

  <item id="uniqueId5" term="E"/>

  <item id="uniqueId6" term="F"/>

  </items>

</conf>


Backend: Änderungen an der Suggest Blacklist-Konfiguration

Technical

Die Konfiguration der Suggest Blacklist hat sich verändert. Die Blacklistitems befinden sich nun nicht mehr in einer separaten Xml-Datei, deren Pfad in der config.{CHANNEL}.xml von Suggest hinterlegt ist, sondern liegen von nun an direkt in der Suggest config.{CHANNEL}.xml. Sie sind im Bereich der BlacklistPostProcessor-Definition unterhalb des conf-Elementes zu finden. Ein Blacklistitem benötigt von nun an eine Id, welche für den Channel und im Falle einer Channelhierarchie, für den Master und alle seine Childchannel, einzigartig sein muss. Das uniqueId Attribut wurde in id umbenannt. Hier ein Beispiel: Stand in der blacklist.{CHANNEL}.xml früher


<list>

<item type="CONTAINS" uniqueId="ac3d0b1d-7be6-4207-a95b-48e20ae658f2">%</item>

<item type="CONTAINS" uniqueId="903bef21-f5aa-40bf-9d8a-03a7152d1890">*</item>

</list>


muss nun in der Suggest config.{CHANNEL}.xml Folgendes stehen:


<class>de.factfinder.suggest.indexer.BlacklistPostProcessor</class>

<conf>

<items>

<item type="CONTAINS" id="ac3d0b1d-7be6-4207-a95b-48e20ae658f2">%</item>

<item type="CONTAINS" id="903bef21-f5aa-40bf-9d8a-03a7152d1890">*</item>

</items>

</conf>


Abschaltbarkeit der Abwertung des zweiten Begriffs eingeführt

Die Aufwertung für Suggest-Ergebnisse im List-Mode, die mit dem Suchbegriff beginnen, kann nun aktiviert bzw. deaktiviert werden.

Technical

Die Aufwertung kann über die allgemeine Suggestseite über den Punkt "Upvalue when suggestion starts with query" aktiviert bzw. deaktiviert werden.

Import

Prüfung der Mindestdateigröße nach dem Download

Technical

Beim Import wird die Mindestdateigröße direkt nach erfolgreichen Download geprüft.

Hinweis bei veralteten oder fehlenden What’s Hot-Daten

Technical

Daten- und Suggest-Import setzen voraus, dass What's Hot-Daten vorliegen, um Tracking-Felder zu befüllen bzw. geeignete Suchbegriffsvorschläge zu ermitteln. Liegen diese What's Hot Daten beim Import nicht vor oder sind veraltet, weist eine Box auf das fehlende "analytics-cache-file" hin.

Mehrere Exceptions von ‚UpdateDeleteInsert‘ verhindern den Batch-Prozess nicht mehr

Technical

Exceptions welche wärend des Aktualisieren, Einfügen oder Löschen mit Methoden des `UpdateDeleteInsert` entstehen, werden nun zusammengefasst und nach dem Ende des Vorgangs als RecordsException geworfen. Wenn nur eine Exception entsteht wird diese stattdessen geworfen.

Campaign Manager

Der Standard-Operator zur Kriterienverknüpfung in Kampagnen wurde angepasst

Technical

Die Standardverknüpfung für Kriterien für Kampagnen und RankingRules wurde von "Und" zu "Oder" geändert.

Personalization

Neues Personalisierung-Tag für Suchkonfiguration eingeführt

Technical

In der Xml der Suchkonfiguration wurde dem <personalization>-Tag ein neuer Kindknoten hinzugefügt. Das <active>-Tag bestimmt nun darüber, ob die Personalisierung für einen Channel aktiviert ist. Der Defaultwert ist false. Das Personalisierungsmodul muss weiterhin über usePersonalization in den fff.properties aktiviert werden.

Releasenotes für WebComponents Security schreiben

Technical

FACT-Finder für Web Components Security konfigurieren:

1. In der pagepermissionmanagement.xml müssen alle Module die der Kunde über die Web Components nutzt von der Standard username, timestamp, password Authentifizierung befreit werden. Dies wird erreicht indem man die entsprechende API als include Tag im pagePermission Tag definiert:


<pagePermission channels="test" group="DefaultGroup">

<include>/Search\.ff</include>

<include>/Suggest\.ff</include>

</pagePermission>


Im oben stehenden Beispiel wurden für den Channel test die Search.ff und Suggest.ff API von der Standard Authentifizierung befreit.

2. Damit nun die beiden APIs welche von der Authentifizierung befreit wurden nicht "missbraucht" werden können und jeder der die URL von FACT-Finder kennt Anfragen stellen kann, wird im nächsten Schritt in der fff.properties die Web Components Security aktiviert:

useWebComponentsSecurity=true

3. Als nächstes werden die beiden APIs die durch die Web Components Security gesichert werden sollen wie folgt angegeben:

webComponentsSecuredPaths=Search.ff, Suggest.ff

Über die Property webComponentsSecuredPaths wird gesteuert welche API von der Web Components Security gesichert werden sollen. Einzelne APIs müssen durch Komma getrennt angegeben werden. Damit ist es nicht mehr möglich die angegebene API zu "missbrauchen" wenn der Request nicht den Security Richtlinien entsprechen. Da die Web Components wissen wie diese aussehen, können diese mit der API kommunizieren. Zu beachten gilt hier jedoch, dass man die webComponentsSecuredPaths nicht pro Channel konfigurieren kann, sondern nur global. Es ist also nicht vorgesehen, dass der Kunde in einem FACT-Finder zwei Channel mit Web Components benutzt und dabei unterschiedliche APIs freischaltet. In der pagepermissionmanagement.xml kann dies zwar konfiguriert werden, jedoch nicht in der fff.properties.

4. Da die Web Components FACT-Finder über einen XHR Request anfragen, FACT-Finder aber in den meisten Fällen nicht auf dem gleichen Server wie der Shop betrieben wird, muss man CORS entsprechend konfigurieren. Die Konfiguration in der fff.properties sieht wie folgt aus:

httpAccessControlAllowOrigin=http://myShop.com, http://testMyShop.com

Durch diese Konfiguration setzt FACT-Finder den HTTP Response-Header Access-Control-Allow-Headers auf den konfigurierten Wert und der XHR Request kann durchgeführt werden. Für den Fall, dass der Kunde auch seinen Test-Shop an FACT-Finder anbindet, können mehrere URLs Komma getrennt angegeben werden. Es ist auch möglich diesen Eintrag wegzulassen, dann setzt FACT-Finder Access-Control-Allow-Headers standardmäßig auf * was wir jedoch nicht empfehlen, da somit jede Domain XHR Request durchführen kann.

5. Da ein potentieller Angreifer die Response-Header leicht auslesen kann, wird die orign von den Web Components im Request nochmal verschleiert übertragen. Die Web Components Security prüft diesen Wert, jedoch ohne einen entsprechenden Response-Header zu setzten. Die Konfiguration in der fff.properties sieht wie folgt aus:

webComponentsSecurityOrigins=http://myShop.com, http://testMyShop.com

In den meisten Fällen werden hier die gleichen Einträge wie unter 4. stehen. Ausnahmen bilden die Fälle wo man * als Wildcard benutzt oder den Eintrag aus 4. gar nicht vornimmt. Mehrere URLs können wie gehabt Komma getrennt angegeben werden. Es ist auch möglich * als Wildcard anzugeben, jedoch ist dann nur ein Wert erlaubt, nämlich *.

6. Damit die Web Components Anfragen analysiert werden können, wurde ein Logging eingebaut welches bei Bedarf aktiviert werden kann. Die Einstellung in der fff.properties sieht wie folgt aus:

logWebComponentsSecurityRequests=true

Ist das Logging aktiviert, werden die Web Components Requests nach

{APP_RESSOURCES}/{logPath}/webcomponents/wc.%d{yyyy-MM-dd}.log

geloggt.

Recommendation Engine

Keine vorherige Umrechnung der Auf- und Abwertungen mehr bei Custom Relations

Technical

Die benutzerdefinierten Auf- und Abwertungen von Relationen der Recommendation Engine (custom relations) werden nun ohne vorherige Umrechnung in der Konfiguration abgelegt. 

Instore Ads

InstoreAds Kampagnen funktionieren nicht mehr wortweise

Technical

Keywords innerhalb von InstoreAds-Kampagnen werden nun nicht mehr wortweise verglichen, da dies zu einigen Fehlzuordnungen geführt hat. Beispiel: Eine Kampagne für "ipod kabel" würde nun nicht mehr beim Suchbegriff "ipod" ausgelöst.

InstoreAds werden nun mit Equals anstatt Ähnlich verglichen

Technical

Keywords in InstoreAds-Kampagnen vergleichen den Suchbegriff nun nur noch exakt, da der Vergleich mit Fehlertoleranz zu einigen Fehltreffern geführt hat.

Kampagnenmodus bei InstoreAds einstellbar gemacht

Technical

  • In der InstoreAd-Konfiguration gibt es nun eine neue Einstellung, mit der man angibt, welchen Kampagnenmodus die InstoreAds-Produkte nutzen, sollten welche vorhanden sein. Die Einstellung wird über campaignMode gesetzt und kann die Werte CAMPAIGN, CAMPAIGN_REMOVED_FROM_SEARCHRESULT, MERGE, SEARCHRESULT haben, wobei MERGE das Standardverhalten ist.
  • Es besteht nun die Möglichkeit die Anzahl der InstoreAds-Produkte, die maximal ausgespielt werden sollen, nicht mehr zu begrenzen. Hierfür muss die Option maxPushedProducts auf 0 gesetzt werden.

Anpassung am Kairion Reporting durchgeführt

Technical

Das InstoreAds-Reporting überträgt nun die Anzahl der Klicks auf die InstoreAds-Produkte, die Anzahl der zugehörigen Warenköbe und die Anzahl der verkauften Produkte.

SEO Enhancer

Neues Aktivierungs-Tag

Technical

Die SEO-Konfiguration versteht nun ein neues active-Tag mit dem das Modul aktiviert bzw. deaktiviert werden kann. Die Existenz eines seo tags reicht nicht mehr aus um das Modul zu aktivieren. Der Migrator fügt <active>true</active> zu jeder existierenden Seo-Konfiguration hinzu.

Installation Wizard / Migrator

Migrator von 6.9 auf 7.2 erstellt keine unnötige Scheduler mehr

Technical

Die Datei trackingTransfer.properties wird nun während der Konfigurationsmigration zu FACT-Finder 7.2 entfernt.

Standard Scheduler-Konfiguration wird beim App-Start automatisch erzeugt

Technical

scheduler/reloadAllDatabases.properties wird jetzt bei jedem Applikationsstart automatisch erzeugt, falls nicht vorhanden. Deaktivierung ist weiterhin per enabled Flag möglich.

Migrator-Release Notes ausgelagert

Technical

Release notes, die den Migrator betreffen, sind nun im entsprechenden Projekt in einer CHANGELOG.md und nicht mehr in diesem Dokument enthalten.

TagCloud

Unterstützung von Vererbung

Technical

Die Einträge der von TagCloud verwendeten Blacklist (default: conf/tagCloud/blacklist.xml) werden nun direkt in der TagCloud-Konfiguration in der Suchkonfigurations xml abgespeichert. Die alten Blacklist-Dateien werden nach der Migration gelöscht.

Data Quality (DQ)

Data Quality Backend

Technical

Workflows, welche in der Data Quality Konfiguration definiert werden, benötigen nun jeweils eine Id, welche für eine Channelhierarchie einzigartig sein muss. Eine Channelhierarchie umfasst entweder einen Channel, welcher keinen Parentchannel besitzt, oder einen Parentchannel und all seine Childchannel.

UI: Management Interface

Vorauswahl des Import-Typs bleibt nun nach Import-Abschluss erhalten

Technical

Nach einem Suggest- oder Recommendations-Import eines Channels wurde der gewählte Importtyp bislang auf die Voreinstellung "Data" zurückgesetzt. Das wurde geändert, um etwa den Import eines bestimmten Typs auch für mehrere Channel möglichst zügig starten zu können.

Hinzufügen von existierenden Feldern in der Recommendation-Matrix nicht mehr möglich

Technical

Die Oberfläche zur Recommendation Engine erlaubte mehrfach das gleiche Feld in den Matrix-Einstellungen auszuwählen, was zu einer Fehlermeldung führte. Jetzt bietet die Oberfläche dem Benutzer nur Felder an, die noch nicht ausgewählt sind.

Neue Zeitzonen-Hinweise

An den Stellen in der Oberfläche, an denen eine Uhrzeit angegeben ist, steht nun zusätzlich die zugehörige Zeitzone.

Neue Warnmeldung in der Systemübersicht

Technical

Auf der Systemübersicht wird nun eine Warnmeldung angezeigt, falls die Einstellung server.public.url in der fff.properties nicht konfiguriert ist.

Keine Fehlermeldung statt der Login-Werbung mehr

Technical

Beim Ändern der URL für die Werbung auf der Login-Seite erscheinen nun keine Fehlermeldungen mehr.

Ein Dialog in der Recommender-Matrix wurde eingeführt

Die Recommender-Matrix suggeriert immer einen editierbaren Status, auch wenn keine Transaktion offen ist. Bei dem Versuch einen Wert der Matrix zu verändern, wurde bisher keine Aktion durchgeführt. Nun wird ein Dialog geöffnet, der es ermöglicht direkt eine Transaktion zu öffnen und den entsprechenden Wert zu editieren.

Verschlanken von fff-ui

Technical

Die UI-Anwendung hatte mit dem Release von 7.2 erheblich an Dateigröße zugelegt. Die Struktur wurde nun optimiert, so dass die Anwendung in etwa die gleiche Größe hat wie in FACT-Finder 7.1  

Internal

FF-11307

UI: Search (Demoshop)

Zusätzliche Feldrolle für applyFieldRoles

Technical

Die applyFieldRoles-Methode des Demoshops bekommt als zusätzliche Feldrolle recoProductNumber übergeben. Sollte die Reco deaktiviert oder das matchOnField nicht gesetzt sein fehlt diese Feldrolle im Mapping.

Warenkorb-Kampagnen werden nun unterstützt

Technical

Momentan gibt es nur ein einziges Template für Pushed Products mit Platz für beliebig viele Produkte. -> Up-Selling und Cross-Selling beispielsweise werden somit im selben Template angezeigt und nicht als Up-Selling und/oder Cros-Selling Produkte hervorgehoben (Beispielsweise durch eine Überschrift "Up-Selling" o.ä.).

Code Structure

Damit Kategorie-Filter für PushedProducts korrekt funktionieren, passiert die Generierung von virtuellen Feldern aus KategoriePfaden jetzt vor den "beforeFirstFiltering" Callback-Aufrufen.

Dateigröße von fff-ui WAR wurde reduziert

Technical

Interne Umstrukturierung und Lösen einzelner Abhängigkeiten haben ermöglicht, die Größe der fff-ui WAR zu halbieren.

Scoping-Probleme bei mehreren Threads behoben

Technical

Hier nochmal der Hinweis, dass seit 7.2 der Support für Custom-Placeholder-Resolver eingestellt worden ist. Darauf aufbauend konnten einige Vereinfachungen durchgeführt werden. 

  • Das Festellen des "Current-Channel" wurde vollständig vom Auflösen der Platzhalter getrennt. Damit entfällt die Notwendigkeit für einen thread-lokalen Resolver-Stack.
  • Dies impliziert, dass PlaceholderManager, welcher diesen Stack verwaltet hat, ersatzlos entfällt.
  • Alle Klassen-Namen in Verbindung mit dem Resolving-Mechanismus haben ihren I-Präfix verloren, so wird etwa IPlaceholderResolver zu PlaceholderResolver.
  • Reihenfolge und Definition der derzeitigen Resolver ist in de.factfinder.resolver.Resolvers#defaultResolvers festgelegt.
  • Resolver für Live- bzw. Staging-Umgebungen wurden entfernt. Diese waren zuvor auch nicht in der initialen Resolver-Liste enthalten und mit dem Entfall der Custom-Resolver gab es auch keine Möglichkeit mehr, diese per Konfiguration hinzuzufügen.
  • Um zu erklären, dass der derzeitige Channel explizit nicht gesetzt werden soll, wurde das Gegenstück NoChannelContext eingeführt (de.factfinder.spring.FactFinderContextService#noChannelContext).
  • Der Current-Channel ist nun tatsächlich ein Channel-Objekt. Somit werden beliebige Strings nicht mehr akzeptiert. Damit sind auch divergierende Vorstellungen vom Current-Channel verschwunden (aka getCurrentChannel().getName() != getChannelNameFromPlaceholder() )
  • In fff-core steht das Interface CurrentChannelProvider zur Verfügung, welches den derzeitigen Channel zur Verfügung stellt. Prinzipiell ist das kleinstmögliche Interface dem FactFinderContextService vorzuziehen - dies kann auch PlaceholderResolver sein.
  • Bereits zuvor bestand keine Garantie, dass FileWithFallback aufgelöste Pfade beinhaltet. Je nach Parametern des Konstruktor-Aufrufes verglichen zwei FileWithFallback s entweder Pfade mit oder ohne Platzhaltern. Framework-weit ist nun vorgesehen, prinzipiell FileWithFallbacks mit Platzhaltern zu erstellen und Pfade ausschließlich über Methoden zu benutzen, die auf get*Path(PlaceholderResolver lauten, um Pfade mit ersetzten Platzhaltern zu erhalten.
  • Ist u.a. bei FileWithFallback oder ImportFile keine Auflösung der Pfade gewünscht, so ist bevorzugt de.factfinder.placeholder.IdentityPlaceholderResolver (ehem. AsIsPlaceholderResolver) einzusetzen. Dies dokumentiert die Absicht in ausreichender Weise, erfordert keine zusätzlichen Methoden und kann auch als Surrogat im Test herhalten. Dies stellt gleichzeitig Ersatz für PlaceholderManager#setActive(boolean) her.
  • FileWithFallback besitzt nach wie vor miserable Qualitäten als Cache-Key, da nie garantiert war/ist, wann wer in welchen Kontext die Platzhalter ersetzt hatte oder auch nicht. Empfehlung ist daher, eigenständig Pfade ohne Platzhalter als Cache-Key für Dateien heranzuziehen.
  • Die Optimierung nicht-aufgelöste Platzhalter zu speichern und deren Neu-Berechnung einzusparen ist entfallen. Spätestens seit dem Verbot von Custom-Resolvern ist es recht sicher, dass jeder Platzhalter auch jederzeit ersetzt werden kann.
  • Die Optimierung, dass ein FileWithFallback als Timeout-Key agieren kann, um nicht ständig überprüfen zu müssen, ob die primäre oder die Fallback-Datei ausgeliefert werden soll, ist entfallen (und damit auch die enge Kopplung an den Timeout-Manager). Details finden sich in diesem PR-Kommentar. Hauptargumente sind, dass häufig neue FileWithFallbacks erstellt wurden, anstattt alte wiederzuverwenden sowie das aufgehobene FileWithFallbacks sowieso immer nur zum Ablauf des Timeout-Manager-Intervals angefasst wurden.
  • Die Vorstellung vom lastUsedChannel, der innerhalb einer HTTP-Session gespeichert wird, ist Geschichte. Dieser wurde innerhalb des Frameworks sowieso nie aktualisiert. Lesende Zugriffe über zugehörige Util verwiesen sowieso auf den Current-Channel.
  • null ist nun der allzeit vorherrschende Default-Channel, sollte zurzeit keiner gesetzt sein. Einen zufälligen Channel (abhängig von Namen, Sortierung und Sichtbarkeit) als Fallback für eine Default-Channel auszuweisen, erscheint mit Risiken behaftet, da schwer nachzuvollziehen. Die Vorstellung des Default-Channel kommt nur noch zum tragen, sofern etwa SearchParams ohne Channel konvertiert werden.
  • de.factfinder.servlet.ContextListener ist entfallen. Der ServletContext kann normal per DI injected werden. de.factfinder.util.AppContextNameProvider kapselt das Abholen des Kontext-Namens.
  • de.factfinder.util.AppResourcesProvider kapselt das Abholen des Ressourcen-Verzeichnisses.

Interne Repräsentation von FileWithFallback angepasst

Technical

Die interne Repräsentation einer Datei wurde geändert (FileWithFallback). Der sichtbare Effekt davon ist eine leicht erhöhte Zunahme von Dateizugriffen im Regelbetrieb.

Operating

Platzhalter für Verzeichnisse getrennter Logs eingefügt

Technical

Um im Falle eines zentralen Ressourcenverzeichnisses die Logs der verschiedenen Serverknoten getrennt zu loggen, kann folgender neuer Platzhalter in den Java Optionen gesetzt werden: fff.node.logs.subdirectory (z. B. auf *nix Systemen: -Dfff.node.logs.subdirectory=`hostname`). Er wird das konfigurierte Unterverzeichnis an den Standard-Pfad {FACTFINDER_RESOURCES}/{WEBAPPNAME}/logs, der Anwendungs-, Such-, Tracking- und Recommendations-Logdateien anfügen. Bitte stellen Sie sicher, dass existierende Such-, Tracking- und Recommendations-Logdateien ins designierte Such-/Tracking-Logunterverzeichnis des Nodes kopiert werden, da ansonsten Tracking bezogene Felder im Suchindex, Suchbegriffsvorschläge und/oder die Recommendations-Datenbank nicht auf Basis aggregierter Logs durch die Analytics Anwendung befüllt werden können.

Umgebungsvariable für Resourcen bei FFF und FFA vereinheitlicht

Technical

Die Analytics Umgebungsvariable ffa.config.location wurde analog zum FACT-Finder Framework zu FACTFINDER_RESOURCES umbenannt.

AppLogs von UI werden nun in logs-Unterordner abgelegt

Technical

Die Application-Logfiles der UI-Application finden sich nun im Unterverzeichnis logs/app/.

Operating

Deployment-API wieder eingebaut

Technical

Die Deployment-API ../Deployment.ff ist nun wieder verfügbar, diese war im Zuge der Entfernung einiger Features des alten Oberfläche entfernt worden.  

Configuration

Response / APIs

JSON-Schema der Produktkampagnen überarbeitet

Technical

PushedProducts enthalten in einer JSON-Rückgabe nicht mehr die Attribute id und record.   

API Version wurde von Releaseversion getrennt

Der Benutzername darf nur noch Buchstaben, Zahlen, '@', '-', '_', '.' und '+' enthalten. 

Technical

Über ein Header-Feld ist es nun auch möglich sich zu authentifizieren, dieses hat den Aufbau Authorization: username:password:timestamp  wenn kein Timestamp benötigt wird, muss dieser auch nicht mitgegeben werden: Authorization: username:password. Das Passwort muss wie auch bei der Autentifizierung über die Query-Parameter gehashed werden.  Eine Rest-Api Schnittstelle wurde hinzugefügt, diese ist erreichbar unter: ../rest/{apiversion}/. Funktionalität und benötigte Parameter sind über die Swagger-Definition (../rest/{apiversion}/swagger sichtbar. Aus der Definition können Clients für Java, C# und viele andere Programmiersprache generiert werden. Das ist möglich mit dem Swagger-Codegen Projekt: https://github.com/swagger-api/swagger-codegen Außerdem ist eine UI für diese verfügbar unter https://ng-demo.fact-finder.de/fact-finder/swagger-ui.html, dies ist eine visualisierte Dokumentation der Swagger-Definition und somit einfach bedienbar.  In Swagger ist es momentan noch nicht möglich Wildcard Query-Parameter zu definieren,  welche beispielweise in der Such-Schnittstelle für die filter*=wert (* = feldname) und sort*=wert parameter benutzt werden. Diese Parameter sind in der Swagger UI nicht setztbar, funktionieren dennoch wie gewollt.  Die Xml Beispiele in der Swagger-UI werden fehlerhaft dargestellen. Wenn ein Array zurückgegeben wird, wird dieser in ein <items></items> gewrappt. 

Sonstiges

Neue Auswahlbox für Import ID-Feld

Technical

Die ID Feldrolle in der UI wurde entfernt. Stattdessen gibt es nun eine Auswahlbox auf der Feld-Übersichtsseite um das Import ID-Feld auszuwählen.

Einzelwortsuche Backend

Technical

In der Xml der Suchkonfiguration wurde dem <singleWordSearch>-Tag ein neues Attribut hinzugefügt. Das active-Attribut bestimmt nun darüber, ob die SingleWordSearch für einen Channel aktiviert ist. Der Defaultwert ist false

Zusätzliche Parameter zum Ausführen verschiedener Methoden

Technical

Die Methoden runForAdminModeSearch, runForCampaignManagerSearch und runForNormalSearch des ISearchCallback haben nun die Params und die SearchControlParams als Parameter, sodass zusätzliche Prüfungen, ob die Callbacks für die konkrete Suche ausgeführt werden sollen, möglich sind.

Wordwise-Modus nun für Custom Classes aktivierbar

Technical

Custom Classes ist es nun möglich für die Suche den wordwise-Modus zu aktivieren. Dies kann über die neue Methode setWordwiseSearch(boolean wordwiseSearch) in der ConfigurationBase gemacht werden. Der Defaultwert ist false. Von außen, beispielsweise über die fff.properties, ist eine Konfiguration dieses Wertes bisher nicht möglich.

Durchsuchbare Multi-Attribute- und Kategoriepfad-Felder wieder eingeblendet

Technical

Multi-Attribute- und Kategoriepfad-Felder werden nun auf der Feldgewichtungsseite eingeblendet, wenn diese als durchsuchbar markiert sind. Dies ermöglicht es die Durchsuchbarkeit über die Oberfläche zu entfernen.

Filterfelder der Diagnosesuche nun von der Anzeige im Filterfeld ausgenommen

Die Filterfelder im Spaltenkopf der Diagnosesuche wurden bei einer Nutzereingabe um die bereits zuvor hinzugefügten Filter ergänzt. Diese werden nun von der Anzeige im Filterfeld ausgenommen.

Eingabemöglichkeit für Custom-Parameter in der Diagnosesuche

In der Diagnosesuche wurde eine Eingabemöglichkeit von Zusatzparametern geschaffen. Hiermit lassen sich bspw. Kampagnen testen, die von solchen ausgelöst werden.

Support-Mailadresse von "support" zu "service-desk" geändert

Die Mailadresse des FACT-Finder Service Desk Teams hat sich von support@fact-finder.de zu service-desk@fact-finder.de geändert, daher wurden alle Stellen in der Anwendung entsprechend angepasst. Die alte Mailadresse ist jedoch weiterhin aktiv.

startWhatsHot Property in whatsHot.properties überführt

Technical

Die startWhatsHot property aus notify.properties wurde nach whatsHot.properties als cronPattern migriert, analog zu den restlichen Quartz Jobs.

Channelklonen per Standard erlaubt

Technical

Standardmäßig ist das Erstellen und Klonen von Channels nicht mehr verboten. Es kann wie gewohnt in den fff.properties deaktiviert werden. 

Beschreibungstext zu Produktkampagnen einbauen

Der Beschreibungstext auf der Kampagnenübersicht wurde um einen Absatz zu den Produktkampagnen ergänzt.

Findologic XML-Format beim Import unterstützen

Technical

Es gibt nun die interne CustomClass de.factfinder.indexer.findologic.FindologicImport, mit der Produktdaten im Findologic-XML-Format importiert werden können.  Dazu muss in diese Klasse als importFileProcessor in die conf/fff.properties eingetragen werden:

importFileProcessor.implementation=de.factfinder.indexer.findologic.FindologicImport

Die Suchkonfiguration eines Channels findologic für den Import der Beispielproduktdaten von Findologic (https://secure.findologic.com/dokuwiki/doku.php?id=fl:modul:direct_integration:xml_schema#example_xml) kann dabei zum Beispiel wie folgt aussehen.  conf/search/conf.findologic.xml:

<fields>
     <field nr="0" id="f7b13955-aee1-4b3c-a26f-3fcde2cd9ca4">
         <name>ArticleNumber</name>
         <content>
             <fieldRole>displayProductNumber</fieldRole>
             <fieldRole>campaignProductNumber</fieldRole>
             <fieldRole>trackingProductNumber</fieldRole>
         </content>
     </field>
     <field nr="1" id="f4f746f3-2931-4f30-aa77-c720c2f508cd">
         <name>ProductName</name>
         <sortable>true</sortable>
         <sortDescriptionAsc>Title A-Z</sortDescriptionAsc>
         <sortDescriptionDesc>Title Z-A</sortDescriptionDesc>
         <content>
             <fieldRole>productName</fieldRole>
         </content>
     </field>
     <field nr="2" id="3e797be5-e779-45b7-985f-dd609873e8aa">
         <name>Description</name>
         <sortable>true</sortable>
         <sortDescriptionAsc>Title A-Z</sortDescriptionAsc>
         <sortDescriptionDesc>Title Z-A</sortDescriptionDesc>
         <content>
             <fieldRole>description</fieldRole>
         </content>
     </field>
     <field nr="3" id="2ead3b91-1003-4e87-ae10-19c6edf982ac">
         <name>Price</name>
         <content>
             <fieldRole>price</fieldRole>
         </content>
     </field>
     <field nr="4" id="33f10523-89a6-48bf-be0f-8184a23f3d91">
         <name>Manufacturer</name>
         <groupDelimiter>#</groupDelimiter>
         <content>
             <fieldRole>brand</fieldRole>
         </content>
     </field>
     <field nr="5" id="33f10523-89a6-48bf-be0f-8184a23f3d91">
         <name>Category</name>
         <type>categoryPath</type>
     </field>
</fields>

Mit dieser Konfiguration würde beim Import der Beispielproduktdaten folgender Record in die Datenbank importiert: 

FeldIDDescriptionCategoryProductNamePriceArticleNumberManufacturer
Inhalt01120c948ad41a2284ad9f0402fbc7dWith this sneaker you will walk in style. It's available in green and blue.Sneakers/Men\|Specials/SaleAdidas Sneaker44.8277KTLAdidas

Die Inhalte der Felder Description, ProductName, Price, ArticleNumber sowie Manufacturer werden dabei anhand der Feldrollen automatisch zugeordnet. Das Feld Category ist das einzige Feld vom Typ categoryPath. Deswegen wird es ebenfalls automatisch mit dem XPath allAttributes/attributes/attribute[key="cat"]/values/value konfiguriert. Gibt es mehr als ein Feld vom Typ categoryPath, wird keines automatisch konfiguriert. 

Weitere Felder können in der conf/fff.properties durch die Verwendung von XPath-Ausdrücken (http://www.w3schools.com/xml/xpath_syntax.asp) konfiguriert werden. Die Keywords aus den Beispielproduktdaten können wie folgt in ein Feld Keywords importiert werden. Zunächst muss ein entsprechendes Feld zur Suchkonfiguration hinzugefügt werden: 

<field nr="6" id="7f4a37dd-7887-41a0-b2a0-f3e09dde2baa">
     <name>Keywords</name>
     <search>true</search>
     <groupDelimiter>#</groupDelimiter>
</field>

Anschließend wird ein passender XPath-Ausdruck in der conf/fff.properties angegeben:

findologic.field.Keywords=allKeywords/keywords/keyword

Einträge in der fff.properties überschreiben die Defaultwerte. D.h. der XPath eines Feldes Feldname mit einer konfigurierten Rolle kann durch den Eintrag findologic.field.Feldname = ... in der fff.properties überschrieben werden. 

Beschreibung der Einträge in der fff.properties

KeyBeschreibungBeispiel
findologic.ItemsXPath zu den Item-Elementen relativ zum root-Element/findologic/items/item (default)
findologic.fieldIDXPath zur ID eines Items relativ zum Item-Element@id (default)
findologic.field.FieldNameXPath zum Wert für des Feld FieldName relativ zum Item-Elementnames/name


Werden zu einem Feld unter dem angegebenen XPath mehrere Werte gefunden, wird entweder der erste gefundene Wert verwendet oder, falls das Feld mit einem groupDelimiter konfiguriert ist, die gefundenen Werte verknüft durch den groupDelimiter als Wert verwendet. Wird kein Wert gefunden, wird das Feld für dieses Item nicht gesetzt.  Unterstützte Feldtypen sind text, number, categoryPath, nicht jedoch multi

In der nachfolgenden Tabelle sind die voreingestellten XPath-Werte für die Feldrollen eingetragen. 

FeldrolleXPath
productNamenames/name\[not(@usergroup)\]
displayProductNumberallOrdernumbers/ordernumbers\[not(@usergroup)\]/ordernumber
trackingProductNumberallOrdernumbers/ordernumbers\[not(@usergroup)\]/ordernumber
campaignProductNumberallOrdernumbers/ordernumbers\[not(@usergroup)\]/ordernumber
descriptiondescriptions/description\[not(@usergroup)\]
deeplinkurls/url\[not(@usergroup)\]
priceprices/price\[not(@usergroup)\]
imageUrlallImages/images\[not(@usergroup)\]/image\[not(@type=thumbnail)\]
brandallAttributes/attributes/attribute\[key="brand"\]/values/value

Importgeschwindigkeit von TranscriptedTable verbessert

Technical

Die Importgeschwindigkeit der TranscriptedTable (für mehrsilbige Alphabete wie Japanisch/Chinesisch) wurde bedeutsam reduziert (mehr als dreimal schneller). Damit haben sich auch die Speicheranforderungen verändert: Ungefähr 20% mehr Arbeitsspeicher wird nun benötigt.

Option, DQ-Requests bei Nulltreffer im Cache-File zu senden, hinzugefügt

Für das Modul "Attribute Generator" ist eine Anwendungseinstellung hinzugekommen, mit der es möglich ist einzustellen ob Datensätze, für die beim Importvorgang kein Cacheeintrag gefunden wird, an den DQ-Server geschickt werden sollen damit bei diesen, eventuell nochmalig, eine Attributisierung durchgeführt wird. Per Standard ist diese Einstellung deaktiviert. Bitte beachten Sie, dass die Attributisierung unter Umständen lange dauern kann und diese Einstellung den Importvorgang verlängern kann.

Technical

Die Einstellung lässt sich in der fff.properties über den Key dqServicesConf.updateAttributesOnCacheMiss und den Werten true für aktiv bzw. false für inaktiv setzen. Standard ist false.

SCIC-Logfiles werden nun auch nach Loggruppe getrennt betrachtet

Technical

Die Analysen der SCIC-Logfiles werden nun auch nach Loggruppe getrennt betrachtet. Außerdem werden Aufrufe von Instore Ads für die internal-Loggruppe nicht mehr getrackt.

Bugfixes

Search Behaviour

Substringfilterung nachhaltig implementiert

Technical

Es wurde ein Fehler behoben, durch den für Kampagnen gespeicherte Substringfilter nicht immer korrekt angewandt wurden.

Nulltrefferproblem bei Time-Outs behoben

Technical

Es gab ein Problem bei der Behandlung langsamer Suchanfragen, die in einen Time-Out hinein liefen. FACT-Finder ist in der Lage die vor dem Time-Out gefundenen Treffer zurück zu liefern. Durch den Fehler lieferte FACT-Finder für Time-Out-Suchanfragen immer 0 Treffer. Der Fehler ist in der Version 7.1 eingeführt worden und nun behoben.

Automatic Search Optimisation (ASO)

Anzeige verbessert

Technical

Die Anzeige der ASO-Auftwertung in der Diagnosesuche ist jetzt unabhängig von der initialen Abwertung.

Kein negativer ASO-Einfluss mehr möglich

Technical

Bei der Berechnung des ASO-Einflusses in der Diagnosesuche werden Verschiebungen der Ähnlichkeiten aller Produkte um einen konstanten Faktor nicht berücksichtigt. Damit ist der angezeigte ASO-Einfluss jetzt niemals negativ. Wenn das ASO-Zielfeld eines Produktes einen positiven Eintrag zum aktuellen Suchquery enthält, ist der angezeigte ASO-Einfluss immer ungleich 0.

After Search Navigation (ASN)

Filter verschwinden nach dem Sortieren nicht mehr

Technical

Wenn die Einstellung addFilterForSoleGroupEntry auf true gesetzt ist, fügt FACT-Finder einen Filter-Eintrag hinzu, wenn eine Facette nur einen einzelnen Eintrag hat. Diese Funktion war inkonsistent. Der neue Filter-Eintrag wurde nicht zu allen Elementen im Suchergebnis hinzugefügt. So konnte es passieren, dass der Filter wieder verschwand wenn der User einen anderen Filter anklickte, oder die Sortierung änderte.

Facetten Validierung angepasst

Technical

Die Validierung von Clusterfacetten wurde angepasst, und lässt nun auch ein nicht-cluster parent facet pro cluster zu.

Fehler beim Anzeigen von Facetten behoben

Technical

Ein Fehler wurde behoben, durch den in ungünstigen Fällen nicht alle Facetten dargestellt wurden.

Slider Facet mit implizit selektierter Parent Facet wird nun angezeigt

Technical

Sliderfacetten, die aufgrund von implizit selektierten Parent-Facetten angezeigt werden sollten, werden nun angezeigt.

NumberFormatException bedingt durch Gruppierungsvorgang behoben

Technical

Das Gruppieren von langen Attributen in der ASN funktioniert jetzt zuverlässiger.

Cache

Suche-Cachehandling nun zuverlässiger

Technical

Das Cachen von Suchergebnissen die Kampagnen mit Pushed-Products mit FieldSettings enthalten funktioniert nun zuverlässiger.

Suggest

Felder hinzufügen führt beim Suggest-Import nicht mehr zu Abbruch

Technical

Es wurde ein Fehler behoben, durch den bei nicht konfiguriertem Deduplicate Field der Suggest Import abbrach.

Whitelisteinträge nun per Standard löschbar

Technical

Beim Bearbeiten eines Whitelist-Eintrages ist das Löschensymbol für neu hinzugefügte benutzerdefinierte Eigenschaften standardmäßig anklickbar. 

Import

Berechnung der Anzahl der Suggest-Import-Einträge nun korrekt

Technical

Die Berechnung der Anzahl importierter Einträge nach dem Suggest-Import erfolgte auf Basis der falschen Datenbank. Dies wurde korregiert. Es wird nun die korrekte Anzahl importierter Datensätze nach dem Import angezeigt.

LogfileProvider prüft nun auf benötigte Filter

Technical

Der LogfileProvider für Suggestions prüft nun auch Kategoriepfade auf konfigurierte, benötigte Filter. Zusätzlich werden Multi-Attributs-Felder aus der Ansicht des Suggest-Imports gefiltert. 

Suggestimport bricht nicht mehr beim Deserialisieren ab

Technical

Aufgrund von Nebenläufigkeitsproblemen konnte es zu Fehlern beim Deserialisieren von Analytics Cache-Dateien kommen. Dies wurde behoben.

Fehlermeldung bei bereits laufenden Imports wurde angepasst

Technical

Die Nachricht der Exception für den Fall, dass ein neuer Import gestartet wird, wenn es schon einen laufenden Import für des selben Typs für den selben Channel gibt, wurde angepasst. 

Timeouts beim Daten- und Recommendation-Engine Import gelöst

Technical

Produkt-Event Daten für den Recommender-Import werden jetzt nicht mehr zum Importzeitpunkt sondern durch den What's Hot Quartzjob heruntergeladen. 

ICustomImportHandler.startRecordConversion-Aufruf eingeführt

Technical

Es ist ein neues Interface ICustomUpdateHandler dazugekommen:


interface ICustomUpdateHandler {

void setConf(final ConfigurationBase conf);

void setPlaceholderResolver(IPlaceholderResolver placeholderResolver);

void beforeUpdate();

void startRecordUpdate(Set, ImportRecord);

void endRecordUpdate(Set, ImportRecord);

void afterUpdate(final boolean save);

void cleanup();

}


Dieses Interface wird verwendet wenn die Update-Delete-Insert-Schnittstelle aufgerufen wird. Die Initialisierungs-Methoden decken sich mit den Methoden aus ICustomImportHandler. Auf diese Weise kann ein und dieselbe Klasse beide Interfaces (ICustomImportHandler und ICustomUpdateHandler) implementieren, die sich die Implementationen für setConf() und setPlaceholderResolver() teilen. Auf diese Weise können auch die Konvertierungs-Routinen wiederverwendet werden. Es gibt nur einen entscheidenden Unterschied: die startRecordUpdate() und endRecordUpdate() Methoden bekommen die Namen der Felder, die aktualisiert wurden. Auf diese Weise kann der Update-Handler seine Konvertierungen auf diese Felder beschränken. Es wird aber dennoch der komplette Datensatz zurück in die Datenbank geschrieben. D.h. wenn die aktualisierten Felder Werte in anderen Feldern (die nicht aktualisiert wurden) beeinflussen, können diese  trotzdem gesetzt werden. Sie werden zurück in die Datenbank geschrieben.  Klassen, die ausschließlich ICustomUpdateHandler implementieren können aktuell FACT-Finder noch nicht mitgeteilt werden. ICustomUpdateHandler soll zusätzlich von den ICustomImportHandler implementierenden Klassen implementiert werden. Diese Klassen sollen ganz normal in der fff.properties als Import-Handler gelistet werden. Die Update-Delete-Insert-Schnittstelle verwendet weiterhin die komplette Liste der Import-Handler. Falls der Import-Handler das Interface ICustomUpdateHandler implementiert, werden ausschließlich die Methoden von ICustomUpdateHandler aufgerufen. Tut der Handler das nicht, werden ausschließlich die oben aufgelisteten ICustomImportHandler Methoden aufgerufen. 

Fallback zur Anzeige von Zeitstempeln eingerichtet

Technical

Falls eine Zeitzone außerhalb der Liste der FF-UI bekannten Zeitzonen konfiguriert war, wurden Seiten mit Zeitstempeln nicht korrekt angezeigt. Jetzt wird als Fallback GMT zur Anzeige verwendet. 

Analytics-Requests blocken den Datenimport nicht mehr

Technical

Beim Datenimport wird nun ausschließlich auf bereits gecachte What's Hot Ergebnisse zurückgegriffen, anstatt einen neuen Report zu generieren. Wenn kein fertiger Report vorhanden ist werden keine ASO Daten importiert. 

NullPointerException in RankingRulesService behoben

Technical

Eine NPE im Zusammenhang mit Multi-Attributs-Ranking-Regeln wurde behoben. 

Analysis

Anpassung von KPIs durchgeführt

Technical

Die Searches ohne Sessions Kennzahl wird jetzt korrekt angezeigt.


Leere Whats Hot PDF-Reports verhindert

Technical

Durch einen fehlerhaften Vergleich von Zeitstempeln wurden Lognachrichten, die genau zu einer vollen Stunde aufgetreten sind, nicht berücksichtigt und führten schlussendlich zu einer fehlerhaften Analyse. Infolgedessen konnten die What's Hot Reports nicht aktualisiert werden.

Conversion Rate-Berechnung verbessert

Technical

Aufgrund einer fehlerhaften Zuordnung von Warenkorb-Ereignissen zu Suchanfragen konnten bei der Berechnung der Conversion Rate nicht alle Suchen mit einbezogen werden, wodurch die Conversion Rate trotz Umsatz 0 betragen konnte. Die Zuordnung der Warenkorb-Ereignisse zu den Suchanfragen wurde entsprechend korrigiert.

Probleme mit vorhandenen Analyseergebnissen auf Demoshop behoben

Technical

FACT-Finder 7.2, 7.3: Es wurden Loadingspinner in die Analyticstabellen und -charts eingebaut. So sollte für den Nutzer ersichtlich sein, ob ein Report noch Daten nachlädt oder ob der Report ggf. unvollständig/fehlerhaft ist. Analytics 7.0, 7.1, 7.2, 7.3: Außerdem wurde ein Fehler behoben, der beim Laden eines bereits bestehenden Reports zu NullPointerExceptions führen konnte, was das vollständige Laden des Reports verhinderte und zu Fehlermeldungen in der Ui führte.

Analytics-Fehler mit invaliden Job-Datenbanken behoben

Technical

Analytics startet jetzt auch bei invaliden Job-Datenbanken. Das Jobverzeichnis wird im Fehlerfall geleert.

Verschachtelte eckige Klammern in der Logfile-Analyse nun unterstützt

Technical

Die Logfile-Analyse kommt nun mit maskierten eckigen Klammern innerhalb von eckigen Klammen zurecht, z.B. [[DIN 3120, DIN 7434]].

Click Through Rate-Darstellung angepasst

Technical

Die Prozentuale Anzeige der Click-Through-Rate im What's Hot Report (PDF) wird nun korrekt dargestellt.

Deserialisierungsprobleme von Analytics-Jobs behoben

Technical

Vereinzelt auftretende Deserialisierungsprobleme von Analytics-Jobs und Job-caches in FF aufgrund von ImmutableLists wurden behoben.

NullPointerException in der Log-Analyse entfernt

Technical

Eine NPE die bei Vorhandensein einer shoppingcart.log.gz Datei auftrat wurde entfernt.

Sonderzeichen werden nun schon beim Parsten entfernt

Technical

Sonderzeichen und control chars die in XML-Repräsentationen ungültig sind, werden von nun an schon beim Parsen von tracking log-files entfernt.

Tracking

Analytics-Tabellenlimit eingeführt

Technical

Alte Analytics Jobs werden nun automatisch aufgeräumt sobald ein gewisses Limit überschritten ist, um Limitierungen in der FF lib zu umgehen und Speicherbedarf gering zu halten.

Tracking: Automatisches Logfile-Rollover

Technical

Logfile-Rollover für alle existierenden aktuellen Logfiles wird jetzt jeden Tag um kurz nach 0 Uhr automatisch getriggered.

Automatische Duplikation optionaler Tracking Event-Parameter

Technical

Wenn mehrere Tracking-Events in einer einzigen Anfrage getrackt werden, reicht es nun die Parameter userId, masterId und cookieId nur einmal mitzuschicken. Diese Parameter werden dann auf alle anderen Events übertragen.

Problem mit JdbcBatchUpdateException bei What's Hot Report gelöst

Technical

Ein Fehler wurde behoben, durch den Analytics versuchte NULL-Werte in die Datenbank zu schreiben, falls NULL für den entsprechenden Wert in den Tracking Logs stand. Stattdessen wird nun ein leerer String in das entsprechende Feld geschrieben.

Campaign Manager

Problem mit endloser Ladeschleife behoben

Technical

Ein leeres Suchergebnis mit aktiven Filtern führt in der DiagnostiSearch nicht mehr zu einer endlosen Ladeschleife. In einem Cluster konnten aktive Filter, die nicht zu der obersten Ebene des Klusters gehörten nicht abgewählt werden. Dies wurde behoben.

Mehrfachanzeige von Slider-Filtern behoben

Technical

In manchen Fällen wurden aktive Slider-Filter in der Diagnose-Suche mehrfach angezeigt. Dies wurde behoben.

Anzeige nicht benötigter Kampagnenauslöser behoben

Technical

Kampagnenauslöser wurden teilweise angezeigt, obwohl diese nicht benötigt wurden. Dies wurde behoben. Außerdem wurde der Zuweisungsoperator für immer zutreffende Kampagnen korrigiert.

Kombinationsabfrage von Kampagnenmodi und –kriterien eingerichtet

Technical

Invalide Kombinationen aus Kampagnenmodi und -kriterien sind in der UI nicht mehr auswählbar.

Parametrisierung der Produktauswahl in Kampagne funktioniert nub richtig

Technical

Search Params Pushed Products werden jetzt auch bei Deduplizierung korrekt dargestellt.

ManuallyEnteredProductListPushedProducts und ProductsListPushedProducts nutzen nun die selben Felder

Technical

Der Umstand, dass manuelle PushedProducts und PushedProducts-Listen unterschiedliche Felder referenzieren führte in der UI zu Problemen in der Darstellung des Kampagnen-Assistenten. Die Darstellung wurde entsprechend angepasst.

Beraterkampagnen behalten nun alle Antworten

Technical

Wenn mehrere Fragen und Antworten für Beraterkampagnen angelegt wurden konnte es passieren, dass nur die erste neu angelegte Frage/Antwort übernommen wurde. Dies wurde behoben.

Kampagnenauslöser-Problem behoben

Technical

Es wurde ein Problem beim Auslösen von Kampagnen behoben.

Feedbackkampagne greift nun bei allen Kriterium

Technical

Unter Umständen wurden Kampagnen bei bestimmten Kriterien nicht ausgelöst, da Filter-Felder eines Kategoriepfades nicht korrekt dekodiert wurden.

Aktivierungstag in HTML-Editor eingeführt

Technical

Der HTML-Editor der Feedback-Texte wird nun abhängig vom <isHtml>-Tag der Feedback-Text-Settings verwendet. Steht das Tag auf 'true', so kann der HTML-Editor für die Bearbeitung verwendet werden. Steht es auf 'false', so werden sämtliche HTML-Optionen des Editors deaktiviert und der Benutzer findet im Wesentlichen ein einfaches Textfeld vor.

Fehler mit Triggern von Produktdetail-Kampagnen behoben

Technical

Das Triggern von Produktdetail-Kampagnen funktioniert nun auch bei Konfigurationen in denen campaignProductNumber und displayProductNumber verschieden sind korrekt.

NPEs im MergePushedProductsSearchCallback nach Update auf aktuellen 6.11er Patchlevel mit InstoreAds-Support behoben

Technical

Eine NPE im MergePushedProductsSearchCallback wurde behoben.

Fehler beim Anlegen von Beraterkampagnen behoben

Technical

Im Kampagnenwizard wurde für Beraterkampagnen ein Fehler behoben, der dazu führte, dass einige über Drag & Drop vorgenommene Änderungen im Fragen- und Antwortenbaum nach Verlassen des Wizardschritts wieder zurückgesetzt wurden. Zog man beispielsweise auf der obersten Fragenebene eine Frage vor eine andere, erschien die Struktur korrekt angepasst. Nach Klick auf "weiter" war in der Übersicht jedoch zu erkennen, dass sich die Struktur nicht geändert hatte. Die Struktur verändert sich nun erwartungsgemäß. Außerdem wurde ein Fehler behoben, der dazu führte, dass Validierungsfehler an den falschen Fragen beziehungsweise Antworten oder gar nicht angezeigt wurden.

Speichern von Berater Kampagnen mit leerer Antwort führt nicht mehr zu Fehler

Technical

Beraterkampagnen, die eine Antwort bestehend aus Leerzeichen enthalten, sind invalide und können nicht über die UI angelegt werden. 

Upselling Pushed Products können nun in Kampagnen verwendet werden

Technical

Ein Fehler, der die Verwendung von Upselling Pushed Products in Kampagnen verhinderte, wurde behoben.

Auslöser für Weiterleitungskampagnen reagieren nur noch auf positive Gleichheitsabfragen

Technical

Bisher sorgte ein Bug dafür, dass es möglich war, dass neue Suggest-Vorschläge basierend auf allen Auslösern einer Weiterleitungskampagne in CampaignSuggestProvider erstellt wurden. Dies wurde korrigiert um die ursprünglichen Anforderungen von FF-1973 – nur Auslöser mit Gleichheitszuweisung zu beachten – zu erfüllen.

Beispiel: Die Kampagne "Kontakt" des Channels fahrrad-de beinhaltet zwei trigger: "Search term = Kontakt or Search term contains Omikron". Bisher hat der CampaignSuggestProvider  für beide Auslöser Vorschläge generiert. Neuerdings werden nur Auslöser mit positiver Gleichheitsabfrage berücksichtigt, was nur einen einzigen Vorschlag für "Kontakt" generiert. Dieses Verhalten ist sinniger, da Weiterleitungskampagnen oft für scheinbar nicht zugehörige Suchanfragen erschienen, in diesem Fall bei allem das "Omikron" beinhaltete (bessere Alternative: "contains Kontakt" und "Kontaktgrill").

Kampagne hinzufügen: Fehlerhafte Beschränkung blockiert Weiter-Button nicht mehr

Es wurde ein Fehler behoben, welcher bei invaliden Eingaben im Kampagnen Assistenten den Weiter Button deaktiviert hat.

Fehlerhafte Validierung von Beraterkampagnen im CampaignWizard behoben

Technical

Ein Fehler wurde behoben, durch den im Falle von mehreren leeren Antworten/Fragen beim Erstellen einer Beraterkampagne der Dialog beim löschen durcheinanderkommen konnte, was zu Validierungsfehlern geführt hat. 

Feedback Label-Umstellung ersetzt bestehenden Input nicht mehr durch "undefined"

Technical

Ein Fehler, der bei Veränderung des Labels eines Feedback- oder Kampagnentextes zur Ersetzung des editierten Textes durch "undefined"  führte, wurde behoben. 

Probleme bei der Konfiguration von Beraterkampagnen behoben

Technical

Das Hinzufügen von mehren Antworten zu einer Frage, ohne diese vorher zu editieren, konnte dazu führen, dass einige Antworten beim Speichern verloren gehen. DIes wurde behoben. 

NullPointerException infolge von Timeout bei Pushed-Products-Auswahl in Kampagnen behoben

Technical

Nach einem Timeout liefert die Diagnosesuche alle bisher gefundenen Ergebnisse.

Filter in Beraterkampagnen nun möglich

Technical

Auf die Produkte die über Beraterkampagnen ins Suchergebnis gelangen können jetzt, wie auf andere Produkte auch, Filter angewendet werden.

Personalization

Keine NullPointerExceptions bei leerer Produktkampagnen-Abfrage mehr

Technical

Personalisierte Pushed Products mit leerem Ergebnis erzeugen keine NPEs mehr. 

Personalisierte Kampagnen im Diagnose-Backend

Technical

Personalisierte Kampagnen können jetzt auch wie die Suche im Diagnose-Backend personalisiert werden. 

Recommendation Engine

Recommender ignoriert Timeout nicht mehr

Technical

Der Recommender hat bisher im Timeout-Fall weiter gearbeitet und damit unnötig Rechenzeit verbraucht. Dies wurde beseitigt.

Bug behoben, der manchmal verhindert hat, dass Recommendations zurückgegeben werden

Technical

Nach Änderungen an der Recommendations-Konfiguration, die einen neuen Import erfordern, wurden keine Recommendations mehr ausgeliefert. Durch entsprechende Anpassungen können nun auch bei einem ausstehenden Import noch Recommendations abgefragt werden, die allerdings bis zur Ausführung des Imports als veraltet gelten.

Recommendation Index & Co. werden nun automatisch neugeladen

Technical

Änderungen an den Konfigurations- bzw. Datenbankdateien der Empfehlungsmaschine werden nun von FACT-Finder erkannt und schlagen sich so in den ausgespielten Empfehlungen nieder. Die Dateien werden durch den Timeoutmanager überwacht. Die Änderungen werden also nicht sofort bemerkt, sondern sind von der Timeoutzeit des Timeoutmanagers abhängig. Es ist zu bedenken, dass bei einem Neuladen der Datenbankdateien eine neue Recommenderinstanz erstellt wird. Der Timeout des Timeoutmanagers sollte also nicht zu kurz eingestellt sein, damit das Caching der Empfehlungsmaschine auch wirksam werden kann.

Abwerten von Recommendation-Beziehungen erfolgt nun beim ersten Versuch

Technical

Das Abwerten von Recommendation-Beziehungen auf einer Produktdetailseite war häufig erst beim zweiten Versuch erfolgreich. Die Abwertung erfolgt jetzt immer beim ersten Versuch.

Stabilität des Recommenders erhöht

Technical

Der recommender ignoriert jetzt beim Importieren Produkte mit Gewicht 0 und ist dadurch robuster gegen ungültige Produkt-Ids.

Instore Ads

Cachingproblem von Ad-Suchanfragen gesucht

Suchergebnisse, welche aus dem Cache ausgeliefert werden, beinhalten nun keine Produkte mehr, welche von einer inzwischen nicht mehr aktuellen InstoreAds-Kampagne hinzugefügt wurden.

Technical

Das Caching der Suchergebnisse konnte bei aktivem InstoreAds-Modul bisher problematisch sein. Denn es war möglich, dass in einem Suchergebnis aus dem Cache auch Produkte enthalten waren, die von einer inzwischen geänderten InstoreAds-Kampagne hinzugefügt wurden. Hat eine InstoreAds-Kampagne beispielsweise drei Produkte zu dem Suchergebnis für den Suchbegriff „Hose“ hinzugefügt, waren diese drei Produkte in dem durch den Cache ausgelieferten Suchergebnis immer noch enthalten, auch wenn die InstoreAds-Kampagne für „Hose“ inzwischen andere Produkte promoten sollte.  Dieses Problem wurde behoben indem der Hashkey, mit dem eine Suchanfrage im Cache identifiziert wird, nun auch die InstoreAds-Kampagnen berücksichtigt, welche für den Suchbegriff ausgeliefert würden. Dabei werden die Kampagnenid, der Kampagnenauslöser sowie die beworbenen Produkte mit einbezogen. So werden Suchergebnisse mit geänderten InstoreAds-Kampagnen nicht mehr aus dem Cache beantwortet und enthalten die aktuellen Produkte. Bei unveränderten Kampagnen können die Suchergebnisse jedoch weiterhin aus dem Cache ausgeliefert werden. Nicht-InstoreAds-Kampagnen werden beim Erzeugen des Cachekeys weiterhin nicht beachtet.

Installation Wizard / Migrator

Feldeinstellungen werden nicht mehr von anderen Channeln übernommen

Technical

Beim Anlegen eines neuen Channels wurden die Einstellungen des zuvor ausgewählten Channels übernommen. Dies wurde behoben.

Nicht importierte Felder aus Dropdown für Feldfunktionen entfernt

Technical

Felder, die im Installer nicht für den Import ausgewählt werden, erscheinen nun nicht mehr im darauf folgenden Schritt in der Dropdown-Auswahl für Feldfunktionen.

Kampagnenvalidierung berücksichtigt nun Fallback-Konfiguration

Technical

Ein Fehler wurde behoben, der dafür sorgt, dass die Fallback-Konfiguration bei der Kampagnenvalidierung ignoriert wurde. Aus diesem Grund konnte die Kampagnenvalidierung fehlschlagen wenn keine channel-spezifische Konfiguration vorhanden war.

Fehler im Installer bei der Facet-Cluster-Erkennung behoben

Technical

Die Cluster-Erkennung für nummerierte Felder wurde leicht angepasst. Felder ohne angehängte Nummer werden jetzt mit in den nach ihnen benannten Cluster aufgenommen.

Installer verwirft nun nicht mehr existierende parentFacetId

Technical

7.1: Es ist nun möglich im Installer Rankingregeln und Kampagnen zu entfernen, sofern diese ein nicht mehr vorhandenes Feld verwenden. Der Installer wird nun nicht mehr nur Facetten entfernen, welche nicht mehr vorhandene Felder referenzieren, sondern auch dafür Sorge tragen, dass die verbliebenen Facetten keine Abhängigkeiten zu Facetten haben, welche während des Installerprozesses entfallen sind. Die entsprechenden Referenzen werden gelöscht. Ein Fehler wurde behoben, der die Anzeige von Rankingregeln verhinderte, wenn der Nutzer eine nicht unterstürzte Zeitzone verwendete. 7.2, 7.3: Auch Kampagnen, welche als Kriterum ein Suchfeld verwenden, können nun im Installer entfernt werden, falls das in der Kampagne referenzierte Feld nicht mehr vorhanden ist. Der Installer wird nun nicht mehr nur Facetten entfernen, welche nicht mehr vorhandene Felder referenzieren, sondern auch dafür Sorge tragen, dass die verbliebenen Facetten keine Abhängigkeiten zu Facetten haben, welche während des Installerprozesses entfallen sind. Die entsprechenden Referenzen werden gelöscht. Ein Fehler wurde behoben, der die Anzeige von Rankingregeln verhinderte, wenn der Nutzer eine nicht unterstürzte Zeitzone verwendete.

Migrator verhindert nun das löschen valider Kampagnen

Technical

Es wurde ein Fehler behoben, in Folge dessen es möglich war, dass während des Migrationsprozesses von 6.11.6 nach 7.1 valide Kampagnen gelöscht wurden. Weiterhin wurde das Logging des Migrators korrigiert, so dass wieder Logausgaben zur aktuellen Migration erscheinen.

tgz-Format kann nun korrekt verarbeitet werden

Technical

URL-prefixe für tar.gz und tar.bz2 archive werden vom Installer nun korrekt gesetzt, wodurch Download solcher Archive als Installer-schritt funktioniert.

UI: Management Interface

GWT-UI ignoriert defaultMaxPerCategory nicht mehr

Technical

Die Validierung der Recommendation Konfiguration hat den Standardwert (-1) des Feldes maxPerCategory nicht zugelassen. Dies wurde behoben. Außerdem wurde die UI angepasst, so dass erkenntlich ist ob der Standardwert des Feldes genutzt ist und welcher dieser ist.

Exception auf Community Thesaurusseite behoben

Technical

Ein Fehler wurde behoben, der verhinderte, dass die Community Thesaurus Einträge in der Benutzeroberfläche dargestellt wurden.

Darstellung des Standard-Wertes für Checkboxes wird nicht mehr erst nach Änderung eingeblendet

Technical

Im Dialog zum Editieren einer Facette werden die Standard-Werte der Checkboxen bei entsprechender Auswahl nun immer angezeigt und nicht erst nach einer Änderung.

Kind-Facetten im Cluster nun löschbar

Technical

Wenn es zwei Facetten in einem Cluster gab war es nicht möglich die Kind-Facette zu löschen, da die Eltern-Facette dann allein gestanden wäre. Dies wurde behoben, indem der Clusterstatus der Eltern-Facette nach dem Löschen der Kind-Facette angepasst wird.

Änderung der Datenquelle setzt Feldnamen nicht mehr zurück

Technical

Bei der Erstellung eines neuen Feldes wird der Feldname nicht mehr durch die Auswahl der Datenquelle gelöscht.

Importhinweis beim Anlegen eines Kombifeldes hinzugefügt

Technical

Das Hinzufügen eines neuen Kombifeldes führt nun ebenfalls dazu, dass ein Hinweis bezüglich eines benötigten Imports angezeigt wird.

Bad Request und Internal Server Error bei mehrmaligem "Konfiguration erneut laden" behoben

Technical

Ist kein custom product reader für die Recommendation Engine eingestellt kommt es auf der Systemübersichtsseite zu keiner Exception mehr.

Mülleimer wirft keine NullPointerExceptions mehr bevor Channel mittels Installer eingerichtet wurde

Technical

Eine Exception während des Betretens der Mülleimer-Seite ohne eingerichtete Channels wurde behoben.

Fehlermeldung beim Löschen von Feld mit FieldRole hinzugefügt

Technical

Der Versuch ein Feld zu löschen, welches mit einer für die Instore-Ads benötigten Feldrolle ausgestattet ist, führt nun zu einer für den Benutzer sichtbaren Fehlermeldung, die auf den entsprechenden Umstand hinweist.

Design des Informations-PopUps verbessert

Das Design der Informationsdialog-PopUps wurde angepasst.

Dropdownauswahl in ausgewählten ASN-Feldern wird nicht mehr angezeigt wenn unnötig

Technical

Es wurde ein Fehler behoben, durch den die Auswahlbox in den ASN Filtern unnötigerweise angezeigt wurde.

Suggest Blacklist: Delete Button nun sichtbar

Technical

Der Button zum Löschen von Einträgen in der Suggest Blacklist war nicht sichtbar und wird jetzt korrekt angezeigt.

Name der Reg-Ex-Multi-Aittribut-Filter nun ersichtlicher

Technical

Hat ein Filter ein RegExp-Attribut, so wird dieses in der Sortierliste der Filterkonfiguration zusätzlich zum Feldnamen angezeigt.

"Konfiguration vereinheitlichen" wird bei identischen Settings automatisch ausgewählt

Technical

Wenn in der Ergebnislistingkonfiguration nach dem Neuladen die Konfigurationen für Suche und Navigation übereinstimmen, wird das Feld "Konfiguration vereinheitlichen" automatisch ausgewäht.

Manuelle Eingabe im Timeselektor wird nun angenommen

Es wurde ein Fehler behoben, bei welchem manuelle Eingaben im Timeselektor nicht übernommen wurden.

Automatischer Log-Out bei abgelaufener Session implementiert

Technical

Bei abgelaufener Session wird der Nutzer nun beim nächsten Seitenaufruf automatisch ausgeloggt.

Oberflächentexte wurden angepasst

Verbesserung der Oberflächentexte.

„Läuft ab“-Datum im Kampagnen Export angepasst

Technical

Wird eine permanente Kampagne exportiert, wird das Enddatum im Exceldokument auf "-" gesetzt.

Produktkampagne mit Landingpage als Trigger nun nicht mehr möglich

Technical

Da es im Kontext einer Landingpage-Produktkampagne keine Referenzprodukte gibt machen RecommendationsPushedProducts (Upselling, Crosselling, Beliebteste) keinen Sinn und geben nur leere Ergebnisse. Deshalb stehen diese PushedProductsTypen unter diesen Bedingungen nicht mehr zur Auswahl.

Filterfehler in der Thesaurusübersicht bei exaktem Match behoben

Technical

"Suchen und Testen" in der Thesaurusübersicht und Thesauruswerkzeug in der Diagnosesuche zeigen nur Thesauruseinträge an, zeigen nur für die Suche relevante Thesauruseinträge an. Zuvor angezeigte zum Suchbegriff transitive Antonyme haben keinen Einfluss auf das Suchergebnis und werden deswegen nicht angezeigt. 

FF-UI reagiert nun nach Mouse-Back in Diagnose Suche

Ein Fehler wurde behoben, der das Seitenwechseln innerhalb der UI verhinderte, wenn zuvor ein Wechsel ausgeführt wurde, der die selbe Seite referenzierte. 

Hinweis zur Suchzeit aus Diagnostic Search entfernt

In der Diagnostic Search Ansicht wird die Suchzeit nicht mehr ausgegeben, da diese durch Sonderoperationen in diesem Modus nicht aussagekräftig ist.

UI: Search (Demoshop)

Kategorie-Recommendations auf Produktdetailseite fehlen nicht mehr

Technical

Aufgrund von Problemen beim Auftrennen von Feldwerten konnte es vorkommen, dass die Kategorie-Recommendations auf der Detailseite zu einem Produkt nicht angezeigt wurde. Dieses Vorgehen wurde entsprechend überarbeitet. Weiterhin konnten Verlinkungen von Produkten durch die Nutzung einer falschen ID auf leere Seiten verweisen. Die verwendete ID wurde angepasst.  

Anzeige von Beraterkampagnen in der Demo-Suche angepasst

Bisher wurde bei einer Beraterkampagne in der Demosuche nur maximal eine Frage-Baum angezeigt, dies wurde nun angepasst, so dass alle Fragebäume der Kampagne angezeigt werden. Dies war nötig, da bei Beraterkampagnen auch mehrere Anfangsfragen konfiguriert werden konnten.  

"Anzeigen als HTML" übernimmt Parameter nun

Der Demoshop enthält nun die Möglichkeit über einen Button direkt zur Diagnosesuche zu springen. Die Suchparameter bleiben hierbei erhalten.

Demoshop-Berechtigungen für SearchInterfaceUser angepasst

Technical

Die Berechtigungen wurden angepasst, sodass ein Nutzer mit der Rolle SearchInterfaceUser auf den Demoshop zugreifen kann.

Operating

Manuelles Neuladen der DB schlägt bei fehlender Recommendation-Konfiguration trotz inaktivem Modul nicht mehr fehl

Technical

Das manuelle Neuladen der Datenbanken, sowohl über die Oberfläche, als auch über die entsprechende API, führte zu einem Fehler, falls einzelne Module die selbst eine Datenbank haben (zB Recommendation-Engine, Suggest) nicht aktiv waren.  

Sofortiges Feedback beim Neuladen der Konfiguration

Technical

Beim Neuladen der Konfiguration in der Systemübersicht wird sofortiges Feedback gegeben, wenn Konfigurationsdaten fehlerhaft sind.

Tests

Configuration

Placeholder in den Cache-Einstellungen werden nicht mehr verworfen

Technical

Beim Speichern der Cache-Einstellungen in der UI wurden bisher Placeholder im Hauptverzeichnispfad des Caches durch die Werte ersetzt, die sie repräsentieren. Das Verhalten wurde korrigiert, so dass Placeholder im Hauptverzeichnispfad auch nach dem Speichern der Cache-Einstellungen erhalten bleiben. 

Ranking Rules

Validierung Timeranking mit Default-Pattern schlägt nicht mehr fehl

Technical

It was not possible to specify Unix timestamps for time based ranking rules. The UI always claimed that the specified time stamp is empty. This bug was fixed.

Ranking Regel lassen sich jetzt per Drag & Drop verschieben

Technical

Das Drag&Drop Verhalten der Ranking Regeln wurde gefixt.

Unvollständige Validierung in RankingRules behoben

Technical

Es wurde ein Fehler behoben, der dazu führte, dass neu erstellte Ranking Rules erst nach einem Neustart von FACT-Finder erkannt wurden, wenn es zu dem Channel bisher keine xml für Ranking gab.

Response / APIs

Fehler im JSON-Schema behoben

Technical

In den JSON-Schema-Defintionen war innerhalb von pageLinks das Attribut searchParams fälschlicherweise als searchResult benannt. Zudem hatten absoluteMinValue, absoluteMaxValue, selectedMinValue und selectedMaxValue als Typ integer anstatt number.

RefreshDatabases funktioniert nun auch ohne Channel-Parameter

Technical

Die API RefreshDatabases.ff konnte nicht ohne Channel-Parameter aufgerufen werden. Nun ist dies wieder möglich und entspricht einer Aktion für alle vorhandenen Channels.

Configuration Editor

Fehler bei abgelaufener Transaktion bei unveränderter Konfiguration behoben

Technical

Ein Fehler, der dazu geführt hat, dass beim Schliessen von unveränderten Transaktionen eine Fehlermeldung angezeigt wurde, wurde behoben.

Performance des Mülleimers verbessert

Technical

Das Abfragen relevanter Mülleimer-Einträge in der Suchdiagnostik wurde beschleunigt.

Validierung der ID-FieldRole beim Editieren von Feldern angepasst

Technical

Kleinere UI-Fixes für die Feldrollen bei den Index-Feldern.

Beschriftung der Relevanz-Sortieropton aufgrund fehlerhafter Validierung angepasst

Technical

Es wurde ein Fehler behoben, der dazu führte, dass in der Oberfläche ein Validierungsfehler auftauchte, wenn keine Beschriftung für die Sortieroption "aufsteigend nach Relevanz" angegeben wurde.

Unterstützung von Sequenz-Ansicht des Facet Editors bei mehreren geclusterten Facetten

Technical

Die Sequenz-Ansicht des Facet Editors kann jetzt verwendet werden wenn mehrere geclusterte Facetten direkt voneinander abhängig sind.

Diagnostic Search (Adminmode)

Fehler mit ASO oder Semantic Enhancer und Pushed Products behoben

Technical

Gepushete Produkte, die von ASO oder Semantic Enhancer beinflusst werden, führen in der Diagnose Suche zu keinem Fehler mehr.

Sortierung der Diagnose-Suche überarbeitet

Technical

7.1, 7.2: Die Informationen über die bevorzugte Sortierung, welche kurzzeitig in den Präferenzen der Nutzer hinterlegt werden konnten, werden beim Einlesen der Nutzer entfernt, da sie Probleme in der Diagnosesuche verursachen und nicht mehr unterstützt werden. 7.3: Für 7.3 übernimmt der Migrator das Entfernen von eventuell noch vorhandenen Sortierungspräferenzen, so dass ein FACT-Finder-seitiger Check entfallen kann.

Diagnostic Search: Suggest suche setzt den Pager nun korrekt

Technical

Ein Fehler wurde behoben, der bei Auswahl eines Suggestvorschlags in der Diagnosesuche dazu führte, dass der Pager der Ergebnistabelle 0 Ergebnisse pro Seite und Integer.MAX_VALUE Seiten meldete, obwohl die Tabelle genau ein Ergebnis enthielt.

Trefferliste bedingt durch veraltete Mülleimer-Einträge nicht mehr leer

Technical

Veraltete Mülleimer-Einträge werden nun als unbekannte Produkte in der UI angezeigt und führen nicht mehr zu Fehlermeldungen.

Suchoptimierung anhand "Gefundene Begriffe"-Optionen aktualisiert Diagnoseergebnis/Werkzeugleiste nun automatisch

Technical

Suchoptimierung über die "Gefundene Begriffe"-Optionen sorgen nun dafür, dass das Diagnoseergebnis aktualisiert wird.

Fehler in Diagnose-Suche in FF7.2 bei Änderungen der Kategorienamen behoben

Technical

Die UI zeigt wieder die korrekten Facetten-Namen an wenn Facettenwerte durch Callbacks umgeschrieben werden.

Fehlerreaktion der Diagnostic Search bearbeitet

Technical

Diverse kleine Fehler in der Diagnosesuche wurden behoben.

Fehler behoben, der das Abwählen von Filtern verhinderte

Ein Fehler der das Abwählen von Facetten in der Diagnosesuche verhinderte wenn die FacetId nicht dem Feldnamen entsprach wurde behoben.  Ein Fehler der Kategorie Filter in der Diagnosesuche duplizierte wurde behoben.

Diagnosesuche zeigt nun SearchManager-Berechtigungen Ergebnisse an

Technical

Die Diagnosesuche zeigt nun auch SearchManager-Berechtigungen Ergebnisse an.

Performance

SimilarResultsFinder sucht nicht mehr nach ungültigen Kategorie-Pfaden

Technical

SimilarResultsFinder fügt dem Suchergebnis nur noch Produkte aus den Leaf Categories des Kategoriebaums des Base Products hinzu.

Sonstiges

FACT-Finder kann nun CSV Dateien herunterladen, wenn Umlaute im Domainnamen sind.

Technical

Dateien von Toplevel-URLs, die ein Umlaut enhalten, konnten nicht heruntergeladen werden.

Von Analytics-Server bedingte Fehlermeldungen wurden überarbeitet

Technical

Die Fehlermeldungen in der UI, die aufgrund eines nicht erreichbaren Analytics-Servers angezeigt werden, sind nun aussagekräftiger und weisen auf das konkrete Problem hin.

Anzeigefehler beim Klonen von Kampagnen behoben

Technical

Der Dialog zum Klonen einer Kampagne soll eine Warnung anzeigen, wenn von der Kampagne verwendete Felder im Zielchannel fehlen. Diese Funktionalität war defekt und wurde repariert. 

SecurityProvider wird jetzt vor den Custom Classes initialisiert

Technical

Der SecurityProvider wird jetzt vor den Custom Classes initialisiert und steht folglich in den Custom Classes zur Verfügung.

Feedbackkampagnen mit Filterkriterium sollten nun ausgelöst werden

Technical

Attribut-Felder werden beim Prüfen von Kampagnen-Triggern jetzt vor anderen (virtuellen) Feldern geprüft. Dadurch funktionieren Kriterien auch bei dynamisch erzeugten Attributs-Facetten im Suchergebnis-Matching.

Reload aktualisiert Infos in AppStorage

Technical

Das Neu-Laden der Konfiguration über die Systeminformationen aktualisiert jetzt auch die Channel-Informationen und aktiven Module.

Auf dieser Seite