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 nursimilarWordsCount
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 WerteCAMPAIGN
,CAMPAIGN_REMOVED_FROM_SEARCHRESULT
,MERGE
,SEARCHRESULT
haben, wobeiMERGE
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
auf0
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
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 etwaIPlaceholderResolver
zuPlaceholderResolver
. - 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 demFactFinderContextService
vorzuziehen - dies kann auchPlaceholderResolver
sein. - Bereits zuvor bestand keine Garantie, dass
FileWithFallback
aufgelöste Pfade beinhaltet. Je nach Parametern des Konstruktor-Aufrufes verglichen zweiFileWithFallback
s entweder Pfade mit oder ohne Platzhaltern. Framework-weit ist nun vorgesehen, prinzipiellFileWithFallbacks
mit Platzhaltern zu erstellen und Pfade ausschließlich über Methoden zu benutzen, die aufget*Path(PlaceholderResolver
lauten, um Pfade mit ersetzten Platzhaltern zu erhalten. - Ist u.a. bei
FileWithFallback
oderImportFile
keine Auflösung der Pfade gewünscht, so ist bevorzugtde.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ürPlaceholderManager#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 neueFileWithFallbacks
erstellt wurden, anstattt alte wiederzuverwenden sowie das aufgehobeneFileWithFallbacks
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 etwaSearchParams
ohne Channel konvertiert werden.de.factfinder.servlet.ContextListener
ist entfallen. DerServletContext
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:
Feld | ID | Description | Category | ProductName | Price | ArticleNumber | Manufacturer |
---|---|---|---|---|---|---|---|
Inhalt | 01120c948ad41a2284ad9f0402fbc7d | With this sneaker you will walk in style. It's available in green and blue. | Sneakers/Men\|Specials/Sale | Adidas Sneaker | 44.8 | 277KTL | Adidas |
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
:
Key | Beschreibung | Beispiel |
---|---|---|
findologic.Items | XPath zu den Item-Elementen relativ zum root-Element | /findologic/items/item (default) |
findologic.fieldID | XPath zur ID eines Items relativ zum Item-Element | @id (default) |
findologic.field.FieldName | XPath zum Wert für des Feld FieldName relativ zum Item-Element | names/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.
Feldrolle | XPath |
---|---|
productName | names/name\[not(@usergroup)\] |
displayProductNumber | allOrdernumbers/ordernumbers\[not(@usergroup)\]/ordernumber |
trackingProductNumber | allOrdernumbers/ordernumbers\[not(@usergroup)\]/ordernumber |
campaignProductNumber | allOrdernumbers/ordernumbers\[not(@usergroup)\]/ordernumber |
description | descriptions/description\[not(@usergroup)\] |
deeplink | urls/url\[not(@usergroup)\] |
price | prices/price\[not(@usergroup)\] |
imageUrl | allImages/images\[not(@usergroup)\]/image\[not(@type=thumbnail)\] |
brand | allAttributes/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.