Release Notes for the version 2.3.4

e-Spirit AG

Table of Contents

Version 2.3.4

Fixed issues



In certain constellations, documents with multiple titles were erroneously created in the index.

New features



The reindex tool now prevents multiple values in the title field by selecting only the first values.


The default autocommit value from the collections has been raised from 15 seconds to 20 minutes. This will decrease the IO impact on the Solr server.

Version 2.3.3

Update Notice

The web datagenerator does not create the field "original_html_stored_only_big" anymore. If you still need the field you can add the following snippet to a web datagenerator groovy script:

import de.arithnea.haupia.constants.FieldNameConstants

document.addData(FieldNameConstants.ORIGINAL_HTML_STORED_ONLY, jsoupDocument.html())

Previously, metadata on FirstSpirit elements was added to the 'content' field in the search index. This is now no longer the case. The metadata - if present - is now stored in its own metadata fields with the prefix 'FS_META_*' in the search index.

If the content is relevant for the search, these metadata fields of the affected data generator must be marked in the PreparedSearch as to be searched and, if necessary, to be output.

New features



Removed the field "original_html_stored_only_big" of the web datagenerator to optimize index size.


Only relevant for cloud customers: Kubernetes deployment configuration update to 'RollingUpdate'.


Only relevant for cloud customers: The connection to the zookeeper has been changed to a load balanced URL.


Processing of FirstSpirit metadata of e.g. pages and media.

Version 2.3.2

Fixed issues



The reindex tool checked for autocomplete field which are not stored anymore. The autocomplete fields are now ignored in the sanity check.

New features



Added a migration guide for version 2.2

Version 2.3.1

Fixed issues



There was an error when searching through chinese data. This has been fixed and note that when passing the language you have to use "zh-cn" or "zh-tw".

Version 2.3.0


Updated Spring Boot version to 2.3. This Update deprecates some keys in the application.yaml which have to be changed. For more information please refer to the migration guide.

New features



Updated 3rd party libraries.

Version 2.2.6

Fixed issues



Only relevant for cloud customers: Fixed an issue where the dropdown for selecting a synonym list was empty on the synonym edit page.

New features



Only relevant for cloud customers: New Prometheus metrics to better monitor access to the ZooKeeper ensemble.


Only relevant for cloud customers: Adjustment of the JVM parameter MaxRamPercentage to avoid OutOutMemory errors.


It is no longer possible to start a data generation twice. An attempt to start a data generator while it is running or queued to be running returns the HTTP status code 409 (Conflict). Calls to the hot injection are not affected.


Only relevant for cloud customers: Update Docker Base image to adoptopenjdk/openjdk11:alpine-jre to minimize memory consumption and remove potential security vulnerabilities.

Version 2.2.5

Fixed issues



The poll timeout of the XML crawler to wait for the next document is not configureable

Version 2.2.4

Fixed issues



Fixed NullPointerException that occured when scheduling datagenerators on start up.


When saving API datagenerators, the configuration may have been updated with a delay.

Version 2.2.3

Fixed issues



Only relevant for cloud customers: Prevent double scheduling

Version 2.2.2

Fixed issues



A issue has been fixed regarding the Initialization order of the beans.

Version 2.2.1

New features



Only relevant for cloud customers: Improved datageneration start behaviour.

Version 2.2.0


The lucene match version has been updated from 6.0.0 to 8.1.1. For more information on the differences see the lucene news page.

The title field is now mandatory. If the field is missing it is set to an empty string.

For every language an additional dynamic field "*_expanded_autocomplete" has been added. This autocomplete field has an additional shingle filter to combine tokens for the autocompletion.

The synonyms have been changed from "ManagedSynonymFilterFactory" to "ManagedSynonymGraphFilterFactory". This should enhance the handling of multi-token synonyms. "This filter is a replacement for the Managed Synonym Filter, which produces incorrect graphs for multi-token synonyms".

The languages have been expanded:

  • ar: arabic
  • be: belarussian
  • et: estonian
  • hr: croatian
  • id: indonesian
  • ms: malaysian
  • sv: slovakian
  • th: thai
  • vi: vietnamese

The field "*_stored_only" is now limited to 32766 chars. For content greater 32766 chars the field "*_stored_only_big" should be used. Sequentially the field "original_html_stored_only" created by the web datagenerator has been renamed to "original_html_stored_only_big".

The field "*_pnt" has been added to store lat/lon information. The lat and lon values are seperated by comma. Example: "1.23,2.34".

For sorting and grouping the field "*_token" has been introduced. The field is similar to "*_sort" but it does not lowercase the token.

Another keyword variation has been introduced with the field "*_keyword_lc". The field handles the value as a keyword but lowercases it.

Fixed issues



The autocomplete service now utilizes the newly added keyword lowercase field. When a field name is passed to the autocomplete service with a suffix indicating a keyword lowercase field, the language specific appendix is omitted.

New features



Cloud-only: Server and api-gateway deployments will now get updated if the configuration is changed.


The operation manual is now part of the SmartSearch documentation


The schema has been updated to include Solr 8.1.1 features

Version 2.1.7

New features



Only relevant for cloud customers: The Docker image has been extended by the parameter resetAdminPassword to be able to react faster in case of loss of the admin password.

Version 2.1.6

Fixed issues



PreparedSearches could not be deleted in the cockpit list view.


When using hotinjection, the allowed contents of the request header "Content-Type" did not match the values allowed in the documentation.

