Skip to content
This repository has been archived by the owner on Aug 30, 2022. It is now read-only.

Smarti 0.6.1

Compare
Choose a tag to compare
@ja-fra ja-fra released this 08 Jan 12:55

Smarti 0.6.1 is a security feature release, that also covers several improvements to optimize Smarti’s resource consumption behavior. This is the first Smarti release, that has a Docker image as part of its distribution.

Smarti 0.6.1 is 100% compatible to chatpal-search - A Rocket.Chat package for search with chatpal backend. So Smarti can be used as cross-channel search engine for Rocket.Chat.

New in Smarti 0.6.1

From the feature perspective Smarti 0.6.1 introduces a simple user management including form based user authentication as well as token based system authentication. Users having the role ADMIN are allowed to manage clients, configurations, conversations, users and tokens. Regular Smarti users are only permitted to manage configurations and conversations of specific clients. Tokens are designed to access the Smarti API by technical systems/users.

The Smarti Admin UI allows you to:

  • manage (create, change and delete) users,
  • permit users access to specific clients,
  • generate tokens to allow technical access,

Improved in Smarti 0.6.1

  • #60 - Added a user authentication model
  • #118 - Added a Smarti Docker image
  • #142 - Added Docker image to the release deployment
  • #121 - Added highlighting for Conversation Search
  • #164 - Added a configuration option to trigger a full reindex on system startup
  • #152 - Improved Docker image memory consumption by using the JVM option MaxRAMFraction
  • #124 - Improved Docker image for running database migration scripts on startup
  • #145 - Improved cpu consumption for a configuration that allows to set the executor service pool size
  • #147 - Improved memory consumption to run Smarti with -Xmx4g
  • #101 - Improved plugin information file to be consumed by ruby scripts
  • #136 - Improved widget by using x-auth-token HTTP headers for $.ajax calls
  • #116 - Improved widget by adding a button to clear all keywords
  • #128 - Improved widget presentation by trimming labels of long keywords
  • #155 - Fixed issue where no related conversations have been displayed if no tokens have been extracted
  • #162 - Fixed issue where the conversation index runs out of synch when running Smarti on two or more instances
  • #157 - Fixed issue where no search results have been displayed if keywords containing a # (hash) were extracted
  • #128 - Fixed missing line breaks when very long keywords have been extracted e.g. URLs
  • #165 - Fixed some out dated references within the documentation

Upgrading

Stanford-NLP

For improved memory efficiency, smarti now uses Stanford-CoreNLP v3.8.0. If you added the Stanford-NLP dependencies in previous versions, you must update those libraries. Please refer to the Installation Guide for details.

Configuration

The following changes in the configuration files are recommended:

application.properties

+ nlp.stanfordnlp.de.parseModel=edu/stanford/nlp/models/srparser/germanSR.ser.gz
+ nlp.stanfordnlp.de.parseMaxlen=40

- security.password=
+ security.config.mongo.admin-password=

+ smarti.migration.mongo.script-home=/usr/share/smarti/scripts

logback.xml

- <logger name="io.redlink.nlp" level="DEBUG"/>
+ <logger name="edu.stanford" level="INFO"/>
+ <logger name="io.redlink.nlp" level="INFO"/>

Client-Configuration
Previous client-configurations for solrsearch-query-builders might require an update of their default settings: While in previous versions those parameters needed to be url-encoded, this is now happening within the component.

A migration-script is available and applied automatically on starup:

function runDatabaseMigration() {
    var clientConfig = db.getCollection('configuration');

    clientConfig
        .find({'config.queryBuilder': { $elemMatch: { type: 'solrsearch' }}})
        .forEach(function (configuration) {
            configuration.config.queryBuilder.forEach(function (builder) {
                if (builder.type !== 'solrsearch') return;

                var convertedDefaults = {};
                for (var k in builder.defaults) {
                    if (builder.defaults.hasOwnProperty(k)){
                        try {
                            convertedDefaults[k] = decodeURIComponent(builder.defaults[k]);
                        } catch (e) {
                            print('Could not uri-decode "' + k + "' of config '" + builder.name + "' for client '" + configuration.client + "'." +
                                " Keeping unmodified parameter '" + builder.defaults[k] + "'");
                            convertedDefaults[k] = builder.defaults[k];
                        }
                    }
                }
                builder.defaults = convertedDefaults;
            });

            clientConfig.save(configuration);
        });
}