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