Changelog ========= Version 2 --------- Version 2.7.2 - Fix release version reference in pom.xml Version 2.7.1 - Migrate image base to java 25 - Update vulnerable dependencies: undertow, micrometer, logback, jackson - Minor updates of other dependencies: slf4j, feign Version 2.7.0 - Result-Modifications can switch from in-memory lookup to Payload-Access lookup - Replace parent-pom with managed dependencies Version 2.6.3 - Fix wrong warning regarding empty preload-tenant - improved dependency management Version 2.6.2 - Update vulnerable dependencies: undertow, logback, feign/okhttp - Fix slim service image contains unused dependencies Version 2.6.1 - Update Jackson dependency - Fix shading failures that lead to missing fuzzy-mapping Version 2.6.0 - Replace Bloomfilter with Cuckoo filter for less useless fuzzy lookups - Service: utilize Cuckoo filter for filtering already reported stats - Lib: Shade some partial used utility dependencies into library to reduce transitive dependencies - Fix missing meters of fuzzy-mapping-stats Version 2.5.5 - For query-testing skip splitting completely on test-ratio 0 Version 2.5.4 - Update dependencies - Reduce GC-load by reusing empty mapping obj Version 2.5.3 - Fix missing metrics - Fix application name and version reporting Version 2.5.2 - Add info endpoint that exposes version (service only) - Reintroduce configurable management-endpoint prefix (service only) Version 2.5.1 - Update dependencies + fixing dependency version conflicts Version 2.5.0 - Align version with API and all our other modules, increasing compatibility - Internal refactoring to reuse common tested codebase - Dependency updates Version 2.4.0 - Migrate storage for infused products to memory efficient memory mapped key-value storage (rocksDB) Version 2.3.3 - Fix potential NPE for cluster without masterQuery (e.g. only redirect) Version 2.3.2 - Update preDict library (to 1.1.2) - Ensure compatibility with smartSuggest (v1.4.2) Version 2.3.1 - Fixing micrometer version conflict - Migrate authentication to spring recommendation Version 2.3.0 - Expose 'resultModifications' coming from NeuralInfusion(R) - Add extended integration with SearchCollector sessionId to support better query-testing - Add improved support for timed redirects - Removed compatibilty to Java 8 - Unify dependencies with smartSuggest module Version 2.2.0 - Cache fuzzy mapping results (generated by preDict) - Use bloom filter to skip known unmappable queries - Use small LRU cache for matching mappings - Expose Caching metrics - Make cache & filter parameters configurable Version 2.1.2 - Update vulnerable feign to fixed version 13.2.1 - OCS Plugin: update OCS SPI version - Update to predict 1.0.8 w/o unnecessary dependencies 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