This document shows the changes that are introduced into Smarti with the releases.
Smarti 0.8.0 Release Notes
Smarti 0.8.0
introduces a new result provider "Rocket.Chat-Search", providing live search on the integrated
Rocket.Chat search functionality.
New in Smarti 0.8.0
Upgrading
To ensure that the improved analysis result is available for all users, you should clear the collection caching analysis results.
Furthermore, all client-configurations that have the classical conversationsearch
enabled get the new
rocketchatsearch
endpoint added.
A migration script is available. If you are not using one of the provided installation packages (deb, rpm) or docker, you must apply it manually:
function runDatabaseMigration() {
// Drop analysis cache
db.getCollection('analysis').drop();
// Configure chatpal-provider for all clients that have a conversationsearch provider enabled
var configuration = db.getCollection('configuration');
var configs = configuration.find({ $and: [
{'config.queryBuilder': { $elemMatch: { type: 'conversationsearch' }}},
{'config.queryBuilder': { $not: { $elemMatch: { type: 'rocketchatsearch' }}}},
]});
configs.forEach(function (c) {
var conversationSearch = c.config.queryBuilder.find(function(b) { return b.type === 'conversationsearch'; });
configuration.update({_id: c._id}, {
$push: {
'config.queryBuilder': {
name : 'rocketchatsearch',
displayName : 'rocketchatsearch',
type : 'rocketchatsearch',
enabled : conversationSearch.enabled,
unbound : false,
configuration : {
excludeCurrentChannel : false,
payload : {
rows : 10
}
}
}
}
});
});
}
Smarti 0.7.7 Release Notes
Sept 11th, 2018
Smarti 0.7.7
contains minor bug fixes for the Samrti Widget and deactivated filters for conversation search
Smarti 0.7.6 Release Notes
June 18th, 2018
Smarti 0.7.6
contains bug fixes for the Samrti Widget the Conversation Search and the synchronization of the Conversation Index
New in Smarti 0.7.6
Smarti 0.7.5 Release Notes
June 14th, 2018
Smarti 0.7.5
contains a bug fixe for the Samrti Widget
New in Smarti 0.7.5
Smarti 0.7.4 Release Notes
June 13th, 2018
Smarti 0.7.4
contains bug fixes to Smarti and the Samrti Widget
Smarti 0.7.3 Release Notes
May 15th, 2018
Smarti 0.7.3
contains a fix to the Chatpal Backend
New in Smarti 0.7.3
Smarti 0.7.2 Release Notes
May 14th, 2018
Smarti 0.7.2
is contains improvements to to the Chatpal Backend and posting of multiple
messages in the Widget
Smarti 0.7.1 Release Notes
April 20th, 2018
Smarti 0.7.1
is contains several improvements for analysis quality and some bugfixes.
New in Smarti 0.7.1
-
#203 - Preamble of posted conversation / message must not be analyzed
-
#217 - Indicate for Queries that they are not valid without user added tokens
-
#227 - Make i18n messages (preamble of posted conversation) configurable
-
#230 - Improve toggle conversation context in the Smarti widget
-
#242 - Clicking the include Message checkbox expands the Result
-
#225 - Automatic reloading of results does not work as expected
-
#232 - Bug: Put a message which does not exist results in error 500
-
#237 - Widget: "Post selected messages" button is not shown when room is closed
-
#241 - Posts of SolrSearch DataSources does not work in 0.7.1RC2
Upgrading
To ensure that the improved analysis result is available for all users, you should clear the collection caching analysis results.
A migration script is available. If you are not using one of the provided installation packages (deb, rpm) or docker, you must apply it manually:
function runDatabaseMigration() {
db.getCollection('analysis').drop();
}
Smarti 0.7.0 Release Notes
February 28th, 2018
Smarti 0.7.0 is a refactoring release, and introduces an improved webservice API.
New in Smarti 0.7.0
Upgrading
With 0.7.0
, the datamodel has changed so data from older installations
must be migrated to the new model.
A migration script is available and must be applied manually:
function runDatabaseMigration() {
var conversations = db.getCollection('conversations');
conversations.update({tokens: {$exists: true}}, {
$unset: {
channelId: true,
tokens: true,
queryTemplates: true,
'meta.lastMessageAnalyzed': true
}
}, {multi: true});
}
Smarti 0.6.1 Release Notes
January 8th, 2018
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
-
#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
-
#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
-
#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:
+ 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
- <logger name="io.redlink.nlp" level="DEBUG"/>
+ <logger name="edu.stanford" level="INFO"/>
+ <logger name="io.redlink.nlp" level="INFO"/>
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);
});
}
Smarti 0.6.0 Release Notes
November 30th, 2017
Smarti 0.6.0 is a search feature release. Conversations stored in Smarti can now be searched explicit, there is no need to create conversations in order to search within the knowledge base anymore. Smarti 0.6.0 enables more relevant suggestions for conversations by introducing conversation-filtering.
New in Smarti 0.6.0
This release introduces a brand new search API that allows:
-
explicit full text search over all the stored conversations,
-
filtering related conversations based on meta data such as classifications or topics,
-
paging over suggestions, that can be configured.
Improved in Smarti 0.6.0
-
#87 - Improved suggestions by filtering the related conversations by topics/expertise
-
#39 - Improved suggestions by enabling paging and making the number of suggestion configurable
-
#91 - Improved component configuration for more flexible label configuration
-
#64 - Improved documentation by auto-generating the 'swagger.json' at build time
-
#90 - Fixed issue where document icons were not displayed correctly
-
#104 - Fixed issue the generated swagger-file has a broken schema
Upgrading
redlink-nlp
has been upgraded to use StanfordNLP v3.8. Please upgrade your locally installed
libraries of stanford core-nlp
.
Configuration
Starting with 0.6.0
recommended conversations (conversationmlt
and conversationsearch
) can be
restricted to the same support_area
. To enable this feature, update the configuration to contain the
following settings:
{
"filter": [
"support_area"
]
}
Database
With 0.6.0
, the datamodel has changed so data from older installations
must be migrated to the new model.
A migration script is available. When using the installation packages, the migration will happen automatically on the first startup. Alternatively, the following script must be applied manually:
function runDatabaseMigration() {
var conversations = db.getCollection('conversations');
// migrate channel_id and support_area to meta.properties (#87, #99)
conversations
.find({
'meta.properties': {$exists: false}
})
.forEach(function (c) {
var metaProps = {};
if (c.meta && c.meta.tags) {
metaProps.tags = c.meta.tags;
}
if (c.context && c.context.environment) {
if (c.context.environment.channel_id) {
metaProps.channel_id = [c.context.environment.channel_id];
}
if (c.context.environment.support_area) {
metaProps.support_area = [c.context.environment.support_area];
}
}
conversations.update({
_id: c._id
}, {
$set: {
'meta.properties': metaProps
},
$unset: {
'meta.tags': true
}
});
});
return 'success';
}
Smarti 0.5.0 Release Notes
September 18th, 2017
Smarti 0.5.0 is a technical architecture release. For now basic decisions about the fundamental software design are not complete. In short this version of Smarti solves some security aspects, ensures backward compatibility to version 0.3.0 and fixes some bugs. Next to a new comprehensive development documentation Smarti 0.5.0 introduces lifecycle management for stored conversations.
New in Smarti 0.5.0
This release introduces an API that allows to manage the lifecycle of stored conversation, including:
-
JSON-based im- and export of conversations,
-
mark conversations obsolete by setting an expiration date,
-
authors may now edit their conversation’s texts or remove messages
Improved in Smarti 0.5.0
-
#37 - Added support for JSON-based conversation im- and export
-
#55 - Added a complete documentation for the
application.properties
-
#12 - Added support for integrated Swagger UI in order to access REST API documentation
-
#56 - Improved the client model in order to implement the authentication concept
-
#31 - Fixed issue where greetings like 'Hi' have been extracted as keywords
-
#46 - Fixed issue where clients have been allowed to access conversations of other clients
-
#53 - Fixed issue where queries have to be recalculate if the client configuration has changed
Upgrading
With 0.5.0
, the datamodel has changed so data from older installations
must be migrated to the new model.
A migration script is available. When using the installation packages, the migration will happen automatically on the first startup. Alternatively, the following script must be applied manually:
function runDatabaseMigration() {
var conversation = 'conversations',
configuration = 'configuration',
client = 'client';
// create all clients
db.getCollection(conversation).aggregate([
{$match: { owner: { $exists: false }}},
{$project: {domain: '$context.domain'}},
{$group: {_id: '$domain'}},
{
$project: {
_id: 0,
name: '$_id',
lastUpdate: {$literal: ISODate()},
defaultClient: {$literal: false}
}
},
{$out: client}
]);
db.getCollection(client).find().forEach(function (c) {
db.getCollection(conversation).update(
{'context.domain': c.name},
{$set: {owner: c._id}},
{multi: true}
);
db.getCollection(configuration).update(
{client: c._id},
{
$setOnInsert: {
created: new ISODate(),
modified: new ISODate(),
config: {
"queryBuilder": [
{
"name": "conversationmlt",
"displayName": "Related Conversations",
"type": "conversationmlt",
"enabled": true,
"unbound": false,
"configuration": {}
},
{
"solrEndpoint": "http://host.domain.org:8983/solr/change-me",
"search": {
"title": {
"enabled": false,
"field": ""
},
"fullText": {
"enabled": true,
"field": ""
},
"spatial": {
"enabled": true,
"locationNameField": ""
},
"temporal": {
"enabled": false
},
"related": {
"enabled": false,
"fields": []
}
},
"defaults": {
"rows": 10,
"fields": "*,score"
},
"result": {
"numOfRows": 10,
"mappings": {
"title": "title",
"description": "description",
"type": "type",
"doctype": "doctype",
"thumb": "thumb",
"link": "link",
"date": "date",
"source": "source"
},
},
"name": "search-endpoint-0",
"displayName": "Search Endpoint",
"type": "solrsearch",
"enabled": false,
"unbound": false,
"configuration": {},
"_class": "io.redlink.smarti.query.solr.SolrEndpointConfiguration"
},
{
"name": "conversationsearch",
"displayName": "conversationsearch",
"type": "conversationsearch",
"enabled": true,
"unbound": false,
"configuration": {}
}
]
}
}
},
{upsert: true}
);
});
return 'success';
}