Technische Release Notes NG 1.0.1
Neue Features
GEO-Suche
Neues Modul: Geo-Suche
Es gibt ein neues Modul namens Geo Suche. Dieses wird über den Parameter useGeo=true in den fff.properties aktiviert. Die Geo Suche erlaubt es Produkte Läden zuzuordnen und die Produkte unterschiedlich zu ranken je nachdem wie weit der Suchende von den Läden entfernt ist. Ebenso ist es möglich ladenspezifische Werte zu den Produkten zu speichern (bspw. stock oder Ladenpreis) und die Produkte anhand dieser Informationen zu ranken.
GEO-Suche in der Integrationsdokumentation siehe → hier.
GEO-Suche in der FACT-Finder Benutzeroberfläche siehe → hier.
After Search Navigation (ASN)
Kategoriepfade können direkt angesteuert werden
Es wurde ein neuer optionaler SearchCallback hinzugefügt: GoToSelectedLevelOfClusteredFacetCallback. Er kann nach dem letzten SearchCallback, welcher die Facetten bearbeitet, eingefügt werden. Er wird dafür sorgen, dass sich geclusterte Facetten nicht mehr wie Checkboxen verhalten, sondern, bis auf das unterste Level, immer das ausgewählte Level ansteuern. Ein Beispiel: Es existiert ein Cluster X1, X2, X3. Befindet man sich auf dem Level von X3 und klickt dann auf X2, landet man ohne den Callback auf dem Level von X1. Mit dem Callback würde man die Produkte von X2 angezeigt bekommen. Weil es keinen Sinn machen würde, beim Klick auf X3 auf dem gleichen Level zu verweilen, verhält sich das unterste Level weiterhin wie eine Checkbox und wird beim Klick abgewählt. Der Nutzer sieht die Produkte von X2. Der Callback bezieht sich normalerweise auf alle Channel und wird automatisch für Facetten angewandt, welche mit einem Feld assoziiert sind, welches CategoryPath als Feldtyp hat. Über die Callback-Konfiguration kann das Defaultverhalten deaktiviert werden. Mit inactiveChannels kann der Callback für spezifische Channel deaktiviert werden. useCategoryPathPerDefault ist der default true, kann aber auch auf false gestellt werden. In diesem Fall wird nur das Verhalten der Cluster-Facetten der definierten Felder angepasst. Die Felder können über die fieldNames-Property definiert werden. Eine Callback-Konfiguration könnte folgendermaßen aussehen
{ "class": "de.factfinder.search.callbacks.GoToSelectedLevelOfClusteredFacetCallback", "config": { "inactiveChannels": [ "channelWithOutThisCallback" ], "fieldNames": [ "Kategorie", "Unterkategorie" ], "useCategoryPathPerDefault": "false" } } |
Search Behaviour
Parameter disableDeduplication und deduplicationField hinzugefügt
Es gibt zwei optionale Parameter für die Suche um die Deduplizierung für einen einzelnen Request zu beeinflussen.
disableDeduplication
Falls im Channel standardmäßig die Deduplizierung aktiviert ist kann mit diesem Parameter in einem einzelnen Request die Deduplizierung ausgeschaltet werden. FACT-Finder liefert dann alle Varianten zurück.deduplicationField
Standardmäßig werden Varianten bezüglich ihrer Master-Id dedupliziert. Das heißt bei aktiver Deduplizierung wird nur eine Variante pro Master-Produkt zurück geliefert. Mit diesem Parameter kann ein zusätzliches Feld für die Deduplizierung bestimmt werden. Ist der Parameter gesetzt wird nur die erste Variante pro Feld-Wert erhalten. Die Deduplizierung nach Master-ID erfolgt zusätzlich als nachträglicher Schritt.
In NG wurde disableDeduplication
in useDeduplication
umbenannt und entsprechend ist die Funktionsweise genau umgekehrt zu verstehen.
Suggest
Multi-Attributsfelder im Suggest wieder unterstützt
Es ist jetzt wieder möglich Multi-Attributsfelder für den Suggest Import zu verwenden.
Priorität der Suggestions soll aktivitätsabhängig gewertet werden
Es wurde ein neuer SuggestionProvider hinzugefügt, welcher eine Priorisierung der über ihn erstellten SearchTerm-Suggestions anhand von Trackinginteraktionen erlaubt.
Dieser Provider benötigt eine laufende Instanz des neuen Analytics und kann mit dem "alten" Analytics nicht betrieben werden.
Der Provider nimmt einige Settings entgegen:
<minSearchCount>2</minSearchCount> <numberOfDaysToAnalyze>7</numberOfDaysToAnalyze> <clickWeight>1.0</clickWeight> <cartWeight>10.0</cartWeight> <checkoutWeight>20.0</checkoutWeight> <minInteractionsCount>5</minInteractionsCount> <redirectCampaignBoost>0.2</redirectCampaignBoost> |
Man kann definieren wie oft eine Searchquery mindestens aufgetreten sein muss und wie viele Interaktionen es zu dieser Query mindestens gegeben haben muss (Carts, Klicks und Checkouts), um als Empfehlung berücksichtigt zu werden. Weiterhin kann man den Zeitraum auswählen, für den Such- und Trackinglogs ausgewertet werden sollen.
Die Gewichte legen fest wie stark die einzelnen Interaktionen die Priorität der Empfehlung beeinflussen. Dabei wird das Gewicht mit der Anzahl der Events der entsprechenden Interaktion multipliziert. Der Einfluss von Carts, Klicks und Checkouts werden dann zur Priorität der Empfehlung addiert.
Des Weiteren können aktive, freigegebene Redirect Kampagnen die Priorität einer Empfehlung beeinflussen. Dafür kommen nur Kampagnen in Frage, bei denen alle Kriterien dem folgenden Muster entsprechen: SearchTerm equals <QUERY>.
Wobei QUERY dem Namen der Empfehlung entsprechen muss, um Auswirkung auf deren Priorität zu haben.
Falls es eine entsprechende Kampagne gibt, wird die Anzahl der Suchen mit der Query der Empfehlung mit dem redirectCampaignBoost-Setting multipliziert und zur Priorität hinzuaddiert.
Neuer Suggesttyp: Query mit Kategoriepfad
Es wurde ein neuer SuggestionProvider hinzugefügt, welcher es möglich macht Suggestions mit automatisch gesetzten Filtern zu erzeugen (SuggestionWithFilterLogfileProvider).
Dieser Provider benötigt eine laufende Instanz des neuen Analytics und kann mit dem "alten" Analytics nicht betrieben werden.
Der Provider nimmt einige Settings entgegen:
<minSearchCount>2</minSearchCount> <numberOfDaysToAnalyze>7</numberOfDaysToAnalyze> <clickWeight>1.0</clickWeight> <cartWeight>10.0</cartWeight> <checkoutWeight>20.0</checkoutWeight> <minInteractionsCount>5</minInteractionsCount> <maxNumberOfPairs>1</maxNumberOfPairs> <couplingString>in</couplingString> <idField>MasterId</idField> <fields> <field id="67892c7a-3b49-44e9-b761-4d64cb15af6d" name="category1" /> <field id="002bb410-6bbc-4bda-9257-0568a9acda73" name="CategoryPath" /> </fields> |
Man kann definieren wie oft eine Suchquery mindestens aufgetreten sein muss und wie viele Interaktionen es zu dieser Query mindestens gegeben haben muss (Carts, Klicks und Checkouts), um als Empfehlung berücksichtigt zu werden. Weiterhin kann man den Zeitraum auswählen, für den Such- und Trackinglogs ausgewertet werden sollen.
Von den so gewonnenen Empfehlungen werden für die zugehörigen Suchanfragen die Produkte ermittelt. Also die Produkte, die für den Suchbegriff Interaktionen aufweisen.
Um die Produkte korrekt aus der Datenbank auslesen zu können, muss im idField der Name des Feldes hinterlegt werden, dessen Inhalt als Id für die Produkte im Tracking- und Searchlog verwendet wird.
Von allen gefundenen Produkten wird das Produkt ausgewählt, welches den höchsten Wert für den "Interaction-Score" erhält. Dieser berechnet sich aus den Klick-, Cart- und Checkout-Events für dieses Produkt. Die Anzahl der Events wird mit den in den Einstellungen angegebenen Gewichten multipliziert und dann zusammenaddiert.
Pro Suchwort werden Suchwort-Produkt-Paare gebildet. Die maximale Anzahl richtet sich nach dem maxNumberOfPairs Setting. Für die festgelegten Felder werden die Werte der besten Produkte ausgelesen und diese als Filter zu dem Suchwort hinzugefügt und sind so in den SearchParams für die Empfehlung verfügbar.
Weitere Informationen sind in der config.xml.example für Suggest zu finden.
Operating
Neue Monitoring-Schnittstelle
Es wurde eine Monitoring-Schnittstelle erstellt. Unter manage/info.json
bzw. manage/health.json
können diverse Monitoring-relevante KPIs und Metriken geprüft werden.
Import
Handling von gleich benannten Feldern verändert
Ein Feld mit einem Namen, den bereits ein anderes Feld hat, wird nun beim Import und über die UpdateDeleteInsert-Schnittstelle ignoriert anstatt den Import des entsprechenden Records abzubrechen.
Dass es keine zwei Felder mit gleichem Namen geben darf, war bereits zuvor Bedingung. Leider konnte es vorkommen, dass virtuelle Felder erstellt wurden, deren Namen mit einem bereits vorhanden normalen oder virtuellen Feld mit anderem Quellfeld übereinstimmen, falls ein Attribute eines Multiattributfeldes einen entsprechenden Namen aufwies. In diesem Fall wurde der Import des Records abgebrochen.
Das entsprechende Feld wird jetzt ignoriert und eine Logmeldung ausgegeben sowie eine Fehlermeldung am Importergebnis hinterlegt. In einem solchen Fall sollte das Attribute umbenannt werden.
Analysis
Anzahl Suchbegriffe im Excel-Report nun konfigurierbar
Die Anzahl der Suchbegriffe die der Excel What's Hot-Export zurück gibt, ist nun konfigurierbar über die fff.properties.
whatshotSearchTermAmount=500 |
Installation Assistant / Migrator
Deduplizierung nun einstellbar und deaktivierbar
Die Deduplizierung von Varianten kann nun auf der Ergebnis-Listing-Seite an- bzw. ausgeschaltet werden. Des Weiteren ist es dort möglich anzugeben wie Varianten sortiert werden sollen. Bei aktivierter Deduplizierung wird zu jedem Masterprodukt nur die erste Variante mit zurück geliefert. Bei deaktivierter Deduplizierung werden alle Varianten zurück geliefert.
Die Anzahl an zurück gegebenen Varianten lässt sich, unabhängig von der Einstellung zur Deduplizierung für einen einzelnen Request überschreiben. Hierfür muss der Parameter maxCountVariants
auf die gewünschte Anzahl an zurück gegebenen Varianten gesetzt werden.
Campaign Manager
Kampagnenkriterien-Operator "dazwischen" implementiert
Es gibt einen neuen Operator für numerische Kriterien. InRange
greift, wenn der zu vergleichende Wert innerhalb des definierten Intervalls liegt. Die Grenzen des Intervalls gelten dabei als Teil des Intervalls.
Distanz-Kriterium für Kampagnen
Für das Auslösen von Kampagnen kann nun auch die Distanz zwischen dem Suchenden und einem eingestellten Ort herangezogen werden.
Es gibt ein neues Kriterium für Kampagnen namens Distanz. Dabei wird im Kriterium eine Position durch die Eingabe von Längen- und Breitengrad angeben. Das Kriterium fungiert dann wie ein normales numerisches Kriterium auf der Distanz, in Kilometern, zwischen dem Suchenden und der eingegebenen Position. Das Kriterium kann nur feuern, wenn die Position des Suchenden übermittelt wird. Die Position wird dabei durch die beiden neuen Suchparameter latitude und longitude übermittelt.
UI: Management Interface
Notizfeld
Über die Benutzer Profilseite lässt sich ein Notizeditor aufrufen, mit dem eigene Notizen angelegt und bearbeitet werden können.
NG: Der Notizeditor ist nun von jeder Seite aus über den Header erreichbar.
Die Notizen werden dabei verschlüsselt in der usermanagement_users.xml abgelegt. Anmerkung: Die Notizen sind ausschließlich auf der Instanz abrufbar auf der sie erstellt wurden, da die usermanagement_users.xml nicht zwischen den Instanzen synchronisiert wird.
Configuration
Option, um AutoRevert während Transaktion zu verhindern
Fortgeschrittene Nutzer haben nun die Möglichkeit das automatische Zurücksetzen von Änderungen bei Validierungsfehlern innerhalb einer Transaktion temporär zu deaktivieren. Dadurch ist es leichter möglich komplexere Änderungen durchzuführen, wie z.B. die Änderung der Feldrollen oder dem Umbenennen eines Facettenclusters.
Sonstiges
Request Informationen im ProductCompareCallback verfügbar gemacht
Die ProductCompare
Schnittstelle akzeptiert nun auch custom Parameter. Für die Nutzung hat sich das ProductCompareCallback
Interface geändert. Die Methode ProductCompareCallback#beforeGetRecordsToCompare
erhält nun neben der Suchkonfiguration und der Attribute-Map, eine Instanz der ProductCompareParameters
. In diesem Objekt sind die Produkt-Ids, die zu vergleichen sind, enthalten ebenso wie das idsOnly
-Flag und die custom Parameter. Die Methode gibt dann eine Instanz dieser Parameter zurück, die dann verwendet wird.
Majority- und Threshold-Modi implementiert
Es gibt nun zwei weitere Modi, wie die Parent-Konfiguration im Channel-Wizard erstellt wird.
- Threshold
- Alle Einstellungen oder Einträge in Listen, die in mindestens X Quell-Channeln vorkommen, wandern in die Parent-Konfiguration. Alle anderen Einstellungen werden mit den Werten aus der Fallback-Konfiguration initialisiert. Der Schwellenwert X kann hierbei vom Nutzer angegeben werden.
- Majority
- Funktioniert prinzipiell wie der
Threshold
-Modus mit dem Unterschied, dass der Schwellenwert automatisch berechnet wird. Einstellungen müssen in mindestens der Hälfte der Quell-Channel vorkommen um in die Parent-Konfiguration zu wandern. Bei einer ungeraden Anzahl von Quell-Channeln wird der Schwellenwert aufgerundet. Bei 3 Quell-Channeln wäre der Schwellenwert bspw. 2.
Authentifizierung für Monitoring-Schnittstelle eingeführt
Um Zugriff auf die Manage API zu erhalten wird nun die User-Rolle ApiManage
oder der Scope manage
benötigt.
Aufwertung durch Ranking Rules ermöglichen
Mit Ranking Regeln können Produkte nun auch aufgewertet werden.
Verbesserungen / Änderungen
Automatic Search Optimisation (ASO)
FFAutomaticSearchOptimization-Feld entfernt
Das Feld FFAutomaticSearchOptimization wird nicht mehr genutzt und wurde entfernt.
After Search Navigation (ASN)
Support für Regex-Facetten implementiert
Regex-Facetten werden nicht mehr anhand des Attributs erraten, sondern explizit mit einer Checkbox in der UI konfiguriert.
Facet-ID entfernt
Die facetId Einstellung von Facetten wurde entfernt. Die Identifikation von Facetten erfolgt nun über den internen Namen der Facette. (Das ist nicht der displayName)
Der interne Name hängt vom Feld ab, das die Facette benutzt und wird folgendermaßen definiert:
- Wenn ein Attribut definiert ist, ist der Grundname das Attribut. (Bei RegEx-Attributen ist dies das RegEx-Muster).
- Ist kein Attribut definiert ist der Grundname der Feldname
- Ist ein categoryPathLevel in der Facette definiert wird dieses an den Grundnamen angehängt, ansonsten ist der interne Name der Grundname.
Wie die facetId früher muss der interne Name der Facette eindeutig sein.
Der Tag parentFacetId in der Facetten-XML wird entsprechend in parentFacetName umbenannt. Die Referenzen werden beim Migrieren automatisch aktualisiert.
Ebenso werden Filter-Kriterien in Kampagnen, die Facetten referenzieren, entsprechend beim Migrieren aktualisiert.
Cache
Suchcaching auf Ehcache umgebaut
Das Suchcaching wurde auf ehcache umgestellt. Das Caching kann dabei über eine xml Konfigurationsdatei konfiguriert werden. Der Pfad zu dieser Datei kann über cache.config
in den fff.properties
angegeben werden. Standardpfad ist APP_RESOURCES/conf/ehcache.xml
. Ist diese Datei nicht vorhanden wird eine interne default Konfiguration verwendet.
In der Konfiguration wird dabei ein cacheTemplate
definiert. FACT-Finder wird für jeden Channel einen einzelnen Cache auf Basis der Templates anlegen. Eine Beispielkonfiguration des Template könnte so aussehen:
<ehcache:cache-template name="searchResult"> <ehcache:key-type>java.lang.String</ehcache:key-type> <ehcache:value-type>de.factfinder.search.ResultWithTimestamp</ehcache:value-type> <ehcache:expiry> <ehcache:tti unit="minutes">2</ehcache:tti> </ehcache:expiry> <ehcache:resources> <ehcache:heap unit="entries">200</ehcache:heap> <ehcache:disk unit="MB">500</ehcache:disk> </ehcache:resources> </ehcache:cache-template> |
Der Name sowie die Definition des Key-Types und Value-Types dürfen nicht verändert werden.
expiry
ist optional und gibt an ab wann ein Cache-Eintrag als veraltet gilt. Per default veralten Einträge nicht. Im vorliegenden Beispiel würden Eintrage veralten, wenn sie 2 Minuten lang nicht angefragt wurden (tti = time to idle).
Über resources
lässt sich die maximale Größe des Cache einstellen, sowie die verschiedenen Schichten definieren.
Es gibt als erste Schicht immer einen Cache im Heap, der in der Anzahl seiner Einträge limitiert ist. Unten drunter gibt es die Persistenz des Cache auf Disk-Ebene, wobei hier die Speichergröße limitiert ist.
Hierbei ist zu beachten, dass diese Limits pro Cache gelten. Die Ressourcen werden nicht zwischen den Caches geteilt. Wird ein Cache also auf 500MB limitiert und es gibt 10 Channels so kann der gesamte Speicherverbrauch auf bis zu 5000MB ansteigen. Der Pfad, wo der Cache auf Platte persistiert wird, kann nicht mehr eingestellt werden. FF wird beim Start ein temporäres Verzeichnis für diesen Zweck anlegen. Zu erkennen ist ein solches Verzeichnis am ehcache-
Präfix. Ist das Verzeichnis aktuell in Benutzung enthält es eine .lock
Datei.
Der clearCache Job löscht alle nicht mehr benutzten Cache Verzeichnisse.
Weitere Details finden sich in der offiziellen Dokumentation von ehcache, sowie in einer example-config, die in den defaultResources liegt.
Verbesserung des Cache
Die Performance des Suchcache wurde verbessert.
Suggest
Umgang mit DeduplicateSuggestionsProcessor optimiert
Die optionale Priorisierung von Suggest-Typen hat nun Einfluss auf die letztendliche Sortierung der Suggest-Ergebnisse.
Suggest-Performance verbessert
Die Suggestkonfiguration wird nicht mehr bei jedem Zugriff kopiert. Zusätzlich wird nicht mehr bei jedem Suggestkonfigurationszugriff auf die Platte zugegriffen. Die deepCopy Operation wird ab jetzt mittels Kryo statt plain-Java Serialisierung durchgeführt.
Sortieren für Suggest
Die Standard Suggest Felder: name, hitCount, type und priority sind nun sortierbar. An der SearchWithBlockResponse ist es nun möglich einzelne Felder je Suggest Typ sortierbar zu machen. Standardmäßig sind alle Attribute-Felder nicht sortierbar. Die Konfiguration sieht wie folgt aus:
<fields type="productName"> <field name="products_price" sortable="true"/> <field name="category1" sortable="false"/> </fields> |
Suchstrategien implementiert
In der Suggest Such-Implementation SearchWithBlockResponse ist es nun möglich folgende Such-Strategien festzulegen: ARTICLE_NUMBER, STARTS_WITH, ENDS_WITH, STARTS_OR_ENDS_WITH_WORDWISE, EXACT, PHRASE und FUZZY. Verhalten und mögliche Parameter sind der config.xml.example zu entnehmen.
minQueryLength, maxQueryLength, minWordCount, maxWordCount implementiert
An den Such-Strategien in der Such-Implementation SearchWithBlockResponse kann man nun folgende Bedingungen festlegen:
- minWordCount - Der Query darf mindestens x Wörter enthalten.
- maxWordCount - Der Query darf maximal x Wörter enthalten.
- minQueryLength - Der Query darf mindestens eine Länge von x haben.
- maxQueryLength - Der Query darf maximal eine Länge von x haben. Wenn eine oder mehrere Bedingungen nicht zutreffen wird die Strategie übersprungen.
Die Klasse de.factfinder.suggest.search.SearchWithBlockResponse wurde in de.factfinder.suggest.search.blockresponse.SearchWithBlockResponse umbenannt.
Suggestion-Relevanz wird nun in der API zurückgeliefert
Die Relevanz (Score) einer Suggestion wird nun über die REST-API zurückgegeben.
Abwertung für Strategien
In der Suggest Such-Implementation SearchWithBlockResponse ist es nun möglich an Strategien eine Abwertung zu definieren, das kann genutzt werden um Ergebnisse bestimmter Strategien über anderen anzuordnen.
Import
Suggestimport wird aufgrund nicht mehr vorhandener Such-Felder nicht abgebrochen
Der Import wird nun nicht mehr unterbrochen. Stattdessen gibt es eine entsprechende Nachricht, die im Minuten-Takt in das Log eingetragen wird.
Statusnachrichten in ImportReader verfügbar gemacht
Custom ImportReader haben jetzt Zugriff auf (Log-)Messages.
intermediate Import Thread-Anzahl konfigurierbar gemacht
Die Anzahl der Threads mit der die Zwischendatenbank befüllt wird ist jetzt konfigurierbar. Als default wird die Anzahl verfügbarer Kerne benutzt.
Import-Rückgabe verbessert
Die Rückgabe der Import REST-API wurde verändert, mehr Informationen sind auf der Swagger-UI https://ng-demo.fact-finder.de/fact-finder/swagger-ui.html zu finden.
RemoveHtmlCodeImportHandler deutlich verschnellert
Die Geschwindigkeit des RemoveHtmlCodeImportHandler
wurde deutlich erhöht.
Zwischendatenbank erstellt
Es wurde eine Zwischendatenbank eingefügt, deren Befüllung der erste Schritt im Importprozess ist.
Für die Zwischendatenbank wurden verschiedene Settings in die fff.properties aufgenommen. Diese sind: importer.username (default: postgres) impoerter.password (default: admin) importer.port (default: 5432) importer.defaultDatabaseName (default: postgres) importer.serverName (default: localhost) importer.tableName (default: data) importer.dialect (default: H2) Für den Einsatz in Produktivsystemen sollte der importer.dialect auf POSTGRES geändert werden.
Feldtypen für CSV eingefügt
Es wurden die neuen Feldtypen Boolean und Date hinzugefügt.
Importfortschrittsanzeige angepasst
Der Fortschrittsbalken für den Import wurde angepasst. Hierdurch gibt es nun zwei Fortschrittsbalken, einen für die Zwischendatenbank und einen für die Worldmatch-Datenbank. Sollte bisher keine Zwischendatenbank vorhanden sein werden nur die importierten Einträge hochgezählt, ohne dass es einen Fortschrittsbalken gibt.
Plausibilität von Artikelnummernfeldern nun prüfbar
Auf der Feldpriorisierungs-Seite ist es nun möglich zu überprüften mit wie vielen Werten ein Muster in der Datenbank übereinstimmt.
NG-Datenbank wird bei vorhandener Zwischendatenbank automatisch geladen
Liegen Daten in der Zwischendatenbank vor aber es existiert keine Worldmatch Datenbank so wird durch einen Versuch die Datenbank zu nutzen automatisch ein entsprechender Import gestartet. Die Anfrage wird durch ein StartAutoImportEvent
SystemEvent ausgelöst. Nach erfolgreichem Import wird ein DatabaseImported
Event geworfen.
Anpassungen an Delta-Updates durchgeführt
Die REST-Schnittstelle für Delta-Updates ("/records") wurde umfassend überarbeitet und verändert. Die Dokumentation dazu findet sich in der Swagger-UI (https://ng-demo.fact-finder.de/fact-finder/swagger-ui.html).
Analysis
Leere ProductEventData-Dateien werden nicht mehr geschrieben
Leere ProductEventData-Files werden auf Seite von FACT-Finder nun nicht mehr persistiert, sofern zuvor bereits ProductEventData mit Daten vorlagen. Auf diese Weise können Lücken später noch gefüllt werden, sobald entsprechende Daten vorliegen. Zusätzlich ist die Generierung der ProductEventData nun nicht mehr mit dem Vorhandensein von Logfiles für einen Channel verknüpft, da diese nicht relevant sind. ProductEventData werden nur auf Grundlage von SCIC-Logs erstellt.
Tracking
Cookie-ID entfernt
Der cookieId
Parameter wurde von der Tracking-API entfernt.
queryFromSuggest wird standardmäßig mitgeschickt
queryFromSuggest
ist jetzt in den Params der Suggest-Response enthalten.
Campaign Manager
Kampagnen zum Transaktionsmanagement hinzugefügt
Kampagnen wurden zum Transaktionsmanagement hinzugefügt. Um Kampagnen zu löschen, zu bearbeiten, hinzuzufügen oder zu klonen muss für den entsprechenden Ziel-Channel eine Transaktion offen sein.
InResult Kriterium entfernt
Das InResult
Kriterium für Kampagnen wurde entfernt.
Detailseiten API
Es wurde eine DetailPage REST-Api hinzugefügt welche die Record, SimilarProduct, Recommendation und (Page)Campaign REST-Api bündelt. Weitere Informationen wie Parameter sind auf der Swagger-UI https://ng-demo.fact-finder.de/fact-finder/swagger-ui.html vorzufinden.
Distanz-Kriterium-Abhängigkeit vom GeoSearch-Modul
Das Distanz-Kriterium für Kampagnen ist nur verfügbar wenn das GeoSuch-Modul aktiviert ist. Über den Parameter useGeo=false kann es aber auch request-weise abgeschaltet werden. Bestehende Distanz-Kriterien würden in diesem Fall nicht treffen, unabhängig von der übermittelten Position.
Instore Ads
ProductFeedAction ersetzt
Der InstoreAds-Productfeed wurde auf REST umgestellt, da FACT-Finder die xml- bzw. nicht-REST json-Schnittstelle nicht mehr unterstützt.
Der Feed kann jetzt unter .../rest/v2/productfeed/CHANNELNAME
abgerufen werden. Man benötigt dazu einen User mit Berechtigung für InstoreAds und den entsprechenden Channel.
Der Name des Feed, der Content-Type und die Content-Disposition bleiben unverändert. Früher wurde ein 501 HTTP-Status (not implemented) geworfen, falls für den gewünschten Channel kein Feed erstellt werden kann, weil InstoreAds für diesen Channel nicht aktiviert ist oder der Channel keinen InstoreAds-Supplier hat, der einen Feed benötigt. Dieser Status wurde für den Fall, dass kein Supplier mit Feed für den Channel existiert, auf 404 (not found) umgeändert, um deutlicher auszudrücken, dass die Schnittstelle zwar existiert, jedoch für den entsprechenden Aufruf nicht zur Verfügung steht. Im Falle eines nicht aktivierten InstoreAds-Moduls wird nun HTTP-Status 500 zurückgegeben.
SEO Enhancer
SEO Enhancer aus Code entfernt
Der SEO-Enhancer und zugehörige Konfigurationseinstellungen wurden entfernt.
Response/APIs
Alte Displayoptionen aus Suchergebnis entfernt
- Die Konfiguration für das Aufteilen des Suchergebnisses in Seiten wurde verkleinert. Es gibt nur noch die Möglichkeit die standardmäßige Seitengröße anzugeben.
- Die Seiten-Informationen im Suchergebnis enthalten nur noch zwei Seitenlinks. Den zur nächsten und zur vorherigen Seite. Die Beschriftung der Seitenlinks ist entfallen.
- Die Informationen über die aktuelle Sortierung des Suchergebnisses ist nicht mehr im Suchergebnis enthalten.
XML API-Support entfernt
Die Unterstützung für XML in der REST-Api wurde entfernt.
Authentifizierungs-Optionen für API überarbeitet
Die alte Authentifizierung wurde in der REST-Api entfernt. Es ist nun nur noch möglich sich mit Basic Authentication oder OAuth2 zu authentifizieren.
Um sich mit Basic Authentication zu authentifizieren, muss der Authorization
-Header folgendes enthalten: das Wort Basic
gefolgt von einem Leerzeichen und der Base64-Encodierten username:passwort
Zeichenkette
Ein Header mit den Anmeldedaten factfinder
/ pw
würde so aussehen:
Authorization: Basic ZmFjdGZpbmRlcjpwdw== |
ZmFjdGZpbmRlcjpwdw==
ist hierbei die Base64-Representation von factfinder:pw
.
OAuth2 unterstützt verschiedene Abläufe für die Authentifizierung, momentan wird nur der Password-Flow von FACT-Finder unterstützt. Der Ablauf ist wie folgt:
- Anwendung sendet Anmeldedaten + ClientID zu FACT-Finder
- FACT-Finder antwortet bei erfolgreicher Authentifizierung und Autorisierung mit einem Access-Token
- Anwendung nutzt Access-Token um sich in der REST-Api zu authentifizieren
In OAuth2 gibt es Scopes, mit welchen es möglich ist ein Access-Token in der Berechtigung einzuschränken. Eine aktuelle Liste aller Scopes sind auf der Swagger-UI vorzufinden (https://ng-demo.fact-finder.de/fact-finder/swagger-ui.html).
Die Client Konzept in OAuth2 ist für Third-Party Anwendungen gedacht, mit diesem wäre es möglich die Scopes für verschiedene Clients einzuschränken. In FACT-Finder ist dies aber bereits mit den User-Rollen möglich, deswegen soll der Client mit der ID ff
und leerem ClientSecret verwendet werden.
Beispiel Anfrage für einen Access-Token GET-Request: example.de/fact-finder/oauth/token?grant_type=password&username=factfinder&password=pw&client_id=ff
Rückgabe
{ "access_token": "30993c9f-5ed2-4ecd-8e57-c2b6721a656e", "token_type": "bearer", "refresh_token": "c11726cb-9b73-44df-8797-fb9c5be758c8", "expires_in": 3599, "scope": "public_queries import database config analytics" } |
In diesem Beispiel wurden die Scopes nicht limitiert, dies wäre möglich mit dem query-Parameter scope
Beispiel: example.de/fact-finder/oauth/token?grant_type=password&username=factfinder&password=pw&client_id=ff&scope=import config
Scopes werden mit einem Leerzeichen getrennt.
Mit dem Bearer
-Keyword und dem Access-Token im Authorization
-Header kann nun die API angesprochen werden.
Beispiel:
Authorization: Bearer 30993c9f-5ed2-4ecd-8e57-c2b6721a656e |
Mit der Anfrage eines Access-Token wird auch ein Refresh-Token zurückgegeben. Mit diesem ist es möglich einen neuen Access-Token zu erhalten ohne erneutes senden der Anmeldedaten. Beispiel Anfrage: GET-Request: example.de/fact-finder/oauth/token?grant_type=refresh_token&refresh_token=c11726cb-9b73-44df-8797-fb9c5be758c8
Es sind Rollen mit dem Prefix Api
hinzugekommen, welche die einzelnen OAuth2 Scopes repräsentieren.
Beispiel:
Scope public_queries
repräsentiert die Rolle ApiPublicQueries
, import
-> ApiImport
usw..
Rückgabestruktur von "Records" angepasst
Die Struktur der Records im Suchergebnis wurde angepasst.
Jeder Record ist jetzt aufgeteilt nach Master- und Variantenfeldern. Die Variantenfelder sind als Map zwischen VariantenId und den entsprechenden Variantenfeldern dargestellt. Zur Begrenzung der Anzahl der Varianten kann ein maxVariantCount übergeben werden.
POST-Support im SuggestController der REST-API eingeführt
Die REST-API unterstützt nun die Suggestabfrage mittels POST.
REST: Filter und Sort in Swaggerfreundliches Format umgestellt
Die Filter und Sort Parameter für die Search und Suggest GET API wurde verbessert und sind nun über die SwaggerUI hinzufügbar. Format und Beispiele sind auf der SwaggerUI vorzufinden.
https://ng-demo.fact-finder.de/fact-finder/swagger-ui.html
DatabaseChangeEvent entfernt
Das DatabaseChangeEvent
wurde entfernt. Damit ist es nicht mehr möglich Update-Operationen für einzelne Datensätze per Eventlistener zu verbieten. Es wird weiterhin ein DatabaseChangedEvent
nach erfolgreichem Update für jeden Datensatz gefeuert.
XFire entfernt
Die XFire dependency und einige zugehörige Objekte und Schnittstellen wurden entfernt.
RefreshDatabases gelöscht
Das refreshDatabases Interface (und der Reload Databases button) wurden entfernt. Die Recommendation-Datenbank kann über die Import-Schnittstelle neu geladen werden.
ApiError überarbeitet
Im Fehlerfall gibt die REST-API keine Liste an Fehlermeldungen sondern nur noch eine zurück. Mehr Informationen sind auf der Swagger-UI (https://ng-demo.fact-finder.de/fact-finder/swagger-ui.html) zu finden.
Monitoring-API und Rest-API auf verschiedene Pfade aufgeteilt
Die Pfade zur API wurden in REST-API (erreichbar unter /rest
) und Monitor-API (erreichbar unter /manage
) aufgeteilt. Welche API wie genau zu erreichen ist, ist der SwaggerUI zu entnehmen.
Versionierung der REST-API
Die Rest-API von NG ist unter rest/v2
zu erreichen.
FollowSearch-Parameter gelöscht
Der Parameter followSearch
hat in NG keine Bedeutung mehr und wurde entsprechend entfernt.
REST: Delete Record ID-Switch
Die Update- und Delete-Schnittstelle der REST-API kann nun Datensätze mittels Id oder Produkt-Nummer identifizieren.
Struts APIs entfernen, die WebComp nicht nutzt und bereits ersetzt sind
Folgende APIs wurden entfernt:
Import.ff
Update.ff
Delete.ff
Insert.ff
CommunityThesaurus.ff
RefreshDatabases.ff
Die Funktionalität steht zukünftig weiterhin über die REST-API zur Verfügung.
SuchCacheFlush in REST-Api aufgenommen
In der REST-API ist es nun möglich den Such-Cache zu flushen.
REST-API um Funktionen bezüglich AppLog erweitert und aus Struts entfernt
Die REST-API wurde erweitert. Folgende Operationen sind nun möglich:
- Das explizite flushen aller Logdateien
- Das Ändern des Loglevel
- Abfrage der letzten Zeilen aus dem Application Log
Ersatz für die SystemInformation-Seite erstellt und aus Struts entfernt
Im Zuge der Entfernung der alten UI wurde auch die Systeminformations-Seite entfernt. Bitte nutzen Sie als Ersatz die diversen neuen Monitor-Schnittstellen (z.B. /manage/health.json
, /manage/env.json
). Für das Starten von Jobs und Neuladen der Konfigurationsseiten kann die REST-Schnittstelle verwendet werden.
Anpassungen in APIs
Folgende Änderungen an der REST-API wurden vorgenommen
- TagCloud.nr wurde entfernt
- TagCloud.params wurde in searchParams umbenannt
- SimilarProducts.records wurde in hits umbenannt
- Facet.facetOrder wurde entfernt
- Such API Parameter productsPerPage wurde in hitsPerPage umbenant
- Such Rückgabe recordsPerPage und productsPerPage wurden in hitsPerPage umbenannt
PagePermissions entfernt
Das Feature Page Permissions wurde entfernt.
articleNumberSearch und noArticleNumberSearch zusammengefasst
isArticleNumber
und isNoArticleNumberSearch
wurden durch articleNumberSearch
ersetzt. Mögliche Werte:
- ALWAYS: Eine Artikelnummern-Suche durchführen, mit allen Feldern die Artikelnummern-Suche genutzt werden.
- DETECT: Eine Artikelnummern-Suche durchführen, wenn der
artNoRegEx
von einem oder mehreren Feldern mit dem Suchbegriff übereinstimmt. - NEVER: Keine Artikelnummern-Suche durchführen.
Attribute in APIs umbenannt
recordCount
wurde in Facets
und dem SingleWordSearchResult
in totalHits
und disableCache
in den SearchControlParams
wurde in useCache
umbenannt. Mehr Informationen sind auf der SwaggerUI vorzufinden.
AppliedPreprocessorEntries entfernt
Die appliedPreprocessorEntries
wurden aus dem Suchergebnis entfernt.
Neuer SearchControlParams: useSearch
useSearch
ist als SearchControlParam hinzugekommen. Mehr Informationen sind auf der SwaggerUI vorzufinden.
Navigation als eigenen API-Endpunkt erstellt
Die API für die Suche und Navigation wurde getrennt und ist nun über zwei verschiedene APIs erreichbar. Mehr Information sind auf der Swagger-UI vorzufinden.
ignoreForCache umgebaut und über POST ermöglicht
Der ignoreForCache
Parameter mit dem man angeben kann welche custom parameter für das caching nicht relevant sind wurde in cacheIrrelevant
umbenannt. Ebenso wurde in der externen API CustomParameter.cacheRelevant
in CustomParameter.cacheIrrelevant
umbenannt. Der XML-Tag cacheIgnored
wurde ebenso in cacheIrrelevant
umbenannt. Hierbei wurde auch der Bug gefixt, dass cacheIgnored
dem cacheRelevant
entsprach und somit die gegenteilige Bedeutung hatte dessen was der Name suggeriert.
disableDeduplication umbenannt und bei SearchControlParams platziert
disableDeduplication
wurde sowohl in der API als auch in der Suggest-Konfiguration in useDeduplication
umbenannt. Zusätzlich wurde der API-Parameter zusammen mit dem deduplicationField
in die SearchControlParams
verschoben. Mehr Informationen sind auf der SwaggerUI vorzufinden.
Gruppierung der REST-APIs verbessert
Die URLs einiger REST-API Aufrufe hat sich geändert. Nähere Informationen sind in der Swagger-UI zu finden.
FieldRole-Field-Mapping eingebaut
Folgende REST-API Rückgaben enthalten nun auch die Feldrollen:
- CompareProducts
- Recommendation
- SimilarProducts
- DetailPage
Weitere Informationen sind auf der Swagger-UI vorzufinden.
UI: Management Interface
Unnötige Aufforderungen zu Import oder Cache-Leerung vermeiden; ansonsten bei Bedarf deutlich hinweisen
Die Meldungen tauchen nun nicht mehr gleichzeitig auf. Ist ein Import notwendig, so wird zunächst nur die Import-Message angezeigt. Erst wenn kein Import mehr notwendig ist, wird die Cache-Flush Meldung angezeigt.
Wertevorschau für numerische Facetten entfernt
Bei numerischen Facetten gibt es nun keine Wertevorschau mehr.
Konfigurationsmöglichkeit zur unterschiedlichen Gewichtung je Ebene in Kategoriepfad eingerichtet
Auf der Feldgewichtungs-Seite kann nun, wenn ein Kategorie-Pfad Feld definiert ist, die Gewichtung pro Kategorie-Ebene definiert werden. Ebenso kann eine Standardgewichtung angegeben werden falls ein Pfad mehr Ebenen enthält, als hier konfiguriert sind.
UI für Channelmanagement erstellt
Das Nutzerinterface bietet in der linken Navigationsleiste nun den Reiter Channelmanagement
. Dort gibt es die Optionen Channelbearbeitung
, Channel-Wizard
und Sicherungen
. Die Installer-Seite wurde umgestaltet und in Channelbearbeitung
umbenannt. Sie enthält weiterhin die Optionen Channel zu erstellen, zu klonen und zu löschen. Auch kann man weiterhin den Installer-Prozess starten und sich eine Übersicht über den Sperr-Zustand der Channels verschaffen sowie Sperrungen entfernen. Neu hinzugekommen ist eine Suchfunktion für Channel.
Die Sicherungswiederherstellungsfunktion wurde von der Installer-Seite entfernt und auf eine eigene Seite verschoben. Dies ermöglicht es, die Übersicht über vorhandene Sicherungen auch anzuschauen, wenn ein Wiederherstellen aktuell nicht möglich ist, weil der entsprechende Channel gesperrt ist. Die Channel-Wizard-Seite bietet eine neue Funktionalität: Die Möglichkeit aus bestehenden Channeln, welche bisher in keiner Hierarchie verwendet werden, eine Parent-Child-Hierarchie zu erstellen.
Für den Channel-Wizard müssen mindestens zwei normale Channel als Quell-Channel ausgewählt werden. Bisher kann lediglich eine der drei Optionen zur Erstellung des neuen Parent verwendet werden: Der Parent wird auf Basis eines weiteren Quell-Channels erstellt werden. Der Parent wird also alle Settings aus diesem Quell-Channel übernehmen. Die fehlenden zwei anderen Erstellungsoptionen werden in Kürze folgen. S. http://jira.omikron.net/browse/FF-12160
Switch um Fehlermeldungen in der UI zu deaktivieren eingeführt
Die Benutzer-Einstellungen haben die zusätzliche Option ```hideErrorNotifications``` bekommen, mit der Fehlermeldungen im Backend ausgeblendet werden können.
Code Structure
campaignProductNumber entfernt
Die Feldrolle campaignProductNumber
wurde entfernt. Wenn gepushte Produkte mittels des Suchdialoges definiert werden, werden die productNumber
Werte der Produkte abgespeichert. Im Fall der manuell eingegebenen Produktnummern muss der Nutzer das Feld angeben, aus dem sie stammen. In der XML-Datei wird diese Information im field
-Attribut des entsprechenden pushedProduct
-Tag abgespeichert.
Einige Konfigurationssettings umbenannt
Es wurden einige Konfigurationssettings umbenannt:
- In der Suggestkonfiguration und in der Suchkonfiguration heißen alle minSimi Elemente nun minScore
- In der Suchkonfiguration wurde das Attribut simiThreshold im singleWordSearch - Element anpasst und lautet nun scoreThreshold.
Die Umbenennungen sollen dem Umstand Rechnung tragen, dass sich in NG die Bedeutung des Ähnlichkeit-Wertes verändert hat.
Der Migrator nimmt die Änderungen automatisch vor.
Operating
DeploymentAction in REST-API übertragen
Die Deployment-Api wurde zur REST-Api hinzugefügt und aus der alten Api entfernt. Mehr Informationen wie mögliche Parameter sind auf der Swagger-UI vorzufinden https://ng-demo.fact-finder.de/fact-finder/swagger-ui.html.
Backup Manager
Backups nun im Parent-Channel
Werden Änderungen in einem Parent- oder Child-Channel gespeichert so wird immer ein Backup von allen Channeln der entsprechenden Vererbungsstruktur gemacht. Beim Wiederherstellen des Backups werden alle beteiligten Channeln wieder zurückgesetzt. Aus diesem Grund ist das Wiederherstellen von Backups in Child-Channeln nicht mehr möglich. Das entsprechende Backup muss stattdessen im Parent-Channel wiederhergestellt werden.
Sonstiges
DatabasesService umgestellt
Die Anzeige der importierten Datenbanken wurde entsprechend den NG-Gegebenheiten angepasst. Hierdurch gibt es nun zwei Datenbanken, die ggf. nicht importiert sind - die Worldmatch-Datenbank und die Zwischendatenbank.
Anpassung an Kampagnen-Operatoren
Das Verhalten der Kampagnen-Operatoren "ist gleich" / "ist nicht gleich" hat sich leicht verändert. Beispielsweise werden Sonderzeichen wie "_()!:" nicht mehr ignoriert und Umlaute nicht automatisch normalisiert. Stattdessen wird die konfigurierte Phonetik der Suche zur Normalisierung verwendet.
Fehlerweiterleitung von Channelservice verbessert
Wenn der Channel Wizard fehlschlägt, so wird dieser Fehler nun auch in der UI korrekt dargestellt.
Deployment Modul: Nur noch Übertragung ganzer Vererbungs-Hierarchien erlaubt
Das Verhalten des Deployment-Moduls wurde im Zuge von Multi-Channel angepasst. Das Deployen von Ressourcen eines Channels, welcher zu einer Vererbungshierarchie gehört, zieht nun das automatische Deployen der gleichen Resourcentypen für alle anderen Channel der Hierarchie nach sich. Dies ist notwendig, da ein vererbter Channel nur im Zusammenspiel mit seinem Parent-Channel valide ist. Kampagnen sind von diesem Verhalten ausgeschlossen, da sie nicht an der Vererbung teilnehmen. Tritt während des Deployment eines der Channel ein Fehler auf, dann werden alle Aktionen zurückgesetzt und die alten Dateien für alle Channel der zu deployenden Hierarchie eingespielt, um einen konsistenten Endzustand zu gewährleisten.
Temp-Conf Handling abschaffen
- CampaignConfigurationSaved Event hat versehentlich die falsche Basis-Klasse erweitert: ConfigurationSave. Nun wird die korrekte Klasse erweitert: ConfigurationSaved.
- Reihenfolge der
ConfigurationSave
,ConfigurationSaved
undConfigurationFlush
Events geändert. Vorher: ConfigurationSave
ConfigurationSaved
ConfigurationFlush
Jetzt:ConfigurationSave
ConfigurationFlush
ConfigurationSaved
Begründung:ConfigurationFlush
sorgt dafür, dass die Caches der Configuration-Reader freigegeben werden, und dass der nächste Aufruf vonConfigurationReader.getConfiguration()
die neue Version liefert. WennConfigurationSaved
vorConfigurationFlush
ausgelöst wird, und Event-Listener vonConfigurationSaved
ConfigurationReader.getConfiguration()
aufrufen, würden sie die alte Version der Konfiguration sehen.- (migration-required) FACT-Finder erstellte beim Bearbeiten von Konfigurationen Kopien der Konfigurations-Dateien. Darin wurden die Änderungen zwischengespeichert. Diese Dateien waren auch als "Temp-Konfigurationen" bekannt. Diese sind vollständig entfernt worden. Der Bearbeitungszustand wird nun ausschließlich im Arbeitsspeicher gehalten. Gelöschte fff.properties Einstellungen:
- recommendationConfig.tmp
- rankingConfig.tmp
- dqServicesConfig.tmp
- campaignsFile.tmp
- xmlConfig.tmp
- xmlConfig.suggest.tmp
Tooltips für die neuen Channel-Icons hinzugefügt
Einige Icons auf der neuen Channel-Bearbeiten-Seite sowie der BackupManager-Seite haben nun Tooltips.
StatusMessage severity nicht mehr an Container gebunden
Einzelne Messages sind jetzt selbst mit einer "Severity" ausgestattet (analog Log4j), statt Separat in containern nach Error/Warning transportiert zu werden.
OneFacetPerFieldValidator aktiviert
Es kann nur noch eine Facette pro Feld konfiguriert werden.
DuplicateFilterField durch masterId ersetzt
Die Einstellung duplicateFilterField
wurde entfernt. Stattdessen gibt es nun die Feldrolle masterId
die angibt in welchem Feld die Produkt Nummer des Master Artikels steht. Bei der Migration erhält das als duplicateFilterField
eingestellte Feld diese neue Feldrolle.
FACT-Finder an neue minSimi-Bedeutung angepasst
Die Abwertung per Ranking Regeln führt nicht mehr zu einem Ausschluss eines Produktes aus dem Suchergebnis. Stattdessen gibt es für TextCompare
und TimeRank
Regeln nun eine extra Einstellung um Produkte aus dem Suchergebnis zu entfernen. Bei TimeRank
Regeln werden dabei nur Produkte entfernt die älter als alle eingestellten TimeRanks sind.
Swagger Model-Dokumentation hinzugefügt
7.3, NG: Die Dokumentation der REST-Schnittstelle beinhaltet nun auch Informationen dazu, ob ein Parameter required
ist. Solche Parameter müssen bei einer Anfrage übergeben werden. Falls dieser Marker an einem Parameter einer Rückgabe steht bedeutet dies, dass dieser Parameter nicht null
sein kann. NG: Die REST-Schnittstelle hat nun bessere Dokumentationstexte erhalten.
Verhalten von VirtualFields geändert
Die Rückgabe der Ergebnisse wurde geändert. Attribute aus Multiattributsfeldern werden jetzt wie jedes andere Feld dargestellt und nicht mehr unter dem ursprünglichen Multiattributsfeld untergeordnet.
Ausnahmen für Multiattributsfelder und somit die entsprechenden Virtuellen und Attributsfelder wurden soweit möglich entfernt. Weiterhin erforderlich sind diese für die Konfiguration und den Import.
Zugriff auf Parentchannelsuche blockiert
Da Parentchannel nicht als Produktivchannel benutzt werden sollen, ist die Suche für solche Channel nun blockiert. Über die Webservices, XML-, JSON- und REST - Schnittstellen erhält man eine 400 (Bad Request) Rückgabe. Die Suche im Demoshop der Ui ist nicht möglich. Damit man die Konfiguration dennoch in der Diagnosesuche bearbeiten kann, ist ein Suchen für Parentchannel hier erlaubt.
Neuer GTIN Datentyp für Suchfelder integriert
Es gibt einen neuen GTIN Datentyp in der Feldkonfiguration, der in der Feldübersicht oder direkt in der config mit <type>GTIN</type>
eingestellt werden kann.
Mülleimer umbenannt und Funktionalität beschnitten
Der xml-tag afterSearchReordering
in der Suchkonfiguration wurde in trashCan
umbenannt. Das malus
-Attribut der eigentlichen Einträge wurde entfernt.
trackingProductNumber, displayProductNumber, campaignProductNumber und record/productId vereinheitlicht
Die Feldrollen displayProductNumber
und trackingProductNumber
wurden entfernt. Stattdessen gibt es jetzt die productNumber
Feldrolle, die beide Bedeutungen beinhaltet. Bei der Migration wird das Feld mit der trackingProductNumber
die neue Feldrolle erhalten.
Security: Salted Hashes speichern
Mit der Einführung von OAuth2 und Basic Authentication sind die Authentifizierung Einstellungen überflüssig geworden und wurden deswegen entfernt. Passwörter werden nun in einem BCrypt Hash gespeichert, die Stärke von diesem Hash ist in der fff.properties
über die Property password.strength
einstellbar.
Wartezeit eingebaut, falls der DQ-Server bei der Attributisierung nicht erreichbar ist
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 diesem, 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.
Der DQ-Attributisierungsprozess wurde angepasst. Bisher wurde direkt mit dem nächsten Workflow oder Record fortgefahren, wenn das Holen der Attribute vom DQ-Server fehlschlug, weil der Server offline war. Nun gibt es maximal 20 weitere Versuche den Server zu erreichen und die Attribute zu einer Anfrage abzuholen. Zwischen den Versuchen wird jeweils 5 Sekunden gewartet. Falls der DQ-Server auch nach dem 20ten Versuch nicht antwortet, gilt er als offline.
Im Falle des Cache-Updates wird der Prozess dann abgebrochen. Falls der Server angefragt wurde, weil gerade ein Import stattfindet, zu einem Produkt keine Attribute im Cache vorliegen und die Option aktiv ist, dass in diesem Fall der DQ-Server angefragt werden soll, so wird der DQ-Server für den restlichen laufenden Import nicht mehr angefragt.
Falls die Anfrage an den DQ-Server aufgrund eines Fehlers fehlschlägt und nicht weil der Server offline ist, wird die Retry-Funktion nicht aktiv.
Die Einstellung lässt sich in der fff.properties
über den Key dqServicesConf.updateAttributesOnCacheMiss
und mit den Werten true
für aktiv bzw. false
für inaktiv setzen. Standard ist false
.
Verlinkung zum Doku-Portal im FF Backend eingerichtet
Auf allen Einstellungsseiten gibt es nun einen Link zu der entsprechenden Seite im FF-Dokumentations-Portal. Neben dem Textlink führt ein großes Info-Icon neben der Channelauswahl ebenso ins Dokumentations-Portal.
Diagnostik-Suche: Schnellwahl der dargestellten Facetten implementiert
In der Filter- und Navigationsleiste der Suchdiagnose wurde eine Möglichkeit hinzugefügt schnell zwischen oft genutzen Filtersets zu wechseln. Man kann sich die Filter die für Suche bzw. Navigation konfiguriert sind anzeigen lassen, sämtliche möglichen oder keine Filter anzeigen lassen.
Parsing des Datumsfelds verbessert
Das in einem Export zulässige Datumsformat wurde angepasst, um ein sicheres Erkennen der Daten sicherzustellen. In Export-Dateien sind nun folgende zwei Datumsvarianten erlaubt: - als long: z.B. 183543957000 entspricht dem 26.10.1975 9:25:57 CET - im ISO-8601 mit Zeitzone - Format: z.B. 1980-02-01T18:21:02+00:00 entspricht dem 1.2.1980 18:21:02 UTC Bisher wurden invalide Datums-Werte ignoriert und der Record trotzdem importiert. Dies wurde geändert und der entsprechende Record wird nun als fehlerhaft übersprungen. Damit verhält sich der Datumsparser analog zu den Parsern anderer Feldwerte, beispielsweise Gtin.
InstoreAds: Schnittstelle zum Reportabruf
Bisher wurden im 5-Minuten Takt gesammelte InstoreAd-Events an konfigurierte Stellen abgeschickt. Jetzt gibt es zusätzlich die Möglichkeit die InstoreAds-Events für jeweils einen Tag in einer Datei zusammenzufassen und über REST-API für Kairion verfügbar zu machen. In den InstoreAdsSupplier-Einstellungen in der search.xml sind die Eigenschaften storeReports und reportFolder hinzugekommen.
<instoreAds> <suppliers> <supplier> <name>InstoreAudience</name> <shopId>OmikronDemo</shopId> <campaignUrl>UrlToCsvWithSponseredProducts</campaignUrl> <reportingUrl>reportingUrl</reportingUrl> <fileName>fileNameToSaveTheFileOnDisc</fileName> <storeReports>true</storeReports> <reportFolder>{APP_RESOURCES}/instoreAds/{CHANNEL}</reportFolder> </supplier> </suppliers> <maxPushedProducts>3</maxPushedProducts> <prioritized>true</prioritized> </instoreAds> |
- {storeReports}
ist ein Flag (standardmäßig false), dass steuert ob report-Dateien angelegt werden sollen. Wenn aktiv findet kein Melden von instoreAds Events an die reportingUrl mehr statt. - {reportFolder}
gibt die Möglichkeit einen alternativen Ort zum Speichern der report-Dateien einzustellen. Der Standard-Wert ist \{APP_RESOURCES\}/instoreAds/\{CHANNEL\}. Beim Überschreiben des Wertes ist darauf zu achten \{CHANNEL\} im Pfad zu haben um nicht Reports verschiedener Channel zu vermischen. - Um den Report über alle InstoreEvents für einen Channel an einem Tag 20.3.2018 zu kriegen kann man über die Rest-API
factfinder/rest/v2/instoreAdsReport/channel?date=2018-03-20 |
- aufrufen und erhält einen Report im json-Format.
- date ist im Format yyyy-mm-dd anzugeben.
- Der json-Report ist wie folgt aufgebaut:
{"counters": [ {"campaignId":"Kairion_ia-mythos","views":11,"clicks":4,"carts":2,"checkouts":1,"boughtCount":1,"turnover":39.95}, {"campaignId":"Kairion_ia-salomon-shoes2","views":31,"clicks":12,"carts":5,"checkouts":2,"boughtCount":2,"turnover":119.90} .... ] } |
- In 7.3 und früher muss auf die URL fact-finder/InstoreAdsReport.ff?channel=channel&date=2018-03-20 zugegriffen werden. Der json-Report ist identisch.
URL-Umstellung auf https für RSS & Advertisement-Banner
Es wurde ein Fehler behoben, der verhinderte, dass das Werbebanner auf der Loginseite und der RSS-Feed auf der Modulübersichtsseite angezeigt werden konnten. Die Default-URLs für diese Ressourcen verwenden nun das https-Protokoll anstelle von http.
Getroffene Ranking Regeln nun sortiert
Der Tooltip, der in der Diagnosesuche die getroffenen Regeln anzeigt ist nun scrollbar. Die Regeln werden nun auch absteigend nach Aufwertung sortiert.
Feldtyp Integer
Es gibt einen neuen Feldtyp INTEGER der für reine Ganzzahlen verwendet werden kann. Der vorherige Typ Number wurde in FLOAT umbenannt.
fieldContentDelimiter entfernt
Die fieldContentDelimiter-Einstellung wurde entfernt. Sie befand sich früher an Feldkonfigurationen. Die groupDelimiter -Einstellung von Feldern heißt nun valueDelimiter, um ihre Funktion als Trenner für einzelne Werte in einem Multi-Wert-Feld besser auszudrücken.
Deduplizierung nach der Suche
Die Suggestion die während des Imports genutzt wird ist nun keine einzelne Suggestion mehr, sondern eine Liste aus Suggestion.Varianten. In der Suggest-Rückgabe wird jeweils immer die Variante mit der höchsten Relevanz zurückgegeben. Da Varianten oft gleiche Namen haben, wurde die Deduplizierung während des Imports für alle Suggestions mit mehr als einer Variante und für den type productName deaktiviert. Um dem entgegenzusteuern wurde Deduplizierung zur SuggestSearchLogic hinzugefügt. Die Deduplizierung kann an den conf-Element an den SearchWithListResponse und SearchWithBlockResponse konfiguriert werden:
<deduplicateMode>ALL</deduplicateMode> |
Mögliche Werte sind:
- ALL: entferne Suggestions mit gleichem Namen
- TYPE: entferne Suggestions mit gleichem Namen und Typ
- NONE: entferne keine Suggestions
Durch die Deduplizierung können Suggestions gelöscht werden, dadurch kann es vorkommen, dass maxReturnCount nicht mehr eingehalten wird. Für dieses Problem wurde eine neue Einstellung names maxReturnCountBuffer für SuggestTypen hinzugefügt. Die Einstellung gibt die Anzahl an Suggestions an, die zusätzlich zur maxReturnCount angefragt werden sollen.
Bugfixes
Search Behaviour
Aktivierungsverhalten der Single-Word-Search angepasst
Die Einzelwortsuche wird jetzt korrekt je nach Wert des active
-Flag in der Such-Konfiguration angewendet.
Erneute Substringfilterung mit selbem Begriff nach neuer Suche funktioniert nicht
Ein Substring-Filter, der bei einer alten Suche in der Diagnose-Suche verwendet wurde, funktioniert nun auch in einer neuen Suche.
After Search Navigation (ASN)
Start der Anwendung bei invalider Konfiguration von Cluster-Facetten wird nun verhindert
Cluster-Facetten mit Auswahltyp multiSelectOr
verhindern nun den erfolgreichen Start des FACT-Finders, da so eine Konfiguration invalide ist.
Slider-Facetten überschreiben nun den Auswahl-Typ der jeweiligen Facette
Eine numerische Attributs-Facette, die als Slider konfiguriert ist, überschreibt nun korrekterweise den Auswahl-Typ der Multi-Attributs Facette.
Slider-Verhalten angepasst
Beim Wechseln auf den Rangetyp Slider wird der Auswahltyp nun auf den Standard-Wert zurückgesetzt.
Suggest
Fehler beim Suggest-Import von chinesischen und indischen Suchdatenbanken behoben
Bei bestimmten Locals konnte der Suggest-Import keine Daten aus der Suchdatenbank lesen, dies wurde behoben.
Darstellungsfehler von Suggest-Postprozessoren und Sourceprovider behoben
Diverse Einstellungen des Suggest-Imports werden in Kindchanneln nun immer mit dem korrekten Vererbungsstatus angezeigt.
Konfigurierte Suggest-Rückgabefelder verschwinden beim Wechsel zwischen den Channels nicht mehr
Fehler die Felder auf der SuggestImport-Seite verschwinden ließen wurden behoben.
Fehler beim Setzen der maximalen Trefferanzahl je Vorschlagstyp behoben
Die maximale Trefferanzahl je Vorschlagstyp im Suggest kann auf 0 gesetzt werden.
Import
Fehlgeschlagener Download bricht Importvorgang nicht mehr mit irreführender Meldung ab
Fehlgeschlagene Downloads von sekundären Importdateien über die UI führen nicht mehr zum Abbruch des Importvorgangs.
Fehler behoben, der zum Nutzen der falschen Multichannel-Konfiguration gesorgt hat
Ein Fehler im Konfigurations-Management von Parent- und Child-Channels hat dazu geführt, dass die Parent-Konfiguration anstelle der des Childs verwendet wurde.
Seltsame Fehlermeldungen beim Datenimport entfernt
Nutzer die nur eine eingeschränkte Anzahl an Channels sehen, kriegen beim Import nun keine Fehlermeldungen über fehlende Channelberechtigungen mehr.
Nicht informativer Exception-Auswurf bei der Bildermittlung für Suggest-Whitelisteintrag ersetzt
7.2, 7.3: Bei einem falsch konfigurierten Suggest Whitelist Kategorie-Eintrag wird nun eine aussagekräftigere Fehlermeldung ins Log geschrieben.
NG: Suggest Whitelist Kategorie-Einträge werden nun validiert.
Fehler beim Importverhalten von Varianten behoben
Es wird validiert, dass Felder mit productNumber role als variierend markiert sind (falls Varianten existieren).
Update/Delete/Insert Timeout nun konfigurierbar
Der Timeout für Update-Operationen kann nun in der Suchkonfig über den XML-Tag import/updateTimeout
eingestellt werden. Der Timeout wird in Sekunden angeben und muss mindestens 1 Sekunde betragen.
ArrayIndexOutOfBoundException-Fehlermeldung beim Recommendations-Import angepasst
Die Fehlermeldung wenn beim Laden oder Speichern der Recommendation Datenbank etwas schief geht wurde verbessert.
FF sendet beim Import keine unnötige Anfragen an DQ-Server mehr
Wenn das Aktualisieren von fehlenden DQ-Attributen deaktiviert ist, wird der DQ-Server überhaupt nicht mehr angefragt.
Analysis
KPIs BounceRate und ExitRate können deaktiviert werden
Die beiden KPIs BounceRate
und ExitRate
können nun in der Konfiguration deaktiviert werden, um Analysen zu beschleunigen. In diesem Fall führt eine Abfrage dieser KPIs immer zu einem Ergebnis von 0.
Es wurden zwei sehr zeitaufwändige KPIs identifiziert, die die Analysedauer stark beeinflussen. Es handelt sich dabei um die BounceRate
und die ExitRate
. Diese können nun über den Parameter ffa.job.analyzeBounceAndExitRate=false
in den application.properties
deaktiviert werden. Standardmäßig sind die beiden KPIs für Analysen aktiviert.
Besserer Umgang mit Schriftart beim Whatshot-Report
Die Default-Schriftart für What's Hot Reports wird auf case-sensitive Filesystemen wieder gefunden.
Behoben: Werte in What's Hot Grafiken fehlen
Die Zuweisung der Größe für die Diagramme zur Click Through Rate in den What's Hot Reports wurde angepasst, sodass die Diagramme nun sichtbar sind.
Berechnung der Conversion Rate korrigiert
Analytics hat in einigen Fällen Werte vergessen, wodurch die Conversion Rate falsch berechnet wurde. Dieser Umstand wurde behoben.
Anzahl initialer Suchen in Logfile-Analyse nun korrekt
Ein Fehler bei der Übergabe des gefilterten Analysezeitraums hat dazu geführt, dass jeweils der letzte Tag des gewählten Zeitraums ignoriert wurde. Besonders deutlich wurde dies bei der Filterung nach einem einzigen Tag, bei dem es dann keine Werte gab. Nun wird auch der letzte Tag mit einbezogen.
What's Hot Report weist keine unvollständigen Feedback-Trackingdaten auf
Feedback-Events werden jetzt wieder vollständig im What's Hot Report dargestellt.
What's Hot REST API kann jetzt den WH-Job auslösen
Über die REST-Api kann nun der WhatsHot Job angestoßen werden.
Analytics fabriziert wieder ProductEventData-Files im Rahmen der What's Analyse
Ein Fehler beim Erstellen der What's Hot Reports führt nicht mehr dazu, dass keine ProductEventData generiert werden. Außerdem werden bei der Ausführung des WhatsHotQuartzJob nun zunächst die ProductEventData erstellt und erst danach die What's Hot Reports.
Nachkommastelle in CSV-Export der Logfileanalyse unterscheidet sich nicht mehr von UI
Der Export der Suchbegriffstabelle von Analytics weist die CTR nun genauso wie die Tabelle mit zwei Nachkommastellen aus.
ProductEventData-Abfrage angepasst
Analytics liefert nun wieder eine korrekte HttpResponse mit Fehlercode 404 zurück, wenn ein angefragter Job nicht existiert. Dadurch kann FACT-Finder dann anschließend einen neuen Job erstellen.
BouncyCastle dependency für PDF-Reporterzeugung wieder implementiert
Die BouncyCastle dependency wurde wieder hereingenommen, da sie für den PDF Export zwingend erforderlich ist. Es ist nötig bei bestehenden Setups veraltete BouncyCastle Versionen aus dem Tomcat/lib Verzeichnis zu löschen oder zu aktualisieren.
Analytics-Proxy Requests auf nicht Analytics-Seiten behoben
Es wurde ein Fehler behoben, welcher jede Sekunde Tabellen neu laden ließ.
Cluster-Eigenschaft geht in CategoryPath-Facetten nicht mehr durch Namensänderung verloren
Das cluster-Attribut von KategoriePfad-Facetten bleibt nun erhalten, wenn der Name der Facette geändert wird.
Übernahme eines Thesaurus-Eintrags vom Child- in den Parent-Channel nun korrekt möglich
Das Info-Icon für Einträge, die nur in einem Kindchannel existieren, suggeriert nicht mehr das der Eintrag über einen Klick in den Eltern-Channel übernommen wird, da diese Funktion nicht existiert.
Thesaurus Einträge lassen sich über die Suchdiagnose nun korrekt bearbeiten
Thesaurus Einträge lassen sich nun auch wieder über die Suchdiagnose bearbeiten.
Speichern der Facettenkonfiguration angepasst
- Das Speichern der Konfigurationen wurde umgestellt, sodass es nicht mehr zu einem inkonsistenten Zustand zwischen Parent und Child Channeln während des Speicherns kommen kann.
- CampaignConfigurationSaved Event hat versehentlich die falsche Basis-Klasse erweitert: ConfigurationSave. Nun wird die korrekte Klasse erweitert: ConfigurationSaved.
- Reihenfolge der
ConfigurationSave
,ConfigurationSaved
undConfigurationFlush
Events geändert.
Vorher: ConfigurationSave
- ConfigurationSaved
- ConfigurationFlush
Jetzt:
- ConfigurationSave
- ConfigurationFlush
- ConfigurationSaved
Begründung:ConfigurationFlush
sorgt dafür, dass die Caches der Configuration-Reader freigegeben werden, und dass der nächste Aufruf vonConfigurationReader.getConfiguration()
die neue Version liefert. WennConfigurationSaved
vorConfigurationFlush
ausgelöst wird, und Event-Listener vonConfigurationSaved
ConfigurationReader.getConfiguration()
aufrufen, würden sie die alte Version der Konfiguration sehen. - (migration-required) FACT-Finder erstellte beim Bearbeiten von Konfigurationen Kopien der Konfigurations-Dateien. Darin wurden die Änderungen zwischengespeichert. Diese Dateien waren auch als "Temp-Konfigurationen" bekannt. Diese sind vollständig entfernt worden. Der Bearbeitungszustand wird nun ausschließlich im Arbeitsspeicher gehalten. Gelöschte fff.properties Einstellungen:
- recommendationConfig.tmp
- rankingConfig.tmp
- dqServicesConfig.tmp
- campaignsFile.tmp
- xmlConfig.tmp
- xmlConfig.suggest.tmp
Feldübersicht ohne ConfiguratorModul nicht mehr nutzbar
Die Feldübersichtsseite bleibt nun deaktiviert wenn der Nutzer keine Berechtigungen hat Feldeinstellungen zu ändern, die Seite aber betreten darf. Dies trifft beispielsweise auf ImportManager zu.
Tracking
Tracking-Validierung berücksichtigt nun pos-Parameter
Die Tracking-Validierung berücksichtigt nun auch den pos
-Parameter.
Campaign Manager
Behoben: ActiveTimes der Kampagnen nach Editieren deaktiviert
Vorhandene ActiveTimes im Kampagnen Editor werden jetzt nach dem Editieren wieder aktiviert.
Fehler bei Kategoriepfad-Filterverarbeitung in Beraterkampagnen-Produktsets behoben
Über Suchparameter gepushte Produkte haben zu 0-Treffer Seiten geführt, wenn diese Suchparameter einen Filter auf ein KategoriePfad-Feld enthielten. Dies wurde behoben.
Anzeige von langen Kampagnennamen geändert
Die Anzeige von langen Namen von Kampagnen und manuellen Empfehlungen wurde behoben.
Substringfilter in Produktliste wird nun korrekt angewendet
Substring Filter werden nun auch in der UI korrekt angewendet.
Kriterium Parameter: simiFirstRecord eingebaut
Der Kampagnen Parameter result:simiFirstRecord
heißt nun result:scoreFirstHit
Mehrfach-Deaktivierung von Kampagnen wird nun dauerhaft gespeichert
Das Deaktivieren von Kampagnen über die Mehrfachauswahl funktioniert jetzt auch für Childchannel.
Neue Einstellung zur Suchergebnisdefinition in Beraterkampagnen
Es wurde eine neue Einstellung hinzugefügt, welche es erlaubt zu entscheiden, ob das Suchergebnis den gesamten Fragen-Antwort-Baum von Beraterkampagnen enthalten soll, falls eine Beraterkampagne aktiv ist. Die Einstellung befindet sich in den fff.properties
und heißt generateAdvisorTree
. Der Defaultwert ist true
und damit analog zum bisherigen Verhalten.
Bug behoben, der zu Endlosschleife in der Suchoberfläche geführt hat
Ein Filter direkt auf einem Multi-Attributsfeld konnte in manchen Fällen zu einer Endlosschleife in der Suchoberfläche führen. Dies wurde behoben.
Fehler beseitigt, der dazu führte, dass InstoreAds werden nicht gespeichert wurden
Es konnte passieren, dass InstoreAds Änderungen nicht gespeichert wurden, wenn ein Fehler während einer Transaktion auftrat. Dies wurde behoben.
Anwendungsstart wird nicht mehr durch NoSuchMethodException im Kampagnen-Handling verhindert
7.3: Validierung für doppelte FeedbackTextSettings-Labels wurde entfernt.
NG: Migration für doppelte FeedbackTextSettings-Labels wurde hinzugefügt.
Fehlermeldung für ungültige Kampagnenkonfiguration angepasst
Die Fehlermeldung wenn eine ungültige Kombination von Kampagnentyp, Kriterien und PushedProducts-Modus eingestellt wird, wurde verbessert.
Bug, der das Löschen von Kampagnen verhinderte, behoben
Kampagnen ohne definiertes Anfangsdatum können nun auch über die Oberfläche gelöscht werden.
Namenskonflikte bei Custom-Parametern verhindert
Ein custom parameter innerhalb eines Kriteriums wird nun in der Form custom:<parameter>
abgespeichert um Namenskonflikte mit anderen Parametertypen zu verhindern.
7.2 und 7.3 Aus Kompatibilitätsgründen werden custom parameter ohne den custom
-prefix immer noch akzeptiert.
AdvisorStatus-Fehlermeldungen angepasst
Die Fehlermeldungen bei falscher Benutzung des AdvisorStatus wurden verbessert.
Kampagnentrigger-Felder müssen kein Teil des Suchergebnisses mehr sein
Kampagnen, welche auf der Detail- oder Warenkorbseite angezeigt werden sollen und "Feld" als Kriterium ausgewählt haben, werden nun korrekt angezeigt auch wenn das Kriteriumsfeld kein Suchergebnisfeld ist. Vorher konnten solche Felder Kampagnen nicht auslösen.
Personalization
Verbessertes Verhalten bei invaliden Kampagnen
Kampagnen und die dazugehörigen Einstellungen für Feedback Texte werden jetzt beim Start von FACT-Finder korrekt validiert.
Recommendation Engine
Recommender-Verhalten nun abhängig von anfragendem Service
Es wurden einige Änderungen in Bezug auf den Recommender vorgenommen. Wenn der Recommender bei einer Anfrage nicht verfügbar ist, unterscheiden sich die Reaktionen je nach anfragendem Service:
- Bei einer Suchanfrage wird dem Suchergebnis ein leeres Empfehlungsergebnis hinzugefügt, um zu verhindern, dass Suchen sich verzögern oder Fehler werfen.
- Werden direkt Empfehlungen zu einem Produkt oder Produkten angefragt, beispielsweise über den RecommenderWebservice, wird eine
RecommenderNotReadyException
geworfen, damit ersichtlich ist, dass der Recommender im Moment nicht antworten kann. - Sollten Kampagnen angefragt werden und der Recommender ist nicht verfügbar, gibt der Recommender ein leeres Ergebnis zurück, damit andere definierte Produktsets ausgespielt werden können. Es wird maximal alle 10 Minuten eine Logausgabe erzeugt.
Reco-Tool auf Produktdetailsseite aktualisiert sich nun sofort
Das Reco-Tool auf der Produktdetail-Seite aktualisiert sich nun sofort mit jeder Änderung und nicht erst nach dem Speichern einer Transaktion.
matchOn-Feld entfernt
Das Recommender-setting matchOn
zur Produkt-Identifikation wurde entfernt. Diese Aufgabe wird ab jetzt ausschließlich durch das Feld mit der Rolle trackingProductNumber
abgedeckt. Bei der Migration auf FF 6.11 wird versucht das trackingProductNumber
field entsprechend zu setzen. Ab NG gibt es auch die trackingProductNumber
nicht mehr. Stattdessen wird hier die Rolle productNumber
verwendet.
Produktabruf funktioniert nun auch bei nicht übereinstimmenden TrackingProductNumber- und Id-Feld
7.3: Es wurde ein Fehler behoben, der das korrekte Holen der Produkte für die Recommendation Engine verhinderte, wenn das TrackingProductNumber-Feld nicht mit dem Id-Feld für den Datensatz übereinstimmte.
Fehler, der Recommendation Engine-Einstellungen zurücksetzt, wurde behoben
Ein Fehler, durch den Änderungen verschiedener Einstellungen auf der Recommendation Engine - Seite die Recommendation Engine Matrix zurücksetzten, wurde behoben.
Performance der Recommendation Engine verbessert
Die Performance der Recommendation Engine wurde verbessert.
Start der Anwendung wird bei fehlerhafter Konfiguration nun verhindert
Wenn das Lesen der Recommender-Konfiguration fehlschlägt, bspw. aufgrund von xml-fehlern, so wird FF nun korrekterweise nicht starten.
Upselling Pushed Products bei deaktivierter Recommendation Engine nicht mehr anwählbar
Die Option der Upselling Pushed Products steht für Kampagnen nicht mehr zur Verfügung, wenn die Recommendation Engine deaktiviert ist, da diese darauf basieren.
Paralleler Ladevorgang der Recommendations-DB beim App-Start verhindert
Die Recommendation-DB wird nicht mehr von mehreren Threads gleichzeitig geladen.
Installation Assistant / Migrator
Installer speichert unbekannte Produktdateien nun als CSV
Wird per Installationswizard eine Produktdatei von einer URL geladen, die keine ersichtliche Endung enthält, speichert der Wizard die Datei als CSV-Datei ab.
Löschen und neu Erstellen eines Channels speichert die alte Konfiguration nicht mehr
Der Cache wird nun nach dem Löschen geleert, so dass ein Erstellen eines gleichnamigen Channels keine alten Konfigurationen mehr erhält.
Kampagnen des Quell-Channels in Children bei Parent-Channel-Einrichtung werden nun übernommen
Der Prozess des Klonens eines Channels wurde angepasst: Die geklonten Kampagnen behalten ihren Releasestatus nun bei. Früher wurden sie deaktiviert. Dies soll den Bearbeitungsaufwand für einen geklonten Channel verringern. Weiterhin werden keine Instore-Ads-Kampagnen mehr mitgeklont. Wird ein Channel als Parent geklont, erhalten der Parent selbst sowie alle Kinder, welche zusammen mit dem Parent erstellt werden, die Kampagnen des Ausgangschannels.
Auf der Kampagnenübersichtsseite gibt es nun zwei neue Buttons, welche es erlauben alle selektierten Kampagnen zu releasen oder zu deaktivieren. Außerdem wurde dem "Kampagne-Klonen"- Button auf der Kampagnenübersichtsseite eine Option hinzugefügt, mit deren Hilfe festgelegt werden kann, ob die geklonte Kampagne ihren Releasestatus beibehalten oder deaktiviert werden soll.
Channel-Wizard erstellt nun keine invalide Suggest-Konfigurationen mehr
Der Channel-Wizard konnte invalide Suggest-Konfigurationen erzeugen, wenn PostProcessoren oder Provider im erzeugten Child überschrieben oder gelöscht waren. Dieses Problem wurde behoben.
Migrator kann nun auch mit Bean-Namen in Suggest-Konfiguration umgehen
Die in der Suggest Konfiguration referenzierten Klassen werden nun auch dann korrekt interpretiert, wenn der Klassenname als Beanname angegeben ist.
Überprüfung von Felder-Facetten-Paaren auf steps und number implementiert
In der Migration nach 7.1 wurden zwei Fehler behoben: Der Migrator wird die minResultCoverage
einer Facette auf 100 (%) begrenzen, falls der Wert 100 übersteigen sollte.
Der Migrator wird weiterhin sicherstellen, dass Felder vom Typ "number" nur Facetten mit "steps" zugeordnet sind. Falls eine Facette mit "steps" einem nicht-nummerischen Feld zugeordnet ist, wird der Feldtyp auf "number" geändert. Fehlende virtuelle Felder für Facetten mit "steps" werden der Konfiguration mit dem Typ "number" hinzugefügt. Falls eine Facette mit "steps" auf ein normales, nicht existentes Feld verweist, wird eine Fehlermeldung ausgegeben, damit dieses Problem vom Nutzer behoben werden kann.
Datenimport-Oberfläche sollte nun nicht mehr grundlos deaktiviert werden
Ein Fehler wurde behoben durch den das Panel zur Einstellung automatischer Datenimports im Einrichtungsassistenten deaktiviert wurde.
Channelwizard schlägt bei unterschiedlichen Quellen nicht mehr fehl
Ein Fehler wurde behoben durch den der Channel Wizard fehlschlagen konnte und in der UI dennoch ein Erfolg vermeldet wurde.
UI: Management Interface
Alignment Issue im PreprocessorTool behoben
Der Lösch-Button ist nun neben dem Textfeld für die Source Words.
RankingRules: Darstellung von Oder-Kriterien wurde angepasst
Verschiedene Criteria von einer TextCompare-Rankingregel werden in der Rankingregel-Beschreibung mittels "oder" verknüpft.
Deployment-Fehlermeldungen nun wieder lesbar
Fehlermeldungen auf der Deploymentseite werden nun wieder lesbar angezeigt. Die Deploymentseite erlaubt das Deployen der Ressourcen eines Moduls nun nur noch, wenn das Modul auch aktiviert ist.
Korrektes Zurücksetzen der Konfigurationsänderungen bei Recommendation-Validierungsfehlern
Validierungsfehler auf der Recommendations-Seite setzen die Konfigurationsänderungen korrekt zurück.
DifferenceTooltip zeigt nun aktuellen Wert an gelöschten Matrix Setting
Die Tooltips in der Recommendation-Matrix, die über Unterschiede in der Konfiguration von Parent- und Child-Channels informieren sollen, aktualisieren sich nun ordnungsgemäß mit Änderungen in der Matrix.
Analytics zeigt "es ist ein parent"-Meldung für Nicht-Parent-Channel nicht mehr an
Eine fehlerhafte Fehlermeldung im Analytics-Ergebnis, die behauptet, dass der untersuchte Channel ein Parent-Channel sei, wurde entfernt.
Einstellung für parallele und aufeinanderfolgende Anfragen implementiert
Die Diagnose-Such-Seite führt eine Vielzahl von Service-Anfragen an FF durch. Diese Anfragen werden normalerweise parallel ausgeführt, um die Ladezeit der Seite zu reduzieren. Wenn eine Transaktion offen ist, kann es passieren, dass manche der Service-Anfragen in einen Timeout laufen, weil eine langsame Anfrage das Lock auf die Transaktion noch hält. Es gibt nun ein neues Setting in der fff-ui.properties
Datei, mit dem man die UI anweisen kann diese Anfragen seriell anstatt parallel abzuschicken. server.servicecall.diagnostic.mode
kann demnach die Werte PARALELL
(default) und SERIAL
annehmen.
Parent-Channel zeigt keine Parent-Channel-Fehler in der Analytics-Diagnose mehr
Die Analytics-Diagnose zeigt keine Fehler mehr für Parent-Channel an.
Listing-Seite nun auch mit unbenannten virtuellen Feldern möglich
Virtuelle Felder ohne Namen verhindern nun nicht mehr die Benutzung der Listing Seite.
Versionsangaben finden sich wieder unter System -> Systeminformationen
Die Anzeige der Versionsnummern in der Systemübersichts-Seite wurde gefixt.
Leere Tooltips werden nicht mehr angezeigt
Es werden keine Tooltips mit leeren Nachrichten angezeigt.
In Analytics werden keine scheinbar unpassenden Thesauruseinträge mehr gezeigt
Die Übersicht über die für einen Suchbegriff aktiven Thesauruseinträge im Analytics-Bereich zeigt nun nur noch Thesauruseinträge, die auch tatsächlich bei einer Suche greifen würden. Bisher wurden fälschlicherweise auch Begriffe angezeigt, welche den Suchbegriff lediglich enthielten.
Thesaurus View: Sortieren nach "Bidirektional" liefert keine NullPointerException mehr
Ein Fehler wurde behoben, der verhinderte, dass Thesauruseinträge auf der Thesaurusseite des Uis nach Bidirektionalität sortiert werden können.
Stopwort Relevanz Checkbox verursacht keine Transaktionstimeouts mehr
Die Checkbox auf der Stopwort-Seite um die Relevanz aller Stopwörter auf einmal zu ändern konnte zu Transaktionstimeouts führen. Dies wurde behoben.
Problem mit ASN Filter bei CWM8 (ITB) behoben
Ein Fehler wurde behoben, der verhinderte, dass Facetten, die von einer Facette mit vielen Werten abhängen, zum Editieren geöffnet werden konnten.
Thesaurus: Anzeige doppelter Validationsnachricht behoben
Beheben von einem Fehler, bei welchem eine Validierungsnachricht doppelt angezeigt wurde.
Bug bei Weiter-Button im Kampagnen-Assistenten behoben
Es wurde ein Fehler behoben, bei welchem der Weiter-Button vom Kampagnen-Assistenten permanent deaktiviert blieb.
Behoben: Fehler nach dem Aktivieren von Stoppwörtern
Änderungen an den Einstellungen der Suchlogik innerhalb von Suggest eines Parent Channels konnte zu Fehlermeldungen führen. Dies wurde behoben.
Von XML nicht unterstützte Zeichen werden nun nicht mehr übertragen
Zeichen, die für die Übertragung per XML invalide sind, werden jetzt vor der Übertragung entfernt. So werden Fehler vermieden, die vorher zum Beispiel dann aufgetreten sind, wenn man über den Installer einen Channel mit einer Importdatei, welche Steuerzeichen enthält, einrichten wollte.
Dropdown-Menüs sind nun dynamisch
Dropdown-Menüs wachsen mit dem Inhalt bis zu einer bestimmten Größe, sodass die Inhalte besser sichtbar sind.
Feldpriorisierungsseite: Validierungsfehler beseitigt
Wenn mehrere Einträge auf der Feldpriorisierungsseite invalide sind wird die Fehleranzeige nun korrekt aktualisiert sobald ein Fehler behoben wurde.
Diverse Fehler in der Suchdiagnose behoben
Es wurden Fehler auf der Such Diagnose Seite behoben, die das zurück gehen im Browser verhinderten.
Bug behoben, durch den beim Ändern des Display-Modus kürzlich hinzugefügte Suggest-Typen verloren gingen
Ein Fehler auf der Suggest-Einstellungsseite wurde behoben durch den ein neu hinzugefügter Suggesttyp verschwinden konnte, wenn der Display-Modus gewechselt wurde.
Umbenennen von Suggest-Typen führt nicht mehr zu Fehlermeldungen
In bestimmten Fällen konnte das Umbenennen von Suggesttypen zu einer Fehlermeldung in der UI führen. Dieser Fehler wurde behoben.
Hinzufügen von Thesaurus & Campaigns auf Searchterms-Seite nicht mehr fehlerhaft
Die Buttons von Thesaurus- und Präprozessor-Einträgen auf der Analyse-Suchbegriffe Seite sind nun nicht mehr deaktiviert wenn eine Transaktion gestartet wird.
Navigationsseite bei gelinkten Facetten nicht mehr aktiv
Ein Fehler wurde behoben, bei welchem die Navigations-Facette im verknüpften Modus bearbeitbar war.
UI: Search
Suchdiagnose lädt nicht mehr endlos nachdem Parent-Channel in den Bearbeitungsmodus versetzt wird
Ein Fehler wurde behoben, durch den in manchen Fällen die Diagnosesuche nicht mit dem Laden fertig wurde.
Suchdiagnose-UI lädt nicht mehr endlos im Child-Channel
Ein Fehler wurde behoben durch den bei Verwendung des UI-Parameters server.servicecall.diagnostic.mode
mit Wert SERIAL
die Diagnose-Suche endlos lief.
Operating
Speicherverbrauch durch Recommendation-Engine während Table-(Re-)Load angepasst
Das Format der Recommendation-Datenbank wurde angepasst. Dadurch belegt die Datenbank nicht nur weniger Platz auf der Platte sondern benötigt beim Neuladen auch deutlich weniger Speicher im Heap. Aufgrund dieser Änderung muss ein erneuter Recommendation-Import durchgeführt werden. Recommendation-Datenbanken im alten Format werden nicht mehr gelesen.
Klarere Fehlermeldung für Probleme beim Erstellen temporärer Dateien
Die Fehlermeldung, wenn das Erstellen einer temporären Datei fehlschlägt, wurde verbessert. Nun wird das tatsächliche Verzeichnis genannt, in dem die Datei erstellt werden sollte.
Response / APIs
%25 führt nicht mehr zu Parsefehlern, wenn man es in einer Rest-Anfrage verwendet
Ein Fehler wurde behoben, bei welchem in der REST-API Parameter doppelt URL decodiert wurden.
reloadConfiguration lädt nicht mehr alle Channels neu
Ein Fehler wurde behoben bei welchem die REST-API reloadConfiguration immer Konfigurationen aller Channels neu geladen hat.
AdvisorCampaign answerPath kann nun geparsed werden
Ein Fehler wurde behoben der das korrekte Verarbeiten des AdvisorStatus über die REST-API verhindert hat.
Sonstiges
Default-Werte überschreiben implizit Einstellungen der Parent-Konfiguration in der Laufzeit-Konfiguration des Child-Channels nicht mehr
Das duplicateFilterField
und die Einstellungen bezüglich des Suchcaches, wurden in die Vererbung aufgenommen.
Textvergleich-Kriterien UI im View-Modus nun deaktiviert
Ohne offene Transaktion sind die Boxen im Textvergleich Ranking-Regeln Dialog nun deaktiviert.
Backup kopiert Fallback nun
Es gibt nun auch eine standardmäßige Fallback-Datei für Kampagnen (campaigns/campaigns.xml
). Dies ist nötig um unter anderem das korrekte Erzeugen eines Backups bei Transaktionsende zu gewährleisten.
Attribut für Filtern nach unfacettierten Feldern eingeführt
Felder können bzw. müssen jetzt als <filterable>
markiert werden (default ist true
).
Sortierung nach Fuzzy / Exact auf FieldPrio Seite wirft keine ClassCastException mehr
Ein Fehler der zu Exceptions beim Sortieren auf der FieldPrio-Übersichtsseite führte, wurde korrigiert.
Unerklärliche Violation Exception beseitigt
Die Fehlermeldung wenn mehrere Facetten in einem Cluster von keiner Facette abhängen wurde verbessert.
Fehler bei Stopwords und ASO "überschrieben"-State behoben
Es wurde ein Fehler behoben, der dazu führte, dass der Überschrieben-Status von Stopwords-Einträgen und des "aktiv"-Häkchens der ASO falsch dargestellt werden konnte.
ChannelWizard ist bei leerer Configuration nun deaktiviert
Es ist nun nicht mehr möglich den Channel Wizard zu starten wenn es keine konfigurierten Channel gibt, oder das Erstellen neuer Channel deaktiviert ist.
UI-Validierungsfehler nun im Info-Level
Validierungsfehler die in der UI auftreten, werden nun im info-level statt im error-level geloggt.
Weiterleitung zur SwaggerUI angepasst
Die Swagger-UI ist nun unter https://ng-demo.fact-finder.de/fact-finder/swagger-ui.html erreichbar, außerdem wurde eine Weiterleitung von ./
zur Swagger-UI hinzugefügt.
SuggestWhitelist zeigt keine invaliden Änderungen mehr
Validation Fehler auf dem Suggest Whitelist Hinzufügen/Löschen-Dialog lassen die Tabelle nicht mehr neuladen.
Reload Configuration lädt Channel-Liste nun neu
Der Reload Configuration
Link auf der System-Übersichtsseite führt nun auch zu einem korrekten Neuladen der Channel-Liste.
Download des Exports gibt keine 403 Fehler mehr aus
Beim Download von Export-Dateien wird der HTTP-User-Agent nun per Default auf "factfinder/version" gesetzt, wobei "version" durch die aktuelle FACT-Finder-Version ersetzt wird. Um den HTTP-User-Agent nicht zu setzen, kann den fff.properties
der Eintrag httpUserAgent=
hinzugefügt werden.
Keine doppelte Blacklist-Filterung der Tag Cloud mehr
Das TagCloud-Limit wird jetzt nach der Blacklist-Filterung angewendet.
ProductCampaign berücksichtigt nun Ranking
Das Feature Ähnliche
Artikel
und dadurch auch die PushedProducts-Variante der Beliebtesten
Artikel
berücksichtigt nun die eingestellten Rankingregeln.
Ranking-Einfluss von 0% wird nun angezeigt
Der Einfluss des Rankings wird in der Suchergebnistabelle nun auch angezeigt, wenn dieser für ein Produkt bei 0% liegt.
Kategoriepfad nun möglich als Trigger für ProduktDetail-Kampagnen
Es wurde ein Fehler behoben, welcher das Hinzufügen von einem Kategoriefeld als Kampagnenauslöser in einer Produktkampagne verhinderte.
Multi-Attribut-Facetten - Deaktivierung für die ASN beziehungsweise Navigation nun möglich
Es ist nun möglich Facetten explizit für die Suche oder Navigation zu deaktivieren und damit von der ASN-Generierung auszuschließen.
Hat man beispielsweise eine Multiattributs-Facette MultiFilter
angelegt und eine Facette für das spezielle Attribut Gewicht
aus diesem Feld so war es bisher nicht möglich das Attribut Gewicht
von der ASN-Generierung auszunehmen. Die Deaktivierung der Gewichts-Facette wird nun dafür sorgen, dass keine Facette für dieses Attribut generiert wird.
Alle Facetten müssen nun jederzeit sowohl in der Such- als auch der Navigationsliste stehen. Durch die Migration kann es dabei zu teilweise invaliden Konfigurationen kommen wenn Teile eines Clusters kopiert werden, die in der anderen Liste nicht existieren. Hier ist eine manuelle Bearbeitung erforderlich.
Anlegen einer Ranking-Rule bei ehemals existierender Gruppe jetzt möglich
Ein Problem wurde behoben, dass das Anlegen einer Ranking Regel in einer existierenden aber leeren Gruppe verhindert hat.
Ranking-Einfluss von 0% wird nun angezeigt werden
Der Einfluss des Rankings wird in der Suchergebnistabelle nun auch angezeigt, wenn dieser für ein Produkt bei 0% liegt.
Präprozessor: IndexOutOfBoundsException bei Anlage des ersten Eintrages in Parent-Channel
Ein Fehler beim Hinzufügen von Präprozessoreinträgen in Parent Channeln wurde behoben.