New features



The recommended ZooKeeper version is now 3.4.10.

Version 2.1.5

Fixed issues



Addressed an issue with missing fields in a prepared search when a referenced data generator was deleted.

New features



Only relevant for cloud customers: Some metrics were added to the API Gateway.


Only relevant for cloud customers: The health detection of the services has been improved.


The internal SolrJ version has been upgraded to 8.1.


Added a chapter about monitoring to the german documentation.

Version 2.1.4

Fixed issues



Cloud only: Fix a version problem between solr and zookeeper

Version 2.1.2

Fixed issues



Fixed an issue with imports of data generator XMLs from haupia 1.

New features



Only relevant for cloud customers: Added a Prometheus-ServiceMonitor.


Only relevant for cloud customers: Improved the performance of the API gateway by adding a Kubernetes HorizontalPodAutoscaler.

Version 2.1.1

New features



Only relevant for cloud customers: Merging of the CORS configuration into the application.yml.

Version 2.1.0

Update Notice

A documentation section has been added to help updating from older ZooKeeper version to the current one.

A section has been added to help updating from older Solr version to the current one.

Fixed issues



The Reindex tool validates the results with the Solr id instead of the _document_id.

New features



Upgrade to ZooKeeper 3.5.5.


If the zookeeper connection becomes invalid during the acquisition of the leader URI, the zookeeper connection will be re-established.


Update to Java 11.


Upgrade path for Solr 8.

Version 2.0.95

Fixed issues



Usage of the Java API could result in an Exception while deserializing a facet JSON.

New features



When entering data, the language field is now always shortened to the ISO 639-1 language abbreviation, so from "en_EN" only "en" is considered.


Reloading the data collection on the datagenerators page failed if the endpoint was an alias. The alias is now resolved to the correct collection.

Version 2.0.93

Fixed issues



When generating data, GroovySkript-Enhancers now offer the possibility to set a value in the document by calling the method 'setSingleValue', replacing previous values of the same key.


A slash at the end of an URL no longer causes problems with canonical links.

New features



CORS was made configurable in the API gateway.

Version 2.0.92

Fixed issues



Autocomplete requests did not always result in suggestions that lead to search results.

New features



Metrics are protected (health is freely accessible).

Version 2.0.91

Fixed issues



Adding a link as an adaptable result was not working correctly, resulting in an error 404.


The values when filtering by facet can now also contain + characters.


A new return value was added to the facets of the Prepared Search especially for the query via ULR.

New features



If grouping is activated via GroovyScript in a PreparedSearch, the response now contains the field 'numRows' for each group and shows the number of hits within the group.

Version 2.0.90

Fixed issues



Statistical evaluation of query data could fail when too many prepared searches were selected, resulting in a error with code 500.

New features



The predefined fields of a new PreparedSearch have been optimized.

Version 2.0.89

Fixed issues



Document boost was not properly evaluated while qerying.

Version 2.0.88

Fixed issues



The terms for the autocompletion function are normalized in lowercase. To reflect this the prefix in the autocomplete REST call is now also converted to lowercase.

Version 2.0.87

New features



Fixed autocomplete when using a large content body: There has been a problem with the autocomplete if the text body in the content field over all documents was quite large, situationally resulting in an error 500.

Version 2.0.85

Update Notice

Important adjustment of the configuration: Please add the following keys to your application.yml to avoid configuration validation errors on application start.

      enabled: false
      enabled: false

Fixed issues



The submitted facet filters were not checked regarding the presence of a configured corresponding facet. E.g. passing "facet.filter.language=de" always filtered regardless whether the language facet was configured.

New features



Update of internal libraries and dependencies.

Version 2.0.84

Fixed issues



In some cases, a potentially problematic Solr document id generation, regarding datagenerators names containing trailing digits, could result in missing documents.

Version 2.0.82

New features



The status of a datagenerator was inherited when the name of a previously deleted datagenerator was reused.

Version 2.0.81

Fixed issues



A datagenerator with a document deletion threshold configured caused old documents to remain in the index.


Permissions present on group deletion are set on a new group created with the same name.


Deletion of multiple groups at once was not always possible.

Version 2.0.80

Fixed issues



Response messages and error codes for faulty hot injection API calls are now more verbose and consistent.

New features



Removed some unnecessary cockpit elements regarding external crawlers.

Version 2.0.79


It is now possible for SmartSearch to use basic authentication when communicating with the Solr server.

Update Notice

The credentials have to be configured in the application.yml. The corresponding keys are "solr.auth.username" and"solr.auth.password". If the connection has been additionally changed to https the key "solr.url.scheme" must have the value "https".

Fixed issues



Generating data from XML with multiple seeds could result in errors and in processing of only the last seed file.

New features



Implemented basic authentication for solr communication.

Version 2.0.78

Fixed issues



Infinite scrolling in the cockpits data browser browser could be erroneous.

New features



Improved cockpit user experience.

Version 2.0.77

Fixed issues



The was a possibility for a minor JavaScript error when opening the login page.

Version 2.0.76


In addition to the previous pagination capabilities via the parameters 'numRows' and 'page', the parameter combinations 'haupia_start'/'haupia_rows' and 'haupia_pageNumber'/'haupia_pageSize' can now be used to query results page by page. In the case of the combination 'haupia_pageNumber'/'haupia_pageSize' the information of the currently displayed page and page size as well as the total number of available pages are available in the response.

