Changelog

Version 2

Version 2.1.1

A single fuzzy match is not used as master-query mapping anymore, instead just as a potential correction

Version 2.1.0

Expose Api2.1 features: resultModifications + relatedQueries

Version 2.0.5

Update fuzzy-mapping library preDICT

Version 2.0.4

Improve fuzzy-mapping (more normalization to get rid of unwanted effects)

Version 2.0.3

Don’t return the user query as part of the potentialCorrections

Version 2.0.x
  • Update internal API to version 2 (new data exchange format)

  • Use Minimal-Perfect-Hash Map implementation to reduce memory-footprint

  • Add fuzzy lookup of queries that can’t be mapped directly

  • Add potentialCorrections in response in case of ambiguous corrections (usable for “did you mean” feedback)

Version 1

Version 1.3.1

Fix NPE for invalid queries

Version 1.3.0
  • Add isSameIntend to QueryMapper

  • Improve java-doc for mapQuery

  • Fix potential NPE

  • ocs-smartquery-plugin: Add support for redirect response

Version 1.2.12
  • spring-boot update

  • Improve documentation around the changes of spring-boot

Version 1.2.11
  • Improve precision around ‘FingerprintQueryMapper’ (a minimal fuzzy mapper)

  • Fix error in unicode handling

Version 1.2.10
  • Update to spring-boot 2

  • Build docker image for smartQuery service with custom base-image

  • Track smartQuery app type (part of mapping stats)

Version 1.2.9

Internal DevOps fixes

Version 1.2.8
  • Update dependencies

  • Improve documentation

Version 1.2.7

Update stats-collector to 1.3

Version 1.2.6

Fix dependency problem with stats-collector

Version 1.2.5

Update internal API to 1.6

Version 1.2.4

Update internal API to 1.5

Version 1.2.3

Updated internal API to 1.4

Version 1.2.2

Fix: QueryMapper keeps data even if no updates are possible anymore (Since version 1.1 it could happen, that if data update failed, smartQuery stopped doing the mappings)

Version 1.2.1
  • Update to latest searchHub API with extended data models

Version 1.2
  • Add OCS smartQuery Plugin

  • Update to stats-collector 1.2 (update to latest searchHub API version) fixing dependency divergence

Version 1.1
  • Add data modification time to tracked mappings

  • Add update reschedule limiter, that decreases update rate for failing updates

  • Add validation of data modification time, fixing potential update failures that cause old data not being replaced

  • Improve concurrency safety

  • Improve logging (also for all kind of uncaught critical errors)

  • Improve documentation

Version 1.0.14

Improve mapping by doing minimal normalization on user input step by step

The impact is a higher mapping rate: User-Input with multiple spaces or other useless characters were not mapped before, even if there practically was a mapping for it

Version 1.0.13

Optimized dependencies of smartQuery-service, to reduce deployment size

Version 1.0.12
  • Update to stats-collector 1.1.1:

  • Use OKHttp to make proxy communication possible through feign

  • Fix usage of optional micrometer dependency

Version 1.0.11

Fix IndexOutOfBoundsException at bypass-query handling

Version 1.0.10

Add QueryMapping.getMasterQuery() method in case old logic should stay the same

Version 1.0.9

Fix scheme parsing at configured http proxy

Version 1.0.8

Add logging for activated http proxy

Version 1.0.7

Fix port-parsing of http proxy variable

Version 1.0.6

Add option for http proxy for searchHub API Access

smartQuery can be used in a secured network to go trough the http-proxy when fetching searchHub data.

Version 1.0.5

Update stats collector

Version 1.0.4
  • Log critical errors (java.lang.Error) that were hidden by background update thread

    Customer admins can know see in the logs, if smartQuery runs into memory issues during data update.

  • Improve rescheduling of broken update task

  • Add timeout to update task

Version 1.0.3

Add documentation for QueryAssessment.isOnlyWordReorder:

This method tells the implementor, if the query was essentially changed or not. It can be used to decide when to show the ‘query correction feedback’

Version 1.0.2
Security Updates
  • Update OpenFeign from 9.5.0 to 10.8

  • Update SLF4j from 1.7.26 to 1.7.30

  • Update Lombok from 1.18.6 to 1.18.12

  • Update Micrometer from 1.1.4 to 1.3.5

Version 1.0.1

Update to fixed stats-collector (wrong data serialization)

Version 1.0
  • Add support for redirect feature

  • Fingerprint mapper picks best master if more than one is matching

  • Track smartQuery version and Java version as user-agent with stats-collector

Version 0

Version 0.11.8

Fix missing tracking of bypassed queries: We get the information about when smartQuery was bypassed, e.g. when a query-correction was reverted

Version 0.11.7

Add Utility method QueryAssessment.isOnlyWordReorder that can be used to avoid displaying ‘search your query instead’ message

Version 0.11.6

Fix potential mapping update flooding due to broken updater

Version 0.11.5

Fix prometheus endpoint must not be secured

Version 0.11.4

Add CORS support, allow all origins

Version 0.11.3
  • Stop smartQuery service if still running from previous job

  • Add potential NPE in MappingUpdater metrics

  • Always log if there are new mapping data

Version 0.11.2
  • Optional basic auth security to smartQuery service

  • Fix missing artifacts to build docker image

Version 0.11.1
  • Reworked Fingerprints to be more precise and avoid conflicts

  • In case of Fingerprint conflict, according mappings are dropped

  • queries are normalized before searching for mappings

Version 0.11.0
  • Added optional monitoring SPI

  • bypass-query: User queries that are quoted (start and end with a quote char ), won’t be mapped

  • Improved QueryMapperManagerBuilder to support preloading tenants

  • Added prometheus endpoint to smartQuery-service that uses the monitoring SPI

  • Added configuration support to smartQuery-service. All options that are available at the QueryMapperManagerBuilder can be configured using application.properties and/or startup parameters

Version 0.10.7
  • Deprecated: Instead using QueryMapperManager setters, use the QueryMapperManagerBuilder to construct a QueryMapperManager instance

  • smartQuery-service uses SQ_INIT_TENANTS env-var to init tenant data on startup

  • QueryMapperManagerBuilder for better QueryMapperManager instance construction

  • Add mappingThreshold and mappingThresholdPerTenant options

  • Stop updates in case of more then 5 consecutive failures. Restart update task, if further used

  • Improve error handling at background update task

Version 0.10.6
  • Add default settings for smartQuery-service

  • Renamed “service” into “smartQuery-service”

Version 0.10.5

smartQuery as http service, packaged as docker container

Version 0.10.4
  • Use tenant specific locale for internal mapper operations

  • Use UTF as API response encoding, instead system default encoding

Version 0.10.3

Remove dependency to guava and commons-lang libraries. Implement required functionality directly

Version 0.10.2

“noop” channel: It’s possible to create a QueryMapper for a tenant with the channel “noop”, that however will never be updated. Stat logs will be collected however.

Version 0.10.0
  • Deprecated: Usage of disableResponseValidation flag is discouraged, since this was only introduced to work around an encoding bug

  • Experimental class QueryMapperManagerFactory to add support for environments without lifecycle management

  • Add stats-collector that sends information about applied mappings to import.searchhub.io

  • Use a ThreadFactory that creates daemon threads for the ScheduledExecutorService. This way a shutdown is not prevented by these threads in case the QueryMapperManager isn’t closed by the application.

Version 0.9.7

Use UTF8 instead system encoding to verify response at ResponseValidator

Version 0.9.6
  • Add disableResponseValidation flag in case response validation fails for unknown reason (Workaround)

  • Add more java-doc

  • Updater stops in case request is returned as unauthenticated