Sesat > Docs + Support > Upgrade Guides > 2.18 Upgrade
"2.18 not 100& API-stable branch"
Ongoing development in sesat-user (part of sesat-admin) is creating some small api breakages along the way. It is otherwise stable and production ready.

There also exits a presentation running through the new features in 2.18.

Compatibility changes

Sorting parameter only applicable to search command with sorting navigator (26th May '08)

SKER4750 - Only main search should use sort order set in the URL
Implemented behavior similar to SearchCommand.isPaginated() & AbstractSearchCommand.getOffset()
Added API:

  • SearchCommand.isUserSortable() returns true for search command's that have an applicable navigator, ie id="sort"
  • AbstractSearchCommand.getUserSortBy() returns the userSortBy parameter if true == isUserSortable()
    It's now mandatory that the sort navigator defines the search command applicable via the command-name attribute.
SearchConfiguration subclasses must meet javabean specification (26th June '08)

Issue SKER4404: (Automatically assign config settings in readSearchConfiguration where there is a setter)
Changed API:

  •'s config attribute changed from field to age-field.
  •'s getResultFields changed to getResultFieldMap.
  •'s getFieldFilters changed to getFieldFilterMap.
Token Evaluator SPI (7th July '08)

SKER3540 - Token Evaluator SPI
TokenPredicate exploded into more stable objects. Evaluators no longer hardcoded into kernel.
Evaluators are loaded through their corresponding AbstractEvaluatorFactory implementation.
Factories are registered via, and answer whether they are responsible for a TokenPredicate through isResponsibleFor(tokenPredicate).
The TokenEvaluator is fetched through the factory as well through getEvaluator(tokenPredicate). The factory encapsulates whether the one evaluator can be used for all queries, and/or for all tokens.
The skin's project for evaluator implementations is query-evaluation, and the kernel loads classes through Spi.QUERY_EVALUATION.

Added API:

  • new class AbstractEvaluatorFactory
  • factory implementations JepEvaluatorFactory, FastQueryMatchingEvaluatorFactory, and RegexpEvaluatorFactory added
  • new class AbstractTokenPredicate (solid equals and hashCode overrides to satisfy interface constraint that name is unique across all implememtations - allowing exactPeer() to be used more exactly)
  • AbstractEvaluatorFactory.Context requires method "String getUniqueId()" as datamodel.parameters.uniqueId is not available. This contextual addition creeps back through TokenEvaluationEngine.Context and AnalysisRulesFactory.Context

Changed API:

  • TokenPredicate.Categories moved out to own class as Categories
  • TokenPredicate.Type moved out to own class as EvaluatorType
  • TokenPredicate.TokenPredicateImpl moved out to own class as TokenPredicateImpl
  • TokenPredicate.ExactTokenPredicateImpl moved out to own class as ExactTokenPredicateImpl
  • TokenPredicate.EvaluationException moved out to own class as EvaluationRuntimeException (remaining an unchecked exception)
  • TokenPredicate.Static moved out to own class as TokenPredicateUtility
  • Categories.EXACT_WIKI renamed to EXACT_WIKIPEDIA (to match non-exact peer)
  • Categories.EXACT_FIRST renamed to EXACT_FIRSTNAME (to match non-exact peer)
  • VeryFastEvaluationException renamed to EvaluationException (remaining a checked exception)

Removed API:

  • TokenPredicate.getType() [ TokenPredicate no longer references TokenEvaluator in any manner ]
  • TokenPredicate.Static.getTokenPredicates(type) [ AbstractEvaluatorFactory responsible now for relationship ]
  • TokenPredicate.Static.getMagicTokenPredicates() [ magic tokens a concept, not sesat ]
  • TokenPredicate.Static.getTriggerTokenPredicates() [ trigger tokens a concept, not sesat ]
sesat-user-api expanded, sesat-user-service removed (24th June '09)

Changed API:

  • sesat-user.jar is no longer bundled with ROOT.war. Therefore it must be manually deployed or put into classpath.
  • sesat-service is no longer a dependency and is completely removed from the sesat stack (sesat-user-service-impl will be introduced with a default BasicUserService implementation).
  • ...more to come...
CorrectingSearchCommand behaviour formalised (22th Jun '09)

Refactor out the Correcting search behaviour from CorrectingFast4SearchCommand into its own interface "CorrectingSearchCommand" and moving a lot of the existing functionality into the helper utility CorrectingSearchCommandUtility making it easy to share through delegation.

The only compatibility breakage here is for subclasses of CorrectingFast4SearchCommand.

Also implement this behaviour on top of the SolrSearchCommand w/ CorrectingSolrSearchCommand.
Changed API:

  • CorrectingFast4CommandConfig now implements CorrectingCommandConfig
  • CorrectingFast4SearchCommand now implements CorrectingSearchCommand
  • CorrectingFast4SearchCommand.correctQuery(..) now public (implementing CorrectingSearchCommand)
  • CorrectingFast4SearchCommand.getCorrectionCount() now public (implementing CorrectingSearchCommand)
  • CorrectingFast4SearchCommand.setCorrectionCount(..) now public (implementing CorrectingSearchCommand)
  • CorrectingFast4SearchCommand.initalise(..) added (implementing CorrectingSearchCommand)

Added API:

  • CorrectingCommandConfig & CorrectingSearchCommand interfaces
  • CorrectingSearchCommandUtility helper class
  • CorrectingSolrCommandConfig + CorrectingSolrSearchCommand implementations

New Features

Selecting content type in layout element in views.xml (2nd July '08)

SKER4919 - Configurable content types
In views.xml//views/tab/layout you can now define the attribute content-type.
Example: <layout main="main" front="index" content-type="text/xml; charset=utf-8"/>
For further flexibility use a jsp page with setContentType(..) in scriptlet code.
Added API:

  • SearchTab.Layout.contentType & SearchTab.Layout.getContentType()
Sesat-ise and standardise decorators (2nd July '08)

SKER4182 - Sesat-ise and standardise decorators
The output parameter was used to select decorators like the rss, og vcard. This is a bit more configurable now. The output parameter has been renamed to layout and refers to the id attribute in the layout element in views.xml.

Example: <layout id="opensearch" main="opensearchDecorator.jsp"/> This will let you use layout=opensearch, and you get forwarded to the opensearchDecorator. If you put this in a views.xml early in the chain, then all pages will have this ability.

For backward compatibility output=xyz rewrites to layout=xyz (see urlrewrite.xml)

Solr Search Command (15th September '08)

SKER4949: (Solr SearchCommand implementation)
Searching can now be configured against a Solr index. Example configuration available commented out in generic.sesam/
Added API:

  • SolrCommandConfig
  • SolrSearchCommand
Solr Token Evaluation (15th September '08)

SKER4952: (Solr TokenEvaluator)
Query evaluation (or Query matching) can now be configured against a Solr index.
Full tutorial on setup and configing exists at Setting up Sesat's Query Evaluation with a Solr index
Added API:

  • SolrEvaluatorFactory
  • SolrTokenEvaluator
Youtube Search Command (26th September '08)

SKER4753: (Promote YoutubeSearchCommand (from Schibsted Søk AS))
Searching can now be configured against Youtube.
Added API:

  • YoutubeCommandConfig
  • YoutubeSearchCommand
Field Splitter result handler (27th September '08)

SKER4752: (Promote FieldSplitter result handler (from Schibsted Søk AS))
Searching can now be configured against Youtube.
Added API:

  • FieldSplitterResultHandlerConfig
  • FieldSplitter
Clustering hit count result handler (27th September '08)

SKER4781: (Promote ClusteringHitCountResultHandler (from Schibsted Søk AS) )
Searching can now be configured against Youtube.
Added API:

  • ClusteringHitCountResultHandlerConfig
  • ClusteringHitCountResultHandler
An Interpreter to help debug and inspect Sesat.

See the page below for info.

Generating XML Schema files for the modes.xml configuration files

We are now generating XML Schema files for the modes.xml files. And validating against these files during build.

See the page below for info.
Search modes schema generator


SiteMesh is no longer a requirement (2nd July '08)

SiteMesh was removed by work done in SKER4182 - Sesat-ise and standardise decorators.

 © 2007-2009 Schibsted ASA
Contact us