Fixed issues



The migration of an existing local user database to zookeeper sometimes could not be started due to connection problems.


The 'WWW-Authenticate' header was missing in the response of unauthorised REST requests.

New features



Enhancement of the PreparedSearch REST API pagination functionality

Version 2.0.75


Starting with this version the storage has been removed. Prior to this version the storage was used to buffer all documents between different steps. The change form one step to the next was done after all documents have been treated. Starting with this version the documents will travers all steps independent from the other documents and thus a storage is no longer needed.

Update Notice

After upgrading the directory "data" may be savely deleted. This leads to less HDD resource demand as the storage was on a local hard disk, as well as improved performance as the IO in communication with the storage is no longer needed.

Additional consequences of the storage removal:

  • Deprecated Enhancers:

    • Calculate inbounds: If this information is needed this may be done with a special search query.
    • Duplicate Documents: A replacement for this functionality will be part of a later release.
  • The behaviour of "Minimum documents to sync" has been changed to "Minimum documents to delete old documents". The documents are saved or updated as soon as the crawler has created them. After all documents are handled, the old ones are deleted. This is only done, if the configured threshold is reached.
  • The usage of the variable "storage" and method "saveDocument" in the groovy enhancer has been deprecated. The call to "storage.saveDocument(..)" will still work and add a new document to the datageneration but a message is logged. The new way to call this is "feedback.addDocument(…​)".
  • The configuration parameter "haupia.storage.cooldown" in the application.yml is now obsolet and may be savely removed.
  • During the generation with every successfully generated document the license is checked. The generation will stop as soon as the license is violated.

New features



Removed storage

Version 2.0.74

New features



Now datagenerators set their type and name as thread name in regard to logging.

Version 2.0.73

Fixed issues



When entering data for an adaptable result and clicking on 'Adopt', the page was erroneously reloaded in Firefox.


Calling the setBoost method in a groovy enhancer during a hot injection could result in errors on synchronisation due to duplicate values in the _boost field.

New features



Added support for older browsers (including Internet Explorer 11).


The javadoc reference for the API is now included in every release.


Optimized logging outputs.

Version 2.0.72


Update to Spring Boot 2.1.4, fixing https://pivotal.io/security/cve-2019-3795

New features



Updated 3rd party frameworks.


API JavaDoc link added to cockpit.


All list pages in the cockpit now have a default sort order.

Version 2.0.71


Now it’s possible for every user to change his password in the cockpit. Additionally the master administrator has the possibility to change the password of a user. To prevent lockout the start parameter "resetAdminPassword" was introduced. If the parameter is set at start, the Master-Admin password is read from the application.yml and its value is reset.

New features



Editing AdaptableResults does not erroneously change search metrics.


Passwords can now be changed.

Version 2.0.70

New features



The HTML documentation is available in the cockpit now.

Prior release notes (available only in german)


Tags: recommendation, cockpit, update


Auf den Listenseiten im Cockpit ist es nun möglich nach bestimmten Spalten zu Sortieren. Durch wiederholtes Clicken kann die Reihenfolge geändert oder das sortieren aufgehoben werden.

Neue haupia-Auslieferungen können ab diesem Release beim Update nötige Anpassungen der Solr- sowie zookeeper-Instanzen selbst vornehmen. Details zu diesem Vorgehen sind der Dokumentation zu entnehmen.

Alle Eingabefelder für Groovy-Code im Cockpit sind nun mit ihren zugehörigen Methoden-Signaturen versehen. Dies soll die Entwicklung von Grovy-Skripten erleichtern.


Bisher war es möglich, dem Admin-User die Rechte zum Bearbeiten der Gruppenberechtigungen zu nehmen. Dies hatte zur Folge, dass sich potentiell alle User aussperren ließen. Dies wurde behoben und im Falle der Verwendung von zookeeper als Userdatenpersistierung wird dem Admin-User immer die Berechtigung gegeben, die Gruppenberechtigungen zu bearbeiten.

Der Filter auf der Content Recommendation Listenseite funktioniert jetzt.

Die Buttons zum Speichern der User sind nun konsistent enabled oder disabled.

Die Enhancer-Ansicht innerhalb eines Datengenerators zeigt nun wieder die Elemente zum Verschieben und Entfernen im Titel an.

Es war im Cockpit möglich auf der User Edit Seite den User aus der Gruppe "USERS" zu entfernen. Dies wurde zwar beim Speichern der Änderungen ignoriert irritiert aber in der Darstellung. Der Entfernen Button aus der Gruppe "USERS" wurde entfernt.


Tags: Solr ,User Management, LDAP

Es existiert ein Sicherheitslücke in Solr für Versionen vor Solr 7.0, welche aufgrund der genuztten Version 6.5 derzeit auch haupia betrifft:


Diese Sicherheitslücke kann bei Zugriff auf die Solr-Instanz für Angriffe genutzt werden. Solr empfiehlt hier als eine Möglichkeit der Absicherung:

"Disable the ConfigAPI if not in use, by running Solr with the system property disable.configEdit=true"

Um dies zu erreichen, sollte dem Solr-Prozess beim Start die Option -Ddisable.configEdit=true mitgegeben werden. Dies kann durch direktes Anhängen an den Solr-Start-Aufruf geschehen:

./solr -c -z localhost:2181/solr -m 2g -Ddisable.configEdit=true

