Technical Release Notes 7.2

New Features

Import

Added new import and suggest import settings

There are now four import settings and five suggest import settings which are editable through the UI. Following settings have the same behavior for both import and suggest import:

  • TrimWhitespaces: Replaces multiple whitespaces between words with just a single one and removes leading and trailing whitespace
  • RemoveHtmlCode: Replaces all html tags from the fields with a space character and decodes all html entities.
  • ReplaceIsoCounterparts: Replaces special chars („ ” “ ´ ` ’ —) with their ISO counterparts.
  • DeduplicateFieldValues: Deduplicate the field values so each value exists only once. Fields with group-delimiter, multi-attribute and category-path fields are handled. (For suggest it deduplicate additional response attributes.)  This setting is only available at the suggest import settings:
  • DeduplicateSuggestSearchContent: Remove duplicates within the additional search content.

Added new functionalities to the Suggest import to count images and hits

Technical

The Block-/ListHitCountAndPreviewImageProcessors have been extended to cover previous common-class functionality by adding the following type-options:

  • ignoreMissingImage: prevent image calculation if no image was found in the corresponding search database record. This option only applies If fallbackImageUrl is not set.
  • keepHitcountFromLog: keep the hit count from the search logfiles instead of calculating it.
  • removeNoMatchSuggestions: remove the suggestion if no products are currently available. If keepHitcountFromLog is enabled, nothing will be removed. The hit count of 0 will be ignored for suggestions based on the Suggest whitelist
  • fallbackImageUrl: image URL if no image has been found in the record of the search database or after image lookup.

Added new options for LogfileProvider

Technical

The LogfileProvider for suggestions generated from search log files now supports the following extra options:

  • minSearchCount: similar to minSimi, this option lets you configure a lower bound for the amount of searches necessary for a suggestion to be generated
  • requiredFilters: lets you configure a list of search filters at least one of which must be set for a suggestion to be included. One suggestion is generated for each matching filter, and the filtername and value pair are included as attribute key and value. If no filters are set, all suggestions are generated irrespective of any search filters.

Example:


<source>

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

<conf>

  <minSimi>9901</minSimi>

  <minSearchCount>2</minSearchCount>

  <days>7</days>

  <requiredFilters>

    <filter>shopID</filter>

    <filter>languageID</filter>

    <filter>categoryPath</filter>

  </requiredFilters>

</conf>

</source>


Campaign Manager

Improved API for products and shopping carts

Technical

The API to collect Product- and ShoppingCarts-campaigns has changed.

  • XML/JSON
    The URL to obtain the campaigns is now the same for both types of campaigns.    
    ProductCampaignAction.ff?do=getCampaigns&...
    A new parameter type has to be included, to tell FACT-Finder which type of campaigns should be retrieved. The possible values are
    • DETAIL - ProductCampaigns which are active on a single product detail page - previously known as ProductCampaigns
    • CART - Campaigns active on a shopping cart page - previously known as shoppingCarts campaigns
  • Webservice
    The old getProductCampaigns method and the getShoppingCartCampaigns method are not available in the new API anymore.
    The method getProductCampaigns was changed. The new signature is         
    List<Campaign> getProductCampaigns(String channel, List<String> productNumberList, String type, boolean idsOnly, AuthenticationToken login)
    The type-string is used to determine which type of campaigns should be retrieved. Possible values are
      • DETAIL - ProductCampaigns which are active on a single product detail page - previously known as ProductCampaigns
      • CART - Campaigns active on a shopping cart page - previously known as shoppingCarts campaigns    The previously used URLs for XML and JSON are still available as are the old Service-Methods (for API 7.1 and below) for backwards compability.

Introduced new campaign type “Product”

There is a new campaign type PRODUCT, which behaves like a feedback campaign but is active on a product related page (detail, shopping cart) instead of the search result.

Technical

Feedback campaigns that were active on a product detail page or shopping cart (criteria type DETAIL, CART) are migrated to the new product-type campaigns. Feedback campaigns are now only active on search/navigation results.

Added prioritizing of campaigns

It is possible now to priorize campaigns among each other. The higher the priority value the higher the campaign will be ranked.

Improved configuration of advisor campaigns

It's now possible to configure the products in the advisor campaign with the same modes available at feedback campaign. Previously only search params mode was supported for advisor campaigns

Personalization

Pushed products now support personalization

Pushed products in campaigns now support personalization.

Technical

When defining a pushed products descriptor with enabled personalization there will be a checkbox specifying if this productSet is intended to be personalized. This option will reorder the products to place the most relevant ones for the user in front.

Created a tool to import personalization from file-based to database-backed

Personalization customers with high performance needs can now be migrated from file-based to database-backed personalization storage.

Technical

A new command-line tools for migration from file-based to Postgres-backed personalization is available in the source repository (https://git.omikron.net/projects/FF/repos/fff-perso-upgrade/browse) and the Maven repository (http://mavenrepo/repository/omikron/de/factfinder/fff-perso-upgrade/).

Recommendation Engine

Be able to configure the RecEngine import settings via UI

It is now possible to configure the recommendation engine import on the general recommendation settings page.

Technical

Currently only the import from tracking files can be configured. The following settings can be configured:

  • matchOnField - The field which contains an identifier for a product. Used by the recommendation engine to identify products.
  • Days to consider - The time period in days, which will be imported into the recommendation engine. Older events will have a smaller impact on the recommendations than newer ones.
  • Tracking Type - The type of tracking events, that is used for the import. The default time period which is imported into the recommendation was changed to 360 days.

Recommendation Engine now supports product variants

Technical

The recommendation engine has been updated to support variants of products. In order to use variants, a duplicateFilterField has to be configured in the channel's search configuration and the product events have to contain the master ID of products.

Instore Ads

FACT-Finder InstoreAds

FACT-Finder offers the possibility to merge sponsored products into search results and so earn money even with customers, who buy nothing. This feature is called "FACT-Finder Instore Ads" and can be used in cooperation with certain partners, which provide the sponsored products based on the products of your shop. Therefore customers will not leave your shop, when they click on or buy these products.

Technical

Instore Ads are implemented as campaigns and work like this:

  • The useInstoreAds flag has to be set to true in fff.properties. The default value is false.
  • In config.\{CHANNEL\}.xml the Instore Ads configuration has to be set up and so can be configured for each channel. The configuration looks like this:


<instoreAds>

      <suppliers>

           <supplier>

                 <name>InstoreAudience</name>

                 <shopId>OmikronDemo</shopId>

          

<campaignUrl>UrlToCsvWithSponseredProducts</campaignUrl>

 

                 <reportingUrl>reportingUrl</reportingUrl>

 

<fileName>fileNameToSaveTheFileOnDisc</fileName>

 

<authUser>nameToAuthenticateAtPartnerApi</authUser>

 

<authPassword>passWordToAuthenticateAtPartnerApi</authPassword>

           </supplier>

      </suppliers>

      <maxPushedProducts>3</maxPushedProducts>

      <prioritized>true</prioritized>

</instoreAds>


  • maxPushedProducts defines, that at most 3 sponsored products will be merged into search results. Products with higher click revenue will be preferred. This option applies for all supplier of this channel.
  • prioritized declares Instore Ads products will be in front of products pushed by a "normal" campaign. The Instore Ads campaigns and the "normal" campaigns among themselves will be sorted by priority. If set to false all campaigns will be applied by priority. This option applies for all supplier of this channel.
  • name It is important to notice that the suppliers name are specific values: At the moment "InstoreAudience" and "Kairion" are supported.
  • shopId Is the id of your shop used by the Instore Ads partner.
  • fileName, authUser and authPassword are optional. If the file name is not provided /campaigns/\{SUPPLIER_NAME\}.\{CHANNEL\}.csv will be used by default. These files serve as a backup.
  • The Instore Ads campaigns are automatically generated by a job, which will run every 15 minutes and create the campaigns based on a CSV fetched from the Instore Ads partners. The CSV has a defined format, which is agreed with the respective Instore Ads partner. Campaigns created in the previous job execution will be deleted. When the new campaigns are created a reporting about the clicks, carts and buys of the last period is send to the Instore Ads partner, so it is possible to invoice it. Campaign creation and deletion and the reporting will be performed supplier-wise. If arranged with the supplier the reporting will also contain feedback about errors, which occurred on campaign creation.
    • The job is disabled by default and has to be enabled by setting enabled to true in the instoreAds.properties in the scheduler folder.
  • As the Instore Ads campaigns are automatically created, it is not possible to change them in the UI. Of course it is absolutely not recommended to change such a campaign in the campaigns.xml. Despite of that it is possible to view an Instore Ads campaign in the new UI.
  • Instore Ads campaigns are of "Feedback" flavour and there will be one campaign per sponsored product. They belong to the special category "FF-Instore-Ads". It is forbidden to use this category for a "normal" campaign. This will result in a validation error. The campaign is associated to the supplier, which initiated its creation. This is also reflected in the campaign id, which contains the supplier name.
  • The keyords in the CSV may contain wildcards: "\*keyword" or "keyword\*". This will result in check for the full query. If no wildcard is used the keyword will be checked word-wise.
  • A product feed can be fetched under /ProductFeed.ff?channel=xx, which provides an overview of the products of the shop. This feed is needed by "Kairion" supplier and so can only be fetched, if the channel has "Kairion" as supplier and the Instore Ads module is active. If the channel has not "Kairion" as supplier 501 (service not implemented) will be returned. To protect the sensitive shop data the user, who fetches the feed has to have the ProductFeedReader role and of course has to be allowed to view the channel. As the information in the feed is based on contents in fields with field roles, these roles have to be defined. The needed field roles are: productName, brand, ean, price and campaignProductNumber. Even if these field roles may be optional in normal setups, they are mandatory when "Kairion" is a Instore Ads supplier. No check will be performed, if the fields have contents. So, if a field is marked with a field role and is empty, it will be empty in the feed, which may result in a worse Instore Ads performance. So the shop owner should take care of a good database. To support finding missing values, a log entry will be created for empty fields (once every 12 hours).
    • If FACT-Finder is operated within a closed environment, the following IPs need to be added to the whitelist, so Kairion is able to access the application: 138.201.17.146, 136.243.152.147, 138.201.85.220, 138.201.86.47 and 85.10.209.167
  • To enable the invoice of the sponsored products a working tracking is needed. There are two new optional parameters for click, cart and buy events, which can be used for normal products and have to be send for sponsored products.
    • The campaign parameter should be the identifier of the campaign, which caused the product to be contained in the search result.
    • The instoreAds parameter should be true, if the product was merged by an Instore Ads campaign into search result. The values needed for these new parameters can be obtained from two new result record fields:
    • __FFInstoreAds__ contains true, if the record was added because of an Instore Ads campaign, otherwise false.
    • __FFCampaign__ will contain the campaign, which added the record to the search result.
  • The reporting contains information about buy, click, cart and view-Events from search result and on product detail page.
  • If the reporting to a supplier fails, the reporting will be retained. If the reporting succeeded, the tracking values will be reset, so the reporting is normally based on the period between the creation of a campaign and its deletion. Of course the new tracking parameter will be added to the tracking logs, too.
  • The communication to and from the Ad suppliers is done via HTTP-requests, which means that it's required to allow the corresponding ports (default Port 80 for HTTP and port 443 for HTTPS)

Added property to fff.properties to manage custom entries with DefaultSearchControlParamsApplier

Technical

Added the property idsOnlyFields to fff.properties which specifies a list of fields that will remain in the record for an idsOnly-search.

InstoreAds activate on exact rather than similar hits

Technical

To prevent badly matched ads the instoreAds campaigns will activate only on exact hits by default.

Response

Response is containing the field roles

Technical

The API of the search result response has been changed and contains now the name of the mapping of the fieldroles and their corresponding fields sorted by name. F.ex. the JSON Response will contain:


... "fieldRoles": {

  "brand": "manufacturers_name",

  "campaignProductNumber": "products_id",

  "deeplink": "products_link_self",

  "description": "products_description",

  "displayProductNumber": "products_id",

  "ean": "products_ean",

  "imageUrl": "imageUrlMid",

  "masterArticleNumber": "master_id",

  "price": "products_price",

  "productName": "products_name",

  "trackingProductNumber": "products_id"

},

...


Added possibility to exclude fields from search result

Technical

Fields got a new boolean configuration setting resultField with which it is possible to exclude the field from the search result by setting it to false.

Improvements / Changes

After Search Navigation (ASN)

Enabled root categories to be used as parent group query

Technical

It is now possible to use category names containing slash ("/") in the parent group query in the facet editor in 6.9 Struts UI by escaping them via "//". For example: if you want to show a certain facet after selecting "Farbe / Pflege" and subcategory "Reparatur", you can now enter "Farbe // Pflege/Reparatur" as correct parent group query. The exemplary category paths in the dropdown exhibit the same pattern now. This is a workaround solution to make configuring parent group queries containing the category delimiter in the categories name possible at all.  In the new UI of 7.x it is again possible to enter parent group queries manually. Additionally a small tooltip is shown on the list of potential category paths showing the entire category path which is helpful in case the category paths' length exceeds the dropdown's width. A follow-up to implement a proper solution for specifying category paths independent of category separators has been created (FF-10381).

Import

Database gets reloaded before Suggest-/Recommendation-imports now

Technical

Before each Suggest-/Recommendation-Import the database will be reloaded if it is not already up to date.

The current database’s timestamp and automatic reloads are now shown

Technical

The timestamp of the loaded search database is now always shown on the import page. If this timestamp differs from the timestamp of the saved database on disk, a message is shown informing about the automatic reload.

Analysis

Analytics now prevents duplicates

Analytics is now able to reuse existing analysis results. If a new analysis is triggered, analytics highlights the matching analysis results in the view instead of creating a new one. Matching analysis results are all the results which have the exact same or a greater time period. Analysis that include the current day always create a new analysis result.

Technical

Analytics has been updated to reuse existing analysis results. If a new analysis is triggered, analytics searches for matching analysis results and highlights them in the view instead of creating a new one. Matching analysis results are all the results which have the exact same or a greater time period. Analysis that include the current day always create a new analysis result. The existing analysis results are persisted in a serialization file on analytics shutdown and they will be deserialized on analytics startup. On top of that, the holdover time of analysis results has been increased to create a significant range of results to reuse. The default holdover time for general analysis results is two weeks and for analysis results which include the current day it is one hour. However, both of the holdover times are configurable in the application.properties by ffa.job.maximumIdleTime and ffa.job.currentDayAnalysisMaxIdleTime. Reminder: The cleanup interval for expired analysis results can be configured by ffa.job.cleanupEvery.

Added help messages for Analytics KPIs

Technical

Analytics and What's Hot (new UI) provide some help texts with information about the displayed KPIs now. 

Tracking

Diagnostics track campaigns now

The diagnostics view is now able to give information about missing campaigns in the tracking information if it could be useful.

Technical

The diagnostics view has been updated with campaigns information from tracking events. If the campaign information is missing, the user will be informed by an information message. Additional prerequisites for the message are that the campaign manager is activated in the properties and at least one pushed products campaign is available.

Improved tracking validation

Technical

Tracking requests with count=0 or with missing masterId (when a duplicateFilterField is set) or without parameters are now rejected with an error.

Campaign Manager

Added a visual HTML editor in the campaign editor

The Campaign Editor does now contain a WYSIWYG HTML Editor for feedback texts. If it does not fit all the needs it is still possible to switch back to a TextArea for entering plain HTML directly.

Added „Back to summary“-button to discard changes

On wizards which have a summary panel, there is a new button called "Back to summary". When clicking the button a confirmation dialog is shown, when confirming this dialog the wizard will discard changes on the current wizard step and navigate to the summary panel.

Personalization

Added new parameter for session ID

Technical

In order to personalize campaigns' product sets a new query parameter called sid has been introduced to the product campaigns endpoint (e.g. ./FACT Finder/ProductCampaign.ff?sid=allkjSf; analogous to the recommendation endpoint). It contains the personalization ID of the user for whom to personalize the product set. If omitted eventually present product sets which are configured to be personalized are delivered unpersonalized.

Recommendation Engine

Serialization got improved

Technical

The serialization framework for the recommendation database was changed to improve loading speeds. Existing databases won't work anymore, so a re-import is needed after the upgrade.  The migrator will delete the existing database.

Installation Assistant

Fallback configuration will be used when cloning a non-configured channel

Technical

When cloning a channel and the source channel does not have a specific configuration, the specific configuration in the new channel will now be based on the existing fallback configuration. 

Configuration of internationalization settings now possible

Technical

It is now possible to edit the internationalization settings locale and codepage via the importsettings page.

Added function to prevent invalid campaigns

Technical

Campaigns are validated on startup so FACT-Finder will not start with invalid campaigns. All configurations and campaigns are validated before finishing a transaction. This prevents saving a valid change in one configuration, that would invalidate another configuration. An example would be field-references in campaigns, where deleting such fields would be a valid change in the search configuration.

Improved handling of invalid migrator configurations

Technical

The migrator has been updated to correct several invalid configurations. WordValues are stripped of invalid characters, and duplicate checks for WordValues, Thesaurus and Preprocessor entries are now utilizing the FF normalizer. Campaigns without any criteria are removed, and searchParams referencing a channel other than the current one are rewritten. Unmigrated Temp files are deleted.

Migrator will now ensure that reloadAllDatabases.properties exists

Technical

When migrating to 7.1 the migrator will now copy the reloadAllDatabases.properties into the configured scheduler-directory, if it doesn't exist already.

Advisor campaigns are now saving product sets

Pushed products in advisor campaigns, that are defined by search parameters are now retaining selected filters.

Advisor campaigns are now fully clonable

Technical

Added a check to the campaign cloning panel that tests if the search parameters used in the campaign reference fields not present in the target channel. If such fields are found a warning will be displayed.

Wordwise criteria now also work when the reference is a sequence of words

Technical

Wordwise criteria now also work when the reference is a sequence of words. Every word in the reference sequence has to match with the value, in the defined order, for the criterion to match.  If for example the reference value is set to light shirt with equals as the operation the value red light shirt would match. The value light red shirt would not match as after the first matching word (light) the second word (red) doesn't match the expected second reference word (shirt).

Added a maximum of displayed products in the campaign wizard to prevent breaking

Technical

7.1, 7.2 The pushed products overview page (e.g. in campaign wizard) should not break anymore, if there are a lot of products defined. The tooltip for manually and product list pushed products will show at most 8 products and give a hint how many more products are defined. 7.0 The pushed products overview page (e.g. in campaign wizard) should not break anymore, if there are a lot of products defined. The tooltip for product list pushed products will show at most 8 products and give a hint how many more products are defined.

XMLStreamException: Maximum Number of Child Elements limit increased

Technical

The stax limit for childElements was increased for all UI services, similar to the previous WhatsHot exception.

A tooltip is now shown for every type of pushed products

Technical

The information tooltip for pushed products in the search result table, is shown for all pushed products now. Regardless of the way they are defined.

Added timezone settings to channel templates

Technical

Added timezone settings to the channel-templates.

TagCloud

Fixed TagCloud inquiries crashing the system

Technical

Triggering an analysis to generate a Whats Hot report does not block other threads anymore, that might want to use the Whats Hot data (f.ex. TagCloud). Generating the TagCloud will not trigger an analysis anymore, if no Whats Hot data is currently available.

Data Quality

Improved configuration of Data Quality workflows

Data Quality workflows can now be configured inside the new UI.

Response

Removed campaign reminder

Technical

The campaign reminder functionality was removed. The interface will now always return an empty map. This is also the case when requesting an older API-version.

Extended API to cover new campaign type

Technical

The API to collect campaigns has been extended as a new type of product campaign is available - the page campaign. These are campaigns, which are active for a specific page.

  • XML/JSON

The new campaign type can be fetched via ProductCampaign.ff?do=getPageCampaigns&format=xml&pageId=landingPage&channel=xyz....

  • Webservice

Use getPageCampaigns method to fetch page campaigns with webservice API.

The format and channel parameter work like the ones for the existing calls. The pageId is the id of the page, for which the campaigns should be fetched. Furthermore an authenticationtoken is needed and you can specify via idsOnly parameter, that only the ids of the pushed products should be returned within the campaigns.

Reworked JSON response for PushedProducts

Technical

PushedProducts in a JSON respone do no longer contain fields other than id and record.

Improved JSON-Schema definitions

Technical

Improved the JSON-Schema definitions:

  • add a schema version
  • use enum's for types like resultStatus in the ff-result-schema.json
  • use references for often used types

UI: Management Interface

Configurable UI timeouts

Technical

It is possible to define the timeout for service calls from a new UI to the FACT-Finder server. Use the server.servicecall.timeout property in fff-ui.properties. If this value is empty or not parsable to millisecond value the default timeout of one minute will be used.

Scaled down UI of the search client application

Technical

The user interface of the search client application got shrunk in functionality, as the new UI should be used for daily business, like configuring settings. However the search client application will keep a user interface, but the use-case for this will be debug reasons. In detail the following modules and functionalities got removed from the search application:

  • User management
  • Recommendation engine configuration (matrix and its settings)
  • Configuration backup manager
  • Configuration of notifications
  • Overview about not sent error notifications and expired ressources
  • Installer
  • Search and Suggest Import
  • Configuration editor (excluding Thesaurus ,Preprocessor, Stopwords and Field overview)
  • Deployment

If you wish to change settings in the places mentioned above, please use the new user interface.

Time zone capability

It is now possible to select a timezone on the import settings page. The dates in the campaign manager are displayed in the channels timezone.

Refined the way some KPIs are calculated

Technical

The Search Conversion Rate and similar KPIs were based on search events as well as on navigation events. This has been switched to search events only. Additionally, the Search Conversion Rate is now part of the search terms table.

Changed the primary key for Analytics

Technical

Specific circumstances like the switch to daylight saving time made Analytics try to write values with the same timestamp multiple times to the database. This behaviour led to errors because the timestamp was used as unique key. Changing the unique key solved the problem. On top of that another warning message is logged when a changing timestamp is identified.

Campaign wizard can now be closed when feedback text is empty

Technical

The content of a feedback text now also gets properly validated in the campaign editor.

Reworked preprocessor page

The preprocessor page got reworked for version 7.0 and onwards. Improvements include better performance for a large amount of preprocessor entries, better discoverability for drag-and-drop and a new dialog for merging preprocessor groups.

Technical

Several bugs of the old preprocessor page have been resolved, like when two groups were given the same name, one of them disappeared.

Configure the default time zone per user

It is now possible for a user to select his timezone on the profile page. The dates in the campaign manager are displayed in the users timezone.

Added currency symbols to Analytics

Analytics is showing the currency at monetary KPIs.

Technical

The currency requires a country and language definition inside the i18n-block of the search configuration

Logging out without saving will now trigger an alert message

A logout confirmation is shown when the current user has a not saved transaction.

Combo boxes now respond to keyboard input

It is now possible to navigate with the keyboard inside a combobox, for example when pressing the "e" key, the select box will navigate to the first entry with the first letter "e".

UI: Adminmode

Linked diagnostic search timeout to connection timeout

Technical

The connection timeout between the FACT-Finder and the UI application can be configured since 7.0 via the "server.servicecall.timeout" property in the configuration of UI. This timeout value is now used to determine the timeout value for the diagnostic search (timeout of diagnostic search = 0.9 * connection timeout). Diagnostic searches completing after the connection timeout would not be rendered on the client anyway.

Fixed empty listing being shown even with ASN

Technical

The diagnostic search UI should no longer render an empty result grid when the user has previously sorted by similarity.

Handling of filtering in the new UI’s configuration mode changed

Technical

Diagnostic search supports substring filtering. Use the filter boxes in the header of the search result table to filter in substring mode. The applied filter will be shown in the facet toolbar on the left in a yellow bubble - if the corresponding facet is shown. The filter will be deleted from the filter box, if it will not be applied on your next search request - due to e.g. optimisations done by the search process. You can also use substringFilter=\{FIELD_NAME\}:\{FILTER_VALUE\} as parameter in the browser address line. Use ~~~ for *OR*, ___ for *AND* and ! for *NOT* to construct more complex substring filter.

Changed the display method of diagnostic search

The detail information in the diagnostic search will be displayed in a new row under the found product again instead of a popup window.

UI: Search

FF-UI now uses filter values instead of ASN group names

Technical

The search in the new UI distinguishes between the name of the ASN group and the filter value, which is represented by this group now. If no filter value is set, the ASN group name will be used as filter value.

Code Structure

Parallel loading is now possible in custom class loaders

Technical

The bundled class loaders now properly register as parallel capable. Classes are cached, and a new setting classLoader.cache.whitelist has been added to the fff.properties which can be used to restrict the cache of the BundleJarClassLoader to certain classes or packages.

Removed AD tracking interface

Technical

The AD tracking interface along with all related configuration has been removed. 

Exclusively daily log files

Technical

The <daily>, <weekly> and <monthly> properties have been removed from the <logging> config section. Daily log files are always enabled.

Operating

Improved log file extension

Technical

The additionalExtension log property is now known as dynamicExtension. There is a further new configurable extension, which can be set via fff.properties:

searchLoggerSettings.customLogExtension=inst-{prop:instance}

Valid dynamic logfile extension characters are now "\w-". Navigation is no longer part of the additionalExtension (when getting or setting). The full extension set is then as follows:

.log.asn.dynamicExtension.navigation.configuredExtension

Note that FF analytics cannot deal with any such configured extra extensions. 

TagCloud response is now possible without a connection to Analytics

Technical

TagCloud does not need a connection to Analytics to fetch What's Hot data any longer. This is achieved by a new What's Hot cache containing the most current What's Hot Reports. Since the connection to analytics is cut off, there will be no data for TagCloud if there is no What's Hot Report for a specific channel in the cache or if the cached report is outdated. Outdated means in this case, that the cached report is older than the current day. By default, the cache can be found in \{APP_RESOURCES\}/analytics/whatshot/ and it is also configurable in the fff.properties using analytics.whatshot.cachefile.path key.

Improved the Analytics directory cleanup to minimize the risk of data loss

Technical

The analytics job directory cleanup is now limited to directory names that look like UUIDs. This minimizes the risk of data loss if the application is configured incorrectly.

Changed Suggest import’s data source

Technical

The data source for the Suggest-import (searchTerm-suggestions as well as filter priorities) is now taken from the What's Hot report. This reduces the need logfile-merging and leads to various speed improvements. As a consequence, the analysis period as well as the processed log extensions are now fixed though. The recommendation import via tracking data uses analytics jobs as well. You might experience delays the first time this is performed, future imports should not be significantly slower. The same is true for the semantic enhancer import in the personalization mode which basically uses the same functionality as the recommendation import. So there is also no need to merge logfiles any longer but a delay can occur depending on the configured analysis period. ASO and click/cart/checkout-count field-values are using the What's Hot job data at import time.

Other

Filters can now be sorted differently

Technical

Adding a cluster facet through the UI will also mark the parent facet as clustered. Added Validation to prevent the existence of clustered parents without cluster attribute. 

Added sorting options for virtual fields

Sorting can now also be configured on the listings page for virtual fields.

Node-specific log-appending

Technical

In order to separate the logs of the different nodes, when using a centralised resources directory in a cluster setup, the following new placeholder can be set in the Java Options: fff.node.logs.subdirectory (e.g. on *nix systems: -Dfff.node.logs.subdirectory=`hostname`). It will append the configured subdirectory to the default log path {FACTFINDER_RESOURCES}/{WEBAPPNAME}/logs of the app, shopping cart, search and recommender logs. Please ensure that existing search, recommender and shopping cart log files are moved to the designated search and shopping cart logs subdirectory of the specific node, otherwise the tracking related fields of the search index, search term suggestions and the recommendations index won't be filled based on the aggregated logs by the Analytics application.

Auf dieser Seite