Alternativ kann die Datei solr.in.sh/cmd angepasst werden, welche üblicherweise direkt neben den Solr-Start-Skripten liegt:

SOLR_OPTS="$SOLR_OPTS […​] -Ddisable.configEdit=true"


Es ist nun möglich, für die User und Gruppen einen LDAP Server (nur lesend) zu verwenden. Als LDAP Server wird OpenLDAP in der Version 2.4.x unterstützt.

Die aktuelle Sprache des Cockpit ist nun in der Sprachauswahl nicht mehr auswählbar und fett markiert.


Beim Anlegen einer Content Recommendation wird nun der notwendige Re-Sync mit dem korrekten Datengeneratoren Namen durchgeführt.

Die URL der content recommendation API wurde der von der prepared search angeglichen. Es wurde die Reihenfolge in der URL von "execute" und dem Namen der content recommendation geändert.

Beim Aufruf der content recommendation REST API mit einer nicht existierenden content recommendation wurde der HTTP Status Code 500 zurück gegeben. Dies wurde behoben und nun wird der HTTP Status Code 404 zurück gegeben.

Wenn die Sprache des Cockpit geändert wurde, wurde diese richtig persistiert, aber in der Session nicht geupdated. Wurde eine neue Seite geladen, war die Sprache wieder wie vorher, erst beim ausloggen und einloggen wurde die Sprache fest übernommen. Dies wurde behoben: Sobald die Sprache geändert wird, wird diese auch in der Session geändert.

Wenn im User Bereich im Cockpit der Filter bei den Gruppen verwendet wurde und dann auf den Users Tab gewechselt wurde, konnte die Userliste nicht mehr angezeigt werden. Dies wurde behoben und beim Wechseln der Tabs wird nun der Filter geleert.

Auf der Gruppen-Editierseite konnte bisher der Admin User nicht mehr aus einer Gruppe entfernt werden. Dies wurde behoben.

Diverse Fehler bei den adaptable results der content recommendations wurden behoben.





Die Reihenfolge der konfigurierten Elevations bei den Adatptable Results wurde beim Auslesen des Datensatz nicht beibehalten. Dies wurde behoben.

Wenn bei den Adaptable Results bei den Tokens ein langer String vorhanden war, konnte das Layout brechen. Dies wurde behoben.

Bei einem Aufruf der REST Services mit falschen User Credentials wurde ein 302 auf die Login Seite zurück gegeben. Dies wurde behoben und jetzt wird mit 401 Unauthorized geantwortet.

Bei der Verwendung des Deep Links auf die Statistik Seite wurde der Verbindungstyp zwischen den Tags nicht korrekt gesetzt. Dies wurde behoben.


Tags: internal update, users, zookeeper


Die verwendete Spring Boot Version wurde auf die Version 2.1 erhöht.

Die Userverwaltung speichert die Userdaten nun anstatt in einer lokalen HSQLDB in der Zookeeper-Struktur. Mit dieser Umstellung können nun identische User in mehreren haupia Knoten verwendet werden. Die Migration der Userdaten geschieht automatisch beim ersten Start des haupia-Servers nach dem Update auf diese Version. Nach Abschluß der Migration werden die lokalen Daten automatisch gelöscht.

Mit der Migration der Userverwaltung wurde nun auch das Hot Standby umgesetzt. Weitere Informationen dazu sind in der Dokumentation.



Tags: zookeeper, cloud, proxy


Beim Start des haupia-Servers wird nun auch im zookeeper eine Leader Election und Service Discovery gestartet. Dies ist die Basis um eine Anmeldung mehrerer haupia-Instanzen am zookeeper und deren Verständigung untereinander zu ermöglichen. Sind mehrere Instanzen existent funktionieren die API-REST-Services über alle Instanzen hinweg. Das Ausführen der Datengeneratoren und das Cockpit hingegen sind nur auf dem Leader aktiv. Das Starten als einzelner Knoten oder mehrerer Knoten unterscheidet sich nicht, es ist also keine Konfigurationsänderung notwendig. In einem späteren Release wird noch die Speicherung der Userdaten auf den zookeeper umgezogen. Es wird empfohlen, auf diesen Release zu warten um eine doppelte Pflege der Userdaten zu Umgehen.

Die haupia-Crawler berücksichtigen nun einen potentiell in den JAVA_OPTS konfigurierten Web-Proxy.



Tags: GroovySkript, Installation


Beim Speichern einer PreparedSearch oder eines Datengenerators wird nun geprüft, ob evtl. vorhandene GroovySkripte syntaktisch korrekt sind. Ist dies nicht der Fall, so wird nicht gespeichert und dem User entsprechend Feedback gegeben.

Die Namen von neu angelegten Benutzergruppen können nun unabhängig von Groß-/Kleinschreibung nicht mehr identisch zu schon bestehenden Gruppennamen sein.

Für eine einfachere Installation auf Linux Systemen werden nun Vorlagen für Systemd mit ausgeliefert.



Tags: Cockpit, Intern, JDK, Statistics


Im gesamten Backend können die Werte von numerischen Eingabefeldern nun direkt per Zahleneingabe angepasst werden, statt wie bisher nur in festgelegten Schritten.

Die Spring-Abhängigkeiten wurden geupdated. Diese Updates beinhalten hauptsächlich Bugfixes der verwendeten Frameworks/Bibliotheken. Es sind keine speziellen Updatemaßnahmen notwendig.

Das für haupia empfohlene JDK ist nun OpenJDK in Version 8. https://openjdk.java.net/

Der PreparedSearch-REST-Service wurde um den Parameter "tag" erweitert. Mit diesem kann eine Suchabfrage einer oder mehreren Kategorien zugeordnet werden. Diese Kategorien können in verwendet werden, um Statistiken über ein Subset der Suchabfragen zu bilden.

Die Statistiken wurden um die Möglichkeit von Deep Links erweitert.


Wenn im Filtereingabefeld auf Listenseite Return gedrückt wurde, wurde die Seite neu geladen. Dies wurde behoben.


Tags: Internal, Prometheus, Cockpit, Prepared Search Konfiguration, External API


Die Basis wurde von Spring Boot 1 auf Spring Boot 2 angehoben. Bitte dazu den Migration Guide in dem Operational Manual beachten!

Es gibt nun eine einfache Möglichkeit in der application.yml einen Prometheus Endpoint freizuschalten.

Beim Anlegen einer neuen Gruppe wird nun geprüft, ob die Namen nur valide Zeichen enthält. Valide sind Buchstaben (klein und groß), Zahlen und Bindestrich.

Jars die für die Verwendung der Java Bibliothek verwendet werden erhalten nun automatisiert eine Versionsnummer.


Wurde in einer PreparedSearch ein Datengenerator konfiguriert, brach vor dem ersten Durchlauf des Datengenerators beim Aufruf der Editierseite das Abfragen der Feldnamen ab. Dies führte beim Öffnen zu einer leeren Felderliste, und wurde in diesem Release behoben.


Tags: Cockpit


Die Filter auf den Listenseiten im Cockpit sind nun Funktionsfähig.

Auf der Editierseite eines AdaptableResults gibt es nun die Möglichkeit beim Speichern verwaiste Elevations sowie Exclusions bereinigen zu lassen.



Tags: Schema, Spellcheck, Webcrawler, Date Enhancer, Storage, Logging


Im SOLR Schema wurde das dynamische Feld "\*_sort" hinzugefügt. Damit lassen sich Felder definieren, die zum Sortieren verwendet werden können.

Beim Spellcheck wird nun geprüft, ob eine Sprache existiert. Dies vermeidet folgende Fehlermeldungen: org.apache.solr.common.SolrException: Specified dictionaries do not exist: spellcheck_

Der Date Enhancer versteht nun auch folgendes Format: "Wed Aug 29 20:34:01 +02:00 2018". Dies wird von Tika verwendet und führte zu unnötigen Logmeldungen.

Das Logformat einiger Ausgaben wurde angepasst.

Die Hot-Deletion wurde implementiert, diese dient dazu ein Dokument schnell per API-Aufruf aus dem Index eines Datengenerators zu entfernen.


Der Webcrawler setzt nun den mime type korrekt als Facette.

Das Dropdown zum Einstellen der default Sprache bei den Datengeneratoren hatte bisher Sprachdefinitionen die von 2 Buchstaben abweichen (zum Beispiel zh-cn) nicht berücksichtigt. Dies wurde behoben.

Bei der Verwendung von lokalen Storages kann es bei der Verwendung von Netzlaufwerken dazu kommen dass während des Synchronisationsvorgangs nicht die aktuellste Version eines Dokumentes synchronisiert wird. Um dies zu verhindern wurde der globale Parameter "haupia.storage.cooldown" eingeführt. Mit diesem Parameter wird während der Datengenerierung dem Storage die konfigurierte Zahl an Millisekunden gelassen um die Änderungen zu speichern. In der Standardkonfiguration ist der Wert 0 Millisekunden.

Tags: External API, Taglib, Netzwerk Timeout, Logging, Storage, Prepared Search


REST Services und Dokumentation für die externen Datengeneratoren wurde hinzugefügt.

Die Taglib wurde um weitere Tags erweitert die für die Migration von haupia 1 noch benötigt wurden. Die Dokumentation für die Taglib wurde komplett neu geschrieben.

Der REST Aufruf der Prepared Search wurde um den Parameter "page" erweitert.

Das default Logging wurde überarbeitet. Per default erfolgt nun die Logausgabe in rotierenden Dateien.

Es wurden Endpunkte zur Überwachung der Applikationsgesundheit verfügbar gemacht. Weitere Informationen siehe Betriebshandbuch.

Das Verhalten des Webcrawlers wurde dahingehend angepasst, dass eine serverseitige Umleitung von http auf https beim Aufruf einer initialen Sitemap hingenommen wird. Somit kann die URL nun sowohl als http- als auch als https-URL gepflegt werden.

Wenn beim Aufruf einer Prepared Search in der Solr Query eine Gruppierung verwendet wurde, wird dies nun im Ergebnis auf das Feld "groups" gemapped.

Den AdaptableResults wurde die Möglichkeit hinzugefügt, Ergebnisse aus der konfigurierten PreparedSearch unabhängig vom Suchbegriff der Ergebnisliste hinzuzufügen.

Die REST-API wurde um die Möglichkeit erweitert, ein Dokument direkt aus dem Index eines Datengenrators zu entfernen (Hot Deletion). ==== Bugfix

Beim Download von Ressourcen wurde der Timeout bisher nicht berücksichtigt. Dies wurde nun behoben.

Nach einer erfolgreichen Datengenerierung werden die alten Storages gelöscht. Dabei wurden bisher die alten Dokumente in den Speicher geladen was zu einem OOM führen konnte und die Datengenerierung sofort abbrach. Dies wurde nun behoben.

Wenn beim Aufruf einer Prepared Search in der Solr Query eine Gruppierung verwendet wurde, wurde eine Exception geworfen. Dies wurde nun behoben.

Tags: Cockpit, Sprachen


Es ist nun möglich im Cockpit zwischen den Sprachen Deutsch und Englisch zu wählen. Die Auswahl wird automatisch im Profil gespeichert und beim nächsten Login verwendet. Sollte im Profil noch keine Sprache eingestellt oder diese ungültig sein, so wird die konfigurierte Sprache des Browsers verwendet. Konnte auch hier keine gültige Sprache festgestellt werden wird Englisch verwendet.

Es wurden neue Sprachen hinzugefügt: Litauisch und Serbisch.


Es wurde ein Fehler behoben welcher bei Datengeneratoren welche die gleichen Seiten crawlen zu Anzeigeproblemen geführt hat. Teilweise wurde die Daten der Seiten angezeigt, die der älteste Datengenerator angelegt hatte, auch wenn ein anderer Datengenerator ausgewählt wurde.

Ein Fehler beim Spellcheck bei der Wildcardsuche wurde behoben.

Die Dokumentation wurde erweitert (z.B. um das Thema Highlighting).

Im Bereich der Datengenerierung wurde das Logging angepasst, um sprechendere Loggingausgaben auf niedrigeren Logleveln zu erzeugen.

Die Abfrage gegen den SOLR wurde von GET auf POST umgestellt. Bei Abfragen mit vielen Sprachen konnte es auf Grund der Anzahl der Felder zu zu langen URLs kommen. Dies wurde behoben.

Tags: Local Storage


Beim löschen eines Storages wurde bisher nur der Eintrag in der Meta Daten Tabelle zu den Storages gelöscht. Jetzt wird zusätzlich auch die zugehörigen Einträge in der Dokumenten Tabelle gelöscht.

Tags: Local Storage


Nach dem Löschen wird nun auch ein CHECKPOINT DEFRAG aufgerufen um den Festplattenplatz auch wieder frei zu geben.

Tags: Stopwords


Die Standard Stopwörter von Sprachen mit mehr als 2 Zeichen in der Abkürzung (zh_tw und zh_cn) wurden nicht importiert. Dies wurde nun behoben.

Tags: Hot Injection, Direct Commit, *Rest API+


Hot-Injection: Die Hot-Injection dient dazu, einzelne Daten schnell und isoliert in den Index zu übertragen. Hierzu ist ein neuer REST-Endpunkt verfügbar.

Direkter Commit: Im Backend ist für Mitglieder der Admin-Gruppe ein Knopf verfügbar welcher die flüchtigen Daten direkt an den SOLR-Server Überträgt.

Die REST-API ist aus Performancegründen nun stateless.


Synonyme ignorieren nun Groß- und Kleinschreibung.

Tags: Prepared Searches, Spellcheck


Der Spellcheck berücksichtig nun die Sprachen. Werden bei einer Suchanfrage mehrere Sprachen verwendet, werden Vorschläge über alle Sprachen gebildet und nach Treffer im Index sortiert.

Tags: XML Sitemap

Sitemap-XML-Dateien (und Sitemap-Index-XML-Dateien) werden nun im Kontext des Webcrawlers automatisch erkannt sowie abgearbeitet. Aus dem Frontend wurden die entsprechenden, nun unnötigen Konfigurationsflags an den Datengeneratoren entfernt.

Die Statistik-Anforderungsmaske validiert nun die eingegeben Daten auf sinnhafte Eingaben (Startzeitpunkt vor Endzeitpunkt, Endzeitpunkt nicht in der Zukunft)

Die Funktion 'Autocomplete' beachtet nun die für die Sprache konfigurierten Stopwords und Synonyme.


Die Auswahl "Neues Storage erstellen" bei der Datengenerierung hat nun den gewünschten Effekt. Der Webcrawler respektiert nun bei entsprechender Konfiguration die robots.txt. Das Hinzufügen einer Facette innerhalb eines Groovy-Enhancers funktioniert nun.

Tags: Webcrawler, Migration

Implementierung von Spracherkennung aus HTML-Tags basierend auf der in der Dokumentation vermerkten Reihenfolge.


Beim Import von Prepared Searches wurde fehlerhaft im Feld der Datageneratoren die Return Fields gesetzt. Dies wurde behoben.

Tags: ACL, Statistik

Implementierung von Mehrfachauswahl und -löschen auf Listenseiten bezüglich Usern und Usergruppen.

Implementierung des Downloads von Auswertungen als CSV auf der Statistikseite. In der zur Verfügung stehenden Datei stehen für den gewählten Zeitraum:

  • Ausgewertete PreparedSearch
  • Suchanfragen insgesamt für die gewählte PreparedSearch
  • Auflistung der einzelnen Suchbegriffe.

Implementierung eines Sicherheitsmechanismus, durch welchen der User 'admin' sowie die Gruppe 'admin' nicht mehr aus dem System zu entfernen ist. So ist ein Aussperren aus dem System verhindert. User in der Gruppe 'admin' können dieser nach wie vor zugeweisen und aus ihr entfernt werden.


Behebung von Fehlern beim Deaktivieren/Auswählen von Elementen auf der Benutzer- sowie Gruppenansicht.

Tags: Breadcrumb, Content Recommendation, AdaptableResult, Datengeneratoren

Implementierung der Breadcrumb-Funktionalität auf allen Listen- und Detailansichten des Backends. Hierdurch wurde eine intuitivere Navigationsmöglichkeit zwischen Listen- und Detailansichten geschaffen.

Bei Erstellen einer ContentRecommendation stehen nun die verfügbaren PreparedSearches als Dropdown zur Verfügung und müssen nicht wie bisher als Freitext eingegeben werden.

Beim Editieren eines AdaptableResults können nun beliebig viele Treffer nachgeladen werden um die Anpassungsmöglichkeiten per Elevations und Excludes zu erweitern.


Behebung von Fehlern bei der Auswertung der Datengenerator-Konfiguration, die zur Nichtbeachtung der Mindestanzahl von Dokumenten welche zur Synchronisation nötig sind geführt haben.

Behebung von Fehlern beim Speichern der Datengenerator-Konfiguration, die zur Nichtausführung bei wöchentlichen Startzeitpunkten geführt haben.

Behebung eines Fehlers der bei Nichtauswahl eines Datengenerators in einer PreparedSearch-Konfiguration die Daten aller Datengeneratoren durchsucht hat.

Behebung von Fehlern beim Speichern der Datengenerator-Konfiguration, die zur Nichtbeachtung der Enhancer-Reihenfolge geführt haben.

Behebung eines Fehlers an der ContentRecommendation-REST-Schnittstelle.

Tags: Spracherkennung

Verbesserung der automatischen Spracherkennung bei Datengeneratoren.


Behebung von Fehlern beim Editieren, Speichern und Zurücksetzen von Elevations und Excludes an einem AdaptableResult.

Tags: Testing

Anpassung des internen Testframeworks.


Behebung von Anzeigefehlern in der Datengenerator-Listenansicht und der Statistik-Ansicht.

Tags: PartialMatch, Testing

Update verschiedener interner Abhängigkeiten.

Anpassung des internen Testframeworks.


Generische Textfelder (ohne Sprachbehandlung) werden mit einem eigenen Filter behandelt um die Möglichkeit einer PartialMatch-Suche zu haben. Somit ist auf diesen Feldern eine Suche nach Wortbestandteilen möglich.

Die Wildcard-Suche mittels "*" als Querybestandteil ist somit nicht mehr unterstützt.

Tags: GroovyScript, AdaptableResult

Möglichkeit der Validierung von GroovyScript im Backend implementiert.


Fehler beim Editieren eines bestehenden AdaptableResults behoben.

Tags: Bugfixes, Internationalisierung, Prepared Search, Datengeneratoren

Es werden ab dieser Version spezielle jars im Classpath auf dem SOLRCloud-Server benötigt. Diese jars sind im SOLRCloud-Download enthalten (Verzeichnis 'contrib') müssen aber von Hand in den Classpath verschoben werden. Diese jars sind:

  • morfologik-stemming-X.Y.Z
  • morfologik-fsa-X.Y.Z
  • morfologik-polish-X.Y.Z
  • lucene-analyzers-morfologik-X.Y.Z
  • lucene-analyzers-smartcn-X.Y.Z

Neue Sprachen

Es wurden weitere Sprachen in der Konfiguration hinzugefügt:

  • Bulgarisch
  • Tschechisch
  • Traditionelles Chinesisch
  • Simples Chinesisch
  • Dänisch
  • Finnish
  • Georgisch
  • Griechisch
  • Ungarisch
  • Koreanisch
  • Lettisch
  • Norwegisch
  • Polnisch
  • Portugiesisch
  • Rumänisch

Zu allen Sprachen wurde auch eine Default Stopwordliste hinzugefügt und getestet ob die automatische Erkennung funktioniert.

Wichtig: Diese Konfiguration funktioniert nur, wenn die SOLRCloud-Installation folgende jars im Classpath besitzt:

  • morfologik-stemming-X.Y.Z
  • morfologik-fsa-X.Y.Z
  • morfologik-polish-X.Y.Z
  • lucene-analyzers-morfologik-X.Y.Z
  • lucene-analyzers-smartcn-X.Y.Z


Das Feld 'content' wurde als deustches Feld behandelt. Dies wurde behoben und wird nun wie die anderen Textfelder auch, wie ein Textfeld ohne Sprachverarbeitung behandelt.

Die Anzeige beim Konfigurieren der Mindestanzahl an Treffer bei der Facette war im Fall des Wertes 0 falsch. In diesem Fall wurde funktionial der Wert 0 verwendet, die Anzeige im numerischen Feld war aber 1. Dies wurde behoben.

Der Threadpool zum Starten von Datengeneratoren wurde bisher nicht ausreichend verwendet und so nur ein Datengenerator ausgeführt (im Gegensatz zu parallelem Lauf). Dieses wurde behoben und jetzt wird die konfigurierte Anzahl an Threads und damit parallelen Datengeneratoren verwendet.

Tags: Statistiken, Synonyme

Die Anzeige der Statistiken wurde um eine zweite Sortierung erweitert. Zunächst werden die Top-Suchbegriffe nach Anzahl der Suchen sortiert, und daraufhin alphabetisch.

Die Editierseite für die Synonyme wurde freigegeben. Diese wurden umgestellt auf die Unterstützugn der einzelnen Sprachen.

Tags: Spracherkennung, Prepared Search

Das Erkennen der Sprache anhand des Textes im Content basiert auf einer statistischen Datenbasis. Diese wurde unter Umständen beim Starten von haupia nicht eingelesen und damit konnte die Sprache nicht erkannt werden und es wurde immer der konfigurierte Fallback verwendet. Aus diesem Grund wurde die Datenbasis in den 'shared resources '-Bereich verlagert und wird dort beim Starten eingelesen.

Wenn bei einer Suche ein leerer String an den PreparedSearch-REST-Service übergeben wurde hat das bisher einen Fehler '500' ausgelöst. Dies wurde jetzt auf einen 400er (Bad Request) geändert mit einem leeren Suchergebnis im Body.

Die Übergabe eines leeren Suchbegriffs an den PreparedSearch-REST-Service löste bisher einen Fehler '500 - Internal Server Error' aus. Nun wird hierauf mit dem Fehler '400 - Bad Request' und einem leeren Suchergebnis geantwortet.

Tags: intern

Nur interne Änderungen.

Tags: intern

Nur interne Änderungen.

Tags: Browser, Logging, Prepared Search Konfiguration, Datengenerator Konfiguration

Der Browser im Backend wurde komplett überarbeitet. Das Layout wurde vereinfacht und alle Buttons sind nun voll funktionsfähig. Die Liste mit den Dokumenten lädt nun automatisch nach, wenn man Nahe dem Ende ist.

Beim Starten wurden WARN Meldungen bzgl. von HQL Abfragen ausgegeben. Diese wurden behoben.

Die Eingabe des Namens bei den PreparedSearches und Datengeneratoren akzeptiert nun keine Leerzeichen mehr.

Die SOLR-Collection für die statistische Erhebung wurde auf eine verträglichere Namenskonvention umgestellt.

Ein Mechanismus zur Vermeidung vom Problemen bei der Nutzung verschiedener SOLR-Versionen wurde implementiert.

Tags: Internationalisierung, Sonderzeichen

Bei der Synchronisierung wird nun geprüft, welcher Art ein Feld ist und gegebenenfalls internationalisiert. Alle Textfelder sind somit internationalisiert.

Spezielle Sonderzeichen werden nun vor dem Tokenizer maskiert, um diese als Inhaltliches Zeichen zu erhalten. Diese Sonderzeichen sind:

  1. §
  2. $
  3. %
  4. &
  5. °
  6. @
  7. #
  8. ²
  9. ³

Tags: Autocomplete, Internationalisierung, Did you mean

Das Autocomplete unterstützt nun auch den Parameter 'language'.

Die Funktion 'Did you mean' berücksichtigt nun alle Filter, die bei der Abfrage verwendet worden sind. Dadurch werden nur Vorschläge zurückgegeben, die bei Berücksichtigung der aktuellen Filter Ergebnisse liefern. So werden auch die Sprachfilter automatisch unterstützt.

Tags: ContentRecommendation Konfiguration

Überarbeitung der Handhabung von ContentRecommendations. Alle Komponenten wurden überarbeitet, um einen einfacheren Ablauf beim Konfigurieren von ContentRecommendations zu ermöglichen.

Tags: Multi-Cluster Sync, Prepared Search Konfiguration

Ein Fehler beim Paginieren während der Synchronisation wurde behoben. Es wurde ein Fehler behoben der dafür sorgen konnte, dass nicht mehr als 1000 Elemente pro Datengenerator synchronisiert werden konnten.

Auf der PreparedSearch-Editierseite wurde bei der Auswahl der Felder die Checkbox "verbose" hinzugefügt. Ist diese angewählt werden alle Felder zur Auswahl angezeigt. Ist diese abgewählt wird nur ein Subset angezeigt und selten verwendete Felder ausgeblendet.

Tags: intern

Nur interne Änderungen.

Tags: Internationalisierung, Datagenerator WEB

Im Schema konfigurierte Sprachen werden nun automatisch erkannt. Diese müssen sich bei der Benamung an den folgenden regulären Audruck halten: "^text_general_([a-z]{2})". Der 'Typename' beginnt mit "text_general_" gefolgt von der Länderkennung, bestehend aus zwei Buchstaben. Auf der Datengenerator-Konfigurationsseite werden die Sprachen als mögliche Werte für die Standardsprache des Datengenerators angeboten.

Die default schema.xml wurde um folgende Sprachen erweitert:

  1. French
  2. Dutch
  3. Spanish
  4. Russian
  5. Turkish
  6. Italian
  7. Swedish

Beim Erfassen einer Webseite durch den Webcrawler wird der Inhalt des erfassten 'title' nicht mehr dem erfassten 'content' vorangestellt. Der 'content' besteht damit nur mehr aus Inhalten aus dem 'body' des Dokuments.

Tags: Stopwörter, Internationalisierung

Es können nun Stopwörter bezogen auf die internationalisierten Felder im Backend bearbeitet werden.

Tags: Groovy, Prepared Search Konfiguration

Die Frontendkomponente zur Anzeige der Groovy-Skripte wurde komplett überarbeitet und zeigt nun zuverlässig das Skript an.

Bei der PreparedSearch-Konfiguration werden die internationalisierten Felder zusammengefasst und nur als ein Feld angezeigt.


The Technical Support of the e-Spirit AG provides expert technical support to customers and partners covering any topic related to the FirstSpirit™ product. You can get and find more help concerning relevant topics in our community.