Apache Solr Changelog

What's new in Apache Solr 9.6.0

Apr 29, 2024
  • Solr 9.6.0 Release Highlights:
  • Solrj now offers a lightweight client based on java.net.http.HttpClient: HttpJdkSolrClient
  • SolrJ now offers an improved async request API
  • Inactive shards (from splits) can now be cleaned up periodically
  • Distributed (sharded) IDF can be disabled via request parameter
  • Query timeouts (limits) may now be based on either CPU time as well as wall clock
  • Upgraded Lucene to 9.10.0
  • bin/solr post now supports --dry-run mode.

New in Apache Solr 9.4.1 (Jan 19, 2024)

  • Bug Fixes:
  • SOLR-17039: Entropy calculation in bin/solr script fails in Docker due to missing 'bc' cmd
  • (janhoy)
  • SOLR-17057: JSON Query regression: If "query" is specified with a String (not JSON structure), "defType" should parse it. Since 9.4 defType was ignored.
  • (David Smiley)
  • SOLR-6853: Allow '/' characters in the text managed by Managed Resources API.
  • (Nikita Rusetskii via Eric Pugh)
  • SOLR-17060: CoreContainer#create may deadlock with concurrent requests for metrics
  • (Alex Deparvu, David Smiley)
  • SOLR-17098: ZK Credentials and ACLs are no longer sent to all ZK Servers when using Streaming Expressions. They will only be used when sent to the default ZK Host.
  • (Houston Putman, Jan Høydahl, David Smiley, Gus Heck, Qing Xu)
  • SOLR-16203: Properly initialize schema plugins loaded by SPI name
  • Dependency Upgrades:
  • PR#2165: Update org.eclipse.jetty*:* to v10.0.19
  • (solrbot)
  • PR#2159: Update io.netty:* to v4.1.104.Final
  • (solrbot)
  • PR#2048: Update dependency commons-cli:commons-cli to v1.6.0
  • (solrbot)
  • PR#2174: Update org.slf4j:* to v2.0.10
  • (solrbot)
  • PR#2135: Update dependency com.fasterxml.jackson:jackson-bom to v2.16.1
  • (solrbot)
  • PR#2138: Update dependency org.apache.commons:commons-compress to v1.25.0
  • (solrbot)
  • PR#2139: Update dependency org.apache.commons:commons-lang3 to v3.14.0
  • (solrbot)
  • PR#2035: Update dependency com.google.errorprone:error_prone_annotations to v2.23.0
  • (solrbot)
  • PR#2036: Update io.grpc:grpc-* to v1.59.0
  • (solrbot)
  • PR#2037: Update org.apache.logging.log4j:* to v2.21.0
  • (solrbot)
  • PR#2033: Update io.dropwizard.metrics:* to v4.2.21
  • (solrbot)
  • PR#2032: Update dependency io.swagger.core.v3:swagger-annotations to v2.2.17
  • (solrbot)
  • PR#2015: Update dependency org.codehaus.woodstox:stax2-api to v4.2.2
  • (solrbot)
  • PR#2031: Update dependency com.fasterxml.jackson:jackson-bom to v2.15.3
  • (solrbot)
  • PR#2034: Update dependency com.github.spotbugs:spotbugs-annotations to v4.8.0
  • (solrbot)
  • PR#2014: Update dependency com.google.guava:guava to v32.1.3-jre
  • (solrbot)
  • PR#2010: Update dependency org.immutables:value-annotations to v2.10.0
  • (solrbot)
  • PR#2009: Update dependency io.opentelemetry:opentelemetry-bom to v1.31.0
  • (solrbot)
  • PR#2008: Update dependency org.semver4j:semver4j to v5.2.2
  • (solrbot)
  • PR#1989: Update org.apache.zookeeper:* to v3.9.1
  • (solrbot)
  • PR#1743: SOLR-17012: Update Apache Hadoop to 3.3.6 and Apache Curator to 5.5.0
  • (solrbot)
  • PR#1745: Update dependency com.google.cloud:google-cloud-bom to v0.204.0
  • (solrbot)
  • Other Changes:
  • SOLR-16949: Restrict certain file types from being uploaded to or downloaded from Config Sets
  • (janhoy, Houston Putman)

New in Apache Solr 9.4.0 (Oct 15, 2023)

  • The Lucene version used by Solr has been upgraded to 9.8 – see its release notes.
  • The Jetty version has been updated to 10.0.17 to address CVE-2023-44487
  • Added support for node-level caches
  • Circuit Breakers available for Update Requests
  • A new Circuit breaker for percentage of CPU utilization is added. The former "CPU" circuit breaker is now more correctly named LoadAverageCircuitBreaker as it trips on system load average which is not a percentage.
  • Solr now includes an always-on trace id generator. This will inject trace id headers for every Solr request, propagating the client supplied value or generating a new id as needed and replaces the existing rid mechanism.
  • Solr now limits the number of concurrent expensive core operations (such as "backup", "restore", and "split") that are submitted asynchronously by running them in a dedicated thread pool.
  • Added support of OAuth 2.0/OIDC 'code with PKCE' flow
  • Multiple bug fixes for TLS and mTLS

New in Apache Solr 9.3.0 (Jul 22, 2023)

  • The Lucene version used by Solr has been upgraded to 9.7.
  • Solr releases now have a slim variant, both for the binary release and the docker image.
  • The Slim variant is the same as the normal variant, except that it does not include Solr modules or the Prometheus exporter.
  • Vector Search
  • Added support for byte vector encoding in DenseVectorField and KnnQParser
  • High dimensional vectors are now supported in Solr
  • Solr can now take advantage of SIMD optimizations for Vector calculations, when run with Java 20 or 21.
  • A new "vectorSimilarity" function query has been added to calculate similarity scores for DenseVectorFields
  • Solr now provides an "Install Shard" API to allow users who have built (per-shard) indices offline to import them into SolrCloud shards.
  • Solr’s experimental "v2" API has seen a number of improvements in the 9.3 release.
  • It is now approaching parity with the functionality offered by Solr’s v1 API.
  • The v2 API as a whole is being redesigned to be more REST-ful and intuitive
  • See the Changelog and upgrade notes for information on which v2 APIs have backward-incompatible changes.
  • New APIs for MigrateReplicas and BalanceReplicas. These work out-of-the-box with the built-in PlacementPlugins.
  • The AffinityPlacementPlugin now supports co-location of shards between collections, using the "withCollectionShards" parameter.
  • Join Queries may handle equally sharded collections on both sides.
  • Collections shards should be collocated via AffinityPlacementPlugin.withCollectionShards
  • This operation doesn't support SplitShard
  • Unknown cores are no longer deleted by default when Solr starts. Use "solr.deleteUnknownCores=true" to use the previous behavior.
  • Warning: Solr cannot be used with Java 20 on MacOS with the Java Security Manager.
  • Please use the environment variable SOLR_SECURITY_MANAGER_ENABLED=false when running with Java 20 on MacOS.

New in Apache Solr 9.2.1 (May 1, 2023)

  • Fix Classloading Exception for inter-node requests when using SSL and HTTP2
  • Use the right cluster property for displaying if TLS is enabled
  • Fix NPE in SystemInfoHandler for inter-node requests that would cause the Nodes page not to load
  • Fixing bin/solr's '-noprompt' option to work for examples
  • Allow custom configuration of Jetty's SecureRequestCustomizer
  • Fix KerberosPlugin module classloading when using the hadoop-auth module
  • Fixing SOLR_DATA_HOME to be honored outside of verbose mode
  • Use the correct instance of ReponseParser for Http2SolrClient.processErrorsAndResponse
  • Fix Java version detection when _JAVA_OPTIONS is set`

New in Apache Solr 9.2.0 (Mar 27, 2023)

  • Solr has upgraded to use Jetty 10 instead of Jetty 9.
  • Solr now includes an opentracing module, with support for OTEL tracing in OTLP format using gRPC.
  • This module is meant to replace the jaegertracer-configurator module, which has been deprecated.
  • The base operating system of the Solr Docker image has been upgraded to Ubuntu 22 (Jammy).
  • Streaming Expressions have been moved out of Solrj core into its own module called solrj-streaming.
  • SolrJ Solr clients now use a builder/setter pattern to enable easier setup.
  • Solr ConfigSet management has been optimized to improve the startup time of nodes with multiple replicas.
  • SolrJ can again be used with the default Java truststore.
  • The "Films" example has been updated to demonstrate Dense Vector search.

New in Apache Solr 9.1.1 (Jan 25, 2023)

  • Bugfixes:
  • SOLR-16589: Fixed issue where large fields with large=true could be truncated when using unicode values
  • SOLR-16585: Fixed NPE when paginating MatchAllDocs with non-zero start offset, like q=*:*&start=10
  • SOLR-16165: Fixed rare deadlock in SlotAcc static initialization
  • SOLR-16622: Fixed issue where replicas could fail to register as active after node restart
  • Other:
  • SOLR-16443: Upgrade Jackson bom to 2.13.4.20221013
  • SOLR-16568: Upgrade woodstox-core to 6.4.0
  • SOLR-16598: Upgrade Protobuf to 3.21.12
  • SOLR-16567: Fixed problem with filtering and KNN search, especially when using post-filters
  • SOLR-16588: Fixed problem with default knn algorithm
  • SOLR-16480: ConfigSets now have an overridable allow-list for filetypes

New in Apache Solr 9.1.0 (Nov 21, 2022)

  • Dedicated query coordinator nodes in a Solr cluster
  • Improvements to admin UI: managing paramsets in queries, managing field types, replica types while collection creation, etc.
  • Support for rolling up core level metrics to be node level metrics

New in Apache Solr 8.11.2 (Jun 22, 2022)

  • Bug Fixes:
  • LUCENE-10564: Make sure SparseFixedBitSet#or updates ramBytesUsed.
  • LUCENE-10477: Highlighter: WeightedSpanTermExtractor.extractWeightedSpanTerms to Query#rewrite multiple times if necessary.
  • Optimizations:
  • LUCENE-10481: FacetsCollector will not request scores if it does not use them.

New in Apache Solr 9.0.0 (May 12, 2022)

  • Highlights:
  • Minimum Java version supported: Java 11
  • Powered by Lucene 9.0, with numerous small and large improvements, such as smaller index footprint.
  • Querying and Indexing:
  • Dense Vector "Neural" Search through DenseVectorField fieldType and K-Nearest-Neighbor (KNN) Query Parser.
  • Admin UI support for SQL Querying.
  • New snowball stemmers: Hindi, Indonesian, Nepali, Serbian, Tamil, and Yiddish.
  • New NorwegianNormalizationFilter.
  • Security:
  • Certificate Authentication Plugin lets you authenticate with x509 client certificates.
  • Upgrade to Zookeeper 3.7, allowing for TLS protected ZK communication.
  • All request handlers support security permissions for authorization.
  • Solr now runs with the Java security manager enabled by default.
  • Solr embedded zookeeper only binds to localhost by default.
  • A lot of dependency updates make Solr much more secure.
  • Stability and Scalability:
  • Rate limiting provides a way to throttle update and search requests based on usage metrics.
  • Task management interface allows declaring tasks as cancellable and trackable.
  • Ability to specify node roles in Solr. This release supports 'Overseer' and 'Data' roles.
  • Support for distributed processing of cluster state updates and collection API calls without relying on the Overseer.
  • Build and Docker:
  • Solr is now built and released independently of Apache Lucene (separate Apache projects).
  • Build system switched to Gradle from Ant + Ivy.
  • Docker image creation is now a part of the Apache Solr Github repo.
  • Docker image documentation is now a part of the reference guide.
  • Official Docker image upgraded to use JDK17 (by Eclipse Temurin) and ability to create a local image that is functionally identical to the official one.
  • Deprecations and Removals:
  • The Data Import Handler (DIH) is an independent project now; it is no longer a part of Solr.
  • No more support for clusterstate.json and MIGRATESTATE API has been removed. If your collections use clusterstate.json, please refer to the Upgrade Notes.
  • Auto scaling framework has been removed. Please refer to the new Replica Placement Plugins for alternate options.
  • LegacyBM25SimilarityFactory has been removed.
  • VelocityResponseWriter is an independent project now; it is no longer a part of Solr. This encompasses all previously included /browse and wt=velocity examples.
  • Legacy SolrCache implementations (LRUCache, LFUCache, FastLRUCache) have been removed. Users should modify their existing configurations to use CaffeineCache instead.
  • Cross Data Center Replication has been removed.
  • SolrJ clients like HttpSolrClient and LBHttpSolrClient that lacked HTTP2 support have been deprecated. The old CloudSolrClient has been renamed as CloudLegacySolrClient and deprecated.
  • SimpleFSDirectoryFactory is removed in favor of NIOFSDirectoryFactory.
  • Other:
  • Contrib modules are now just "modules". You can easily enable module(s) through environment variable SOLR_MODULES.
  • Features lifted out as separate modules are: HDFS, Hadoop-Auth, SQL, Scripting, and JWT-Auth.
  • The "dist" folder in the release is gone. Module jars are now inside respective module's lib/ folder.
  • SolrJ class CloudSolrClient now supports HTTP2. It has a new Builder. See CloudLegacySolrClient for the 8.x version of this class
  • Jetty Request log is now enabled by default, i.e. logging every request.
  • Fixes:
  • Fix the connection reset problem caused by the incorrect use of 4LW with n when monitoring zooKeeper status
  • SOLR-14546: Fix for a relatively hard to hit issue in OverseerTaskProcessor that could lead to out of order execution of Collection API tasks competing for a lock
  • SOLR-15162: Allow readOnly parameter to be used with v2 modify collection command
  • SOLR-15334: Return error response when failing auth in PKIAuthPlugin
  • SOLR-15449: Edismax sow incorrectly affect mm parameter in multi field search
  • SOLR-15410: Always use -Xverbosegclog for OpenJ9.
  • SOLR-15653: Fix collection creation race that assumes a local clusterstate when the collection has only just been created.
  • SOLR-10529: Solr UI Health Check enable/disable ping Button doesn't work
  • SOLR-15783: Prevent Logging MDC values from leaking between request threads, and set 'trace_id' in MDC as soon as it's available
  • SOLR-14781: Removed many unused classes that accumulated over the years.
  • SOLR-15871: Update Log4J to 2.17.1
  • SOLR-15854: Let RealtimeGet component support negative filters
  • SOLR-15501: GCSBackupRepository no longer strictly requires a pointer to a service account JSON file, allowing users running within GCP to take advantage of it's "Workload Identity" and other role-based access feature.
  • SOLR-15919: Replace File with Path for many ZK operations
  • SOLR-15259: hl.fragAlignRatio now defaults to 0.33 to be faster and maybe looks nicer.
  • SOLR-15944: The Tagger's JSON response format now always uses an object/map to represent each tag instead of an array, which didn't make sense.
  • SOLR-15842: Async response for backups now correctly aggregates and returns information
  • SOLR-14595: Consistent overrequest across different facet methods for `sort:index` JSON Facet field
  • SOLR-15961: Fix bug in PKIAuthenticationPlugin that can cause a request to fail with 401 Unauthorized instead of re-fetching expired remote keys from other nodes.
  • SOLR-15968: Hide annoying WARN log from bin/solr zk command
  • SOLR-16075: ShowFileHandler path parameter is now validated to be relative to instance conf dir in standalone mode
  • SOLR-15558: Don't wait for zombie processes to exit when stopping.
  • SOLR-16019: UTF-8 parsing errors for parameters should cause a HTTP 400 status code, not 500
  • SOLR-15983: Fix ClassCastException in UpdateLog$LogReplayer.doReplay.
  • SOLR-16090: Better error message when JWT auth SIGNATURE_INVALID during token parsing
  • SOLR-15333: Reduced spurious warn logging by AbstractSpatialPrefixTreeFieldType field properties
  • SOLR-15405: Make HDFS handle little endian LUCENE-9047
  • SOLR-16009: Force Calcite's Rel simplify config flag to false to avoid erasing filters that are meaningful to Solr, but look like nonsense to Calcite, such as AND'd filters on the same multi-valued field
  • SOLR-16022: Enforce special character requirements on passwords with length less than 15
  • SOLR-16143: SolrConfig ResourceProvider can miss updates from ZooKeeper
  • SOLR-16164: ConfigSet API returns error if untrusted user creates from _default configset

New in Apache Solr 8.11.1 (Dec 16, 2021)

  • Security:
  • Updates bundled log4j2 dependencies to address CVE-2021-44228 (SOLR-15843)
  • Upgrade jaegertracing to 1.6.0 and libthrift to 0.14.1 to address CVE-2020-13949 (SOLR-15324)
  • Bugfixes:
  • Fixes to the new Admin UI Security and Schema Designer screens (SOLR-15825, SOLR-15774 and SOLR-15813)
  • Fix regression in 8.11.0 for the Admin UI Files screen and Velocity (SOLR-15804)
  • Admin endpoints for Zookeeper now by default protected by zk_read permission (SOLR-15768)
  • Better default security.json uploaded by bin/solr tool (SOLR-15828)
  • Switching a PRS collection from true -> false -> true resulted in INACTIVE replicas (SOLR-15794)
  • Fix REPLACENODE to not use source node when choosing a target node (SOLR-15795)
  • Fix NPE in pivot facets, add non-Analyzed query method in FieldType (SOLR-8319)
  • Upgrade Velocity from to v2.3 and Velocity Tools to v3.1 (SOLR-15844)

New in Apache Solr 8.11.0 (Nov 16, 2021)

  • New Features:
  • SOLR-7642: opt-in support to create ZK chroot on startup
  • (Timothy Potter, Shawn Heisey, Mark Miller, Tomas Eduardo Fernandez Lobbe, Jan Høydahl, Steve Molloy, Isabelle Giguere, David Eric Pugh, Gus Heck, Christine Poerschke, Houston Putman)
  • SOLR-15708: SolrJ support for ConfigSet uploading
  • (ab, hossman)
  • SOLR-12666: Add authn & authz plugins that supports multiple authentication schemes, such as Bearer and Basic
  • (Timothy Potter, janhoy)
  • SOLR-15721: Support editing Basic auth config from the security UI when using the MultiAuthPlugin
  • (Timothy Potter)
  • Improvements:
  • SOLR-15707: Add the ability to set the AWS Profile per S3Repository
  • (Houston Putman)
  • Optimizations:
  • Bug Fixes:
  • SOLR-15626: The "config-read" permission has been fixed to properly allow access to `/solr/admin/configs?action=LIST`
  • (Jon Senchyna via Eric Pugh)
  • SOLR-15691: Admin UI raises yellow warning even when only case of hostnames differ
  • (janhoy)
  • SOLR-15702: Fix S3Repository to follow BackupRepository.createDirectory() API contract
  • (Houston Putman)
  • SOLR-15696: Incremental backups no longer fail on collections where a 'SPLITSHARD' operation previously occurred.
  • (Jason Gerlowski)
  • SOLR-15628: The SolrException.log() helper method has been fixed to correctly passes the Throwable to the Logger w/o stringification
  • (hossman)
  • SOLR-15722: Delete Replica does not delete the Per replica state
  • (noble)
  • SOLR-15676: Fix PeerSync failure due to RealTimeGetComponent returning duplicates.
  • (Ramsey Haddad, Christine Poerschke, David Smiley)
  • SOLR-15766: MultiAuthPlugin should send non-AJAX anonymous requests to the plugin that allows anonymous requests
  • (Timothy Potter, Eric Pugh)
  • SOLR-15706: Incremental backup 'purges' no longer delete all index files(!)
  • (Jason Gerlowski)
  • Build:
  • LUCENE-10104, SOLR-15631: Upgrade forbiddenapis to version 3.2.
  • (Uwe Schindler)
  • Other Changes:
  • SOLR-15678: Allow only known content types in ShowFileRequestHandler
  • (janhoy, Gus Heck, Mal Aware)
  • SOLR-15697: Add ErrorLogMuter to test-framework, deprecating SolrException.ignorePatterns
  • (hossman)
  • SOLR-15761: Remove JdbcStream from Lang
  • (Joel Bernstein)

New in Apache Solr 8.10.1 (Oct 18, 2021)

  • Upgrade httpclient and httpmime to 4.5.13 (SOLR-15269)
  • Upgrade the following dependencies with vulnerabilities (SOLR-15677)
  • Jetty: 9.4.44.v20210927
  • Tika: 1.27
  • Commons-compress: 1.21
  • Netty: 4.1.68.Final
  • Fasterxml.jackson: 2.12.3
  • Errorprone: 2.9.0
  • Gcp-client: 1.32.1

New in Apache Solr 8.10.0 (Sep 28, 2021)

  • Backup / Restore:
  • Backup / restore to / from Amazon S3 (SOLR-15089); included upgrading the AWS SDK to v2 (SOLR-15599)
  • Schema Designer UI:
  • A new Admin UI screen to interactively design your Solr schema and supporting ConfigSet files from sample data (SOLR-15277)
  • Security UI:
  • A new Admin UI screen to manage users, roles, and permissions (SOLR-15527)
  • SQL Improvements:
  • Several enhancements and bug fixes for Solr's Parallel SQL interface, included upgrading Apache Calcite to 1.27.0 (SOLR-15460, SOLR-15451, SOLR-15456, SOLR-15461, SOLR-15489, SOLR-15475, SOLR-15499, SOLR-15570, SOLR-15576, SOLR-9853, SOLR-15579, SOLR-15566)

New in Apache Solr 8.9.0 (Jun 17, 2021)

  • Backup/Restore: Support for incremental backups, support for storing backups in Google Cloud Storage (GCS), ability to restore on top of an existing collection. Improved v2 API. Please see CHANGES.txt for details. (SOLR-15087, SOLR-15090, SOLR-13608, SOLR-15101)
  • Monitoring: New "Solr Cluster" row in Grafana dashboard, improved Zookeeper monitoring, new shard health info in CLUSTERSTATUS and more. Please see CHANGES.txt for details. (SOLR-15365, SOLR-15397, SOLR-15300, SOLR-15081, SOLR-15383)
  • Deprecations: The Metrics history feature has been deprecated and will be removed in 9.0 (SOLR-15416)
  • Admin UI: Query page now stores state in URL and can easily be shared (SOLR-6152)
  • Security: Jetty server upgraded to 9.4.41 which fixes some known vulnerabilities (SOLR-15316)

New in Apache Solr 8.8.2 (Apr 12, 2021)

  • SOLR-15249: Properly set ZK ACLs on /security.json
  • SOLR-15233: Set doAs param in ConfigurableInternodeAuthHadoopPlugin
  • SOLR-15217: Use shardsWhitelist in ReplicationHandler
  • SOLR-15288: Hardening NODEDOWN event in collections using PerReplicaStates

New in Apache Solr 8.8.1 (Feb 23, 2021)

  • Nested Documents:
  • When doing atomic/partial updates to a child document:
  • Supply the _root_ field (the ID of the root document) so that Solr understands you are manipulating a child document and not a root document. In its absence, Solr looks at the _route_ parameter but this may change in the future because it’s not an ideal substitute. If neither are present, Solr assumes you are updating a root document. If this assumption is false, Solr will do a cheap check that usually detects the problem and will throw an exception to alert you of the need to specify the Root ID. This backwards incompatible change was done to increase performance and robustness.
  • This feature no longer requires stored=true or docValues=true on the _root_ field. You might have it for other purposes though (e.g., for uniqueBlock(…​)).
  • This feature no longer requires the _nest_path_ field, although you probably ought to continue to define it as it’s useful for other things.
  • Removed Contribs:
  • The search results clustering contrib (Carrot2) has been removed from 8.x Solr due to lack of Java 1.8 compatibility in the dependency that provides online clustering of search results. The contrib will be re-introduced in Solr 9.0.
  • Learning to Rank:
  • Interleaving support has been added to Learning to Rank (LTR). Currently only the Team Draft Interleaving algorithm is supported. For examples using this feature, see the section Running a Rerank Query Interleaving Two Models.
  • Metrics:
  • Two metrics have been added for SolrCloud’s Overseer:
  • solr_metrics_overseer_stateUpdateQueueSize
  • solr_metrics_overseer_collectionWorkQueueSize
  • Prometheus Exporter:
  • The ./bin scripts included with the Prometheus Exporter contrib now allow use of custom java options with environment variables. See the section Environment Variable Options for more details.
  • The default Grafana dashboards now include panels for query performance monitoring. The default Prometheus Exporter configuration includes metrics like queries-per-second (QPS) and 95th percentiles (P95) to populate the new panels.
  • The default Prometheus Exporter configuration also includes the two new metrics mentioned in the Metrics above.
  • Solr Home:
  • The internal logic for identifying 'Solr Home' (solr.solr.home) has been refactored to make testing less error prone. Plugin developers using SolrPaths.locateSolrHome() or 'new `SolrResourceLoader’ should check deprecation warnings as existing some existing functionality will be removed in 9.0. SOLR-14934 has more technical details about this change for those concerned.

New in Apache Solr 8.8.0 (Feb 1, 2021)

  • New Features:
  • SOLR-14907: Add v2 API for configSet upload, including single-file insertion.
  • (Houston Putman)
  • SOLR-14560: Add interleaving support in Learning To Rank.
  • (Alessandro Benedetti, Christine Poerschke)
  • SOLR-15052: Reducing overseer bottlenecks using per-replica states
  • (noble, Ishan Chattopadhyaya)
  • Improvements:
  • SOLR-14942: Reduce leader election time on node shutdown by removing election nodes before closing cores.
  • (Cao Manh Dat, Mike Drob, hossman, shalin)
  • SOLR-14955: Add env var options for the Prometheus Exporter bin scripts
  • (Houston Putman)
  • SOLR-14683: Metrics API should ensure consistent placeholders for missing values.
  • (ab)
  • SOLR-15015 : Add interleaving algorithm parameter support in Learning To Rank
  • (Alessandro Benedetti)
  • SOLR-8673: Make JSON Facets extendable
  • (Tim Owen via Mikhail Khludnev)
  • SOLR-14965: metrics: Adds two metrics to the SolrCloud Overseer: solr_metrics_overseer_stateUpdateQueueSize and solr_metrics_overseer_collectionWorkQueueSize with corresponding entries in the the Prometheus exporter's default/stock configuration.
  • (Saatchi Bhalla, Megan Carey, Andrzej Białecki, David Smiley)
  • SOLR-14827: Refactor schema loading to not use XPath
  • (noble)
  • SOLR-14987: Reuse HttpSolrClient per node vs. one per Solr core when using CloudSolrStream
  • (Timothy Potter)
  • SOLR-14413: Allow timeAllowed and cursorMark parameters together.
  • (John Gallagher via Mike Drob)
  • SOLR-15062: /api/cluster/zk/ls should give the stat of the current node
  • (noble)
  • SOLR-15069: [child]: the parentFilter parameter is now fully optional and perhaps obsolete.
  • (David Smiley)
  • SOLR-14923: The use case of atomic/partial updates to child documents no longer requires that _root_ be stored or have docValues, and no longer requires the _nest_path_ field. However it now requires that the client pass a _root_ field on these updates to point to the root ID.
  • (David Smiley)
  • SOLR-15059: Add panels to the default Grafana dashboard for query performance monitoring, includes updates to the Prometheus exporter to export query performance metrics, such as QPS and p95.
  • (Timothy Potter)
  • SOLR-15040: Improvements to postlogs timestamp handling
  • (Joel Bernstein)
  • SOLR-14155: Load all other SolrCore plugins from packages
  • (noble)
  • Optimizations:
  • SOLR-14975: Optimize CoreContainer.getAllCoreNames, getLoadedCoreNames and getCoreDescriptors.
  • (Bruno Roustant)
  • SOLR-15049: Optimize same-core, same-field joins in TopLevelJoinQuery
  • (Jason Gerlowski)
  • SOLR-14923: Indexing nested documents is faster, especially under concurrent indexing load. In addition, Partial updates to nested documents and Realtime Get of child documents is now more reliable.
  • (David Smiley, Thomas Wöckinger)
  • SOLR-15036: Automatically wrap a facet expression with a select / rollup / sort / plist when using a collection alias with multiple collections and count|sum|min|max|avg metrics.
  • (Timothy Potter)
  • Bug Fixes:
  • SOLR-14946: Fix responseHeader being returned in response when omitHeader=true and EmbeddedSolrServer is used as the client
  • (Munendra S N)
  • SOLR-14940: ReplicationHandler memory leak through SolrCore.closeHooks with unstable ZK connection.
  • (Anver Sotnikov, Mike Drob)
  • SOLR-14969: Prevent creating multiple cores with the same name which leads to instabilities (race condition)
  • (Erick Erickson, Andreas Hubold)
  • SOLR-14961: Fix for deleting zookeeper nodes with same path length. Only the first zk-node was removed.
  • (Michael Aleythe via Mike Drob)
  • SOLR-14971: AtomicUpdate 'remove', 'add-distinct' operations now works on numeric, date fields in uncommitted docs
  • (Jason Gerlowski)
  • SOLR-14983: Fix response returning original score instead of reranked score due to query and filter combining.
  • (Krishan Goyal, Jason Baik, Christine Poerschke)
  • SOLR-14993: Unable to download zookeeper files of 1byte in size
  • (Erick Erickson, Allen Sooredoo)
  • SOLR-14851: Http2SolrClient doesn't handle keystore type correctly
  • (Andras Salamon via janhoy)
  • SOLR-15009: Correctly propogate exceptions from DirectoryFactory.exists
  • (Mike Drob)
  • SOLR-15017: Core lib directories were not being recognized unless the solrconfig included a <lib> directive.
  • (Thomas Mortagne)
  • SOLR-14934: Refactored duplicate "Solr Home" logic into a single place to eliminate risk of tests using divergent values for a single solr node.
  • (hossman)
  • SOLR-12182: Don't persist base_url in ZK as the URL scheme is variable, compute from node_name instead when reading state back from ZK.
  • (Timothy Potter)
  • SOLR-15046: Check if SOLR_SSL_ENABLED strictly equal to true for setting solr.jetty.https.port
  • (Timothy Potter)
  • SOLR-14939: JSON range faceting to support cache=false parameter.
  • (Christine Poerschke, Mike Drob)
  • SOLR-15031: Fix preventing null being wrapped in a QueryValueSource subQuery. Such null queries can be caused by query text resulting in an empty token stream.
  • (Pieter van Boxtel via Mike Drob)
  • SOLR-15061: Fix NPE in SearchHandler when shards.info and no QueryComponent configured.
  • (Bruno Roustant)
  • SOLR-14571: Download speed was hard-coded in the "Replication" screen of the Solr Admin UI.
  • (Florin Babes via Christine Poerschke)
  • SOLR-15048: Fixed collapse parser behavior when dealing with docs boosted by QueryElevationComponent that are in the null group to treat them consistently regardless of collapse field type or group head selector.
  • (hossman)
  • SOLR-15058: Enforce node_name contains colon and port and find first underscore after colon to parse context when converting a node_name to a base URL.
  • (Timothy Potter, Su Sasa)
  • SOLR-15047: Fix collapse parser behavior when collapsing on numeric fields to differentiate '0' group from null group
  • (hossman)
  • SOLR-10860: Return proper error code for bad input in case of inplace updates
  • (Tomas Eduardo Fernandez Lobbe, Munendra S N)
  • SOLR-14950: Fix error in copyField regeneration when explicit source/destination is not present in schema but matches the dynamic rule. The copyFields are rebuilt with replace-field and replace-field-type, if required
  • (Andrew Shumway, Munendra S N)
  • SOLR-12539: Handle parsing of values for 'other', 'include', and 'excludeTags' in JSON facets when specified as comma-separated values with extra spaces
  • (hossman, Munendra S N)
  • SOLR-14514: Avoid picking 'stream' method in JSON facet when any of 'allBuckets', 'numBuckets', and 'missing' parameters are enabled
  • (hossman, Munendra S N)
  • SOLR-12559: Fix placeholder valuesource 'FIELDNAME' not working with de-referenced values in JSON aggregator parsing.
  • (hossman, Munendra S N)
  • SOLR-15070: Suggester requests made with SolrJ can now use XMLResponseParser
  • (Jason Gerlowski)
  • SOLR-15073: Fix ClassCastException in SystemInfoHandler.getSecurityInfo.
  • (Nikolay Ivanov, Christine Poerschke)
  • SOLR-15071: Fix ArrayIndexOutOfBoundsException in contrib/ltr SolrFeatureScorer.
  • (Florin Babes, Ovidiu Mihalcea, David Smiley, Christine Poerschke)

New in Apache Solr 8.7.0 (Nov 4, 2020)

  • Circuit Breakers Infrastructure and Real JVM Based Circuit Breaker
  • CPU Based Circuit Breaker
  • Improve performance of ExportWriter
  • The MetricsHistoryHandler Can Be Disabled

New in Apache Solr 8.6.3 (Oct 8, 2020)

  • SOLR-14898: Prevent duplicate header accumulation on internally forwarded requests
  • SOLR-14768: Fix HTTP multipart POST requests to Solr (8.6.0 regression)
  • SOLR-14859: PrefixTree-based fields now reject invalid schema properties instead of quietly failing certain queries
  • SOLR-14663: CREATE ConfigSet action now copies base node content

New in Apache Solr 8.6.2 (Sep 1, 2020)

  • SOLR-14751: Zookeeper Admin screen not working for old ZK versions

New in Apache Solr 8.6.1 (Aug 14, 2020)

  • SOLR-14665: Revert SOLR-12845 adding of default autoscaling cluster policy, due to performance issues
  • SOLR-14671: Parsing dynamic ZK config sometimes cause NumberFormatException

New in Apache Solr 8.5.2 (May 27, 2020)

  • Bug Fixes:
  • SOLR-14411: Fix regression from SOLR-14359 (Admin UI 'Select an Option')
  • SOLR-14471: base replica selection strategy not applied to "last place" shards.preference matches

New in Apache Solr 8.5.1 (Apr 16, 2020)

  • Fix corruption of the new gen field infos when doc values updates are applied on a segment created externally and added to the index with IndexWriter#addIndexes(Directory).
  • (Jim Ferenczi, Adrien Grand)

New in Apache Solr 8.5.0 (Mar 24, 2020)

  • A new queries property of JSON Request API let to declare queries in Query DSL format and refer to them by their names.
  • A new command line tool bin/postlogs allows you to index Solr logs into a Solr collection. This is helpful for log analysis and troubleshooting. Documentation is not yet integrated into the Solr Reference Guide, but is available in a branch via GitHub: https://github.com/apache/lucene-solr/blob/visual-guide/solr/solr-ref-guide/src/logs.adoc.
  • A new stream decorator delete() is available to help solve some issues with traditional delete-by-query, which can be expensive in large indexes.
  • Solr now has the ability to run with a Java Security Manager enabled.

New in Apache Solr 8.4.1 (Jan 14, 2020)

  • Fix for overseer serialization to support rolling upgrade (broken since 8.4)
  • Fix for SSL support with SOLR_SSL_NEED_CLIENT_AUTH (broken since 8.2)
  • Package manager to store public keys in a special "trusted" location instead of in ZooKeeper

New in Apache Solr 8.4.0 (Dec 30, 2019)

  • A new package management system was introduced in order to ease deploying plugins.
  • Better security with the out-of-the-box configuration.

New in Apache Solr 8.3.1 (Dec 5, 2019)

  • API Changes:
  • LUCENE-8909: IndexWriter#getFieldNames() method is used to get fields present in index. After LUCENE-8316, this method is no longer required. Hence, deprecate IndexWriter#getFieldNames() method.(Adrien Grand, Munendra S N)
  • LUCENE-8755: SpatialPrefixTreeFactory now consumes the "version" parsed with Lucene's Version class. The quad and packed quad prefix trees are sensitive to this. It's recommended to pass the version like you should do likewise for analysis components for tokenized text, or else changes to the encoding in future versions may be incompatible with older indexes. (Chongchen Chen, David Smiley)
  • LUCENE-8956: QueryRescorer now only sorts the first topN hits instead of all initial hits. (Paul Sanwald via Adrien Grand)
  • LUCENE-8921: IndexSearcher.termStatistics() no longer takes a TermStates; it takes the docFreq and totalTermFreq. And don't call if docFreq <= 0. The previous implementation survives as deprecated and final. It's removed in 9.0. (Bruno Roustant, David Smiley, Alan Woodward)
  • LUCENE-8990: PointValues#estimateDocCount(visitor) estimates the number of documents that would be matched by the given IntersectVisitor. THe method is used to compute the cost() of ScorerSuppliers instead of PointValues#estimatePointCount(visitor). (Ignacio Vera, Adrien Grand)
  • New Features:
  • LUCENE-8936: Add SpanishMinimalStemFilter(vinod kumar via Tomoko Uchida)
  • LUCENE-8764 LUCENE-8945: Add "export all terms and doc freqs" feature to Luke with delimiters.(Leonardo Menezes, Amish Shah via Tomoko Uchida)
  • LUCENE-8747: Composite Matches from multiple subqueries now allow access to their submatches, and a new NamedMatches API allows marking of subqueries and a simple way to find which subqueries have matched on a given document (Alan Woodward, Jim Ferenczi)
  • LUCENE-8769: Introduce Range Query For Multiple Connected Ranges (Atri Sharma) LUCENE-8960: Introduce LatLonDocValuesPointInPolygonQuery for LatLonDocValuesField (Ignacio Vera)
  • LUCENE-8753: New UniformSplitPostingsFormat (name "UniformSplit") primarily benefiting in simplicity and extensibility. New STUniformSplitPostingsFormat (name "SharedTermsUniformSplit") that shares a single internal term dictionary across fields.
  • (Bruno Roustant, Juan Rodriguez, David Smiley)
  • Improvements:
  • LUCENE-8874: Show SPI names instead of class names in Luke Analysis tab.(Tomoko Uchida)
  • LUCENE-8894: Add APIs to find SPI names for Tokenizer/CharFilter/TokenFilter factory classes. (Tomoko Uchida)
  • LUCENE-8914: move the logic for discarding inner modes in FloatPointNearestNeighbor to the IntersectVisitor so we take advantage of the change introduced in LUCENE-7862. (Ignacio Vera)
  • LUCENE-8955: move the logic for discarding inner modes in LatLonPoint NearestNeighbor to the IntersectVisitor so we take advantage of the change introduced in LUCENE-7862 (Ignacio Vera)
  • LUCENE-8918: PhraseQuery throws exceptions at construction time if it is passed null arguments. (Alan Woodward)
  • LUCENE-8916: GraphTokenStreamFiniteStrings preserves all Token attributes through its finite strings TokenStreams Alan Woodward)
  • LUCENE-8933: Check kuromoji user dictionary beforehand to avoid unexpected runtime exceptions. (Tomoko Uchida
  • UCENE-8906: Expose Lucene50PostingsFormat.IntBlockTermState as public so that other postings formats can re-use it. (Bruno Roustant)
  • LUCENE-8942: Remove redundant parameters and improve visibility strictness in LRUQueryCache (Atri Sharma)
  • SOLR-13663: Introduce <SpanPositionRange> into XML Query Parser
  • (Alessandro Benedetti via Mikhail Khludnev)
  • LUCENE-8952: Use a sort key instead of true distance in NearestNeighbor (Julie Tibshirani).
  • LUCENE-8620: Tessellator labels the edges of the generated triangles whether they belong to the original polygon. This information is added to the triangle encoding.
  • LUCENE-8964: Fix geojson shape parsing on string arrays in properties (Alexander Reelsen)
  • LUCENE-8976: Use exact distance between point and bounding rectangle in FloatPointNearestNeighbor. (Ignacio Vera)
  • LUCENE-8966: The Korean analyzer now splits tokens on boundaries between digits and alphabetic characters. (Jim Ferenczi)
  • LUCENE-8984: MoreLikeThis MLT is biased for uncommon fields
  • Optimizations:
  • LUCENE-8922: DisjunctionMaxQuery more efficiently leverages impacts to skip non-competitive hits. (Adrien Grand)
  • LUCENE-8935: BooleanQuery with no scoring clause can now early terminate the query when the total hits is not requested.
  • LUCENE-8941: Matches on wildcard queries will defer building their full disjunction until a MatchesIterator is pulled (Alan Woodward)
  • LUCENE-8755: spatial-extras quad and packed quad prefix trees now index points faster.(Chongchen Chen, David Smiley)
  • LUCENE-8860: add additional leaf node level optimizations in LatLonShapeBoundingBoxQuery. (Igor Motov via Ignacio Vera)
  • LUCENE-8968: Improve performance of WITHIN and DISJOINT queries for Shape queries by doing just one pass whenever possible. (Ignacio Vera)
  • LUCENE-8939: Introduce shared count based early termination across multiple slices (Atri Sharma)
  • LUCENE-8980: Blocktree's seekExact now short-circuits false if the term isn't in the min-max range of the segment. Large perf gain for ID/time like data when populated sequentially. (Guoqiang Jiang)
  • Bug Fixes:
  • LUCENE-8755: spatial-extras quad and packed quad prefix trees could throw a NullPointerException for certain cell edge coordinates (Chongchen Chen, David Smiley)
  • LUCENE-9005: BooleanQuery.visit() would pull subVisitors from its parent visitor, rather than from a visitor for its own specific query. This could cause problems when BQ was nested under another BQ. Instead, we now pull a MUST subvisitor, pass it to any MUST subclauses, and then pull SHOULD, MUST_NOT and FILTER visitors from it rather than from the parent. (Alan Woodward)
  • Other:
  • LUCENE-8778 LUCENE-8911 LUCENE-8957: Define analyzer SPI names as static final fields and document the names in Javadocs.(Tomoko Uchida, Uwe Schindler)
  • LUCENE-8758: QuadPrefixTree: removed levelS and levelN fields which weren't used. (Amish Shah)
  • LUCENE-8975: Code Cleanup: Use entryset for map iteration wherever possible.
  • LUCENE-8993, LUCENE-8807: Changed all repository and download references in build files to HTTPS.
  • LUCENE-8998: Fix OverviewImplTest.testIsOptimized reproducible failure.
  • Tomoko Uchida)
  • LUCENE-8999: LuceneTestCase.expectThrows now propogates assert/assumption failures up to the test w/o wrapping in a new assertion failure unless the caller has explicitly expected them(hossman)
  • LUCENE-8062: GlobalOrdinalsWithScoreQuery is no longer eligible for query caching.

New in Apache Solr 8.3.0 (Nov 3, 2019)

  • Two dimensional routed aliases are now available for organizing collections based on the data values of two fields
  • SPLITSHARD implements a new splitByPrefix option that takes into account the actual document distribution when using compositeIds
  • QueryElevationComponent can have query rules configured with match="subset" wherein the words need only match a subset of the query's words and in any order
  • Command line option to export documents to a file
  • Support deterministic replica routing preferences for better cache usage
  • Ability to query aliases in Solr Admin UI
  • JWTAuthPlugin supports multiple JWKS endpoints and multiple IdP issuers
  • JSON faceting now supports arbitrary ranges for range facets
  • Support integral plots, cosine distance and string truncation with math expressions (Joel Bernstein)
  • New cat() stream source to create tuples from lines in local files
  • Add upper, lower, trim and split Stream Evaluators
  • Add CsvStream, TsvStream Streaming Expressions and supporting Stream Evaluators
  • Add CaffeineCache, an efficient implementation of SolrCache
  • Live SPLITSHARD can lose updates due to cluster state change between checking if the current shard is active and later checking if there are any sub-shard leaders to forward the update to
  • Fix for SPLITSHARD (async) with failures in underlying sub-operations can result in data loss
  • Allow dynamic resizing of SolrCache-s
  • Allow optional redaction of data saved by 'bin/solr autoscaling -save'
  • Optimized large managed schema modifications (internal O(n^2) problem)
  • Max idle time support for SolrCache implementations
  • Add Prometheus Exporter GC and Heap options
  • SSL: Adding Enabling/Disabling client's hostname verification config
  • Introducing SolrClient.ping(collection) in SolrJ
  • Fix for CDCR bootstrap not replicating index to the replicas of target cluster
  • Fixed a race condition when initializing metrics for new security plugins on security.json change
  • Fixed JWTAuthPlugin to update metrics prior to continuing w/other filters or returning error
  • Fixed distributed grouping when multiple 'fl' params are specified
  • JMX MBeans are not exposed because of race condition between creating platform mbean server and registering mbeans
  • Fix for class-cast issues during atomic-update 'removeregex' operations
  • Fix for multi-node race condition to create/remove nodeLost markers
  • Fix for too many cascading calls to remote servers, which can bring down nodes
  • Fix for MOVEREPLICA ignoring replica type and always adding 'nrt' replicas
  • Fix: DistributedZkUpdateProcessor should propagate URP.finish() lifecycle (regression since 8.1)

New in Apache Solr 8.2.0 (Jul 26, 2019)

  • New features:
  • Add an update param failOnVersionConflicts=false to updates not fail when there is a version conflict
  • Add facet2D Streaming Expression.
  • Preferred replicas on nodes with same system properties as the query master
  • OpenTracing support for Solr
  • Raw index data analysis tool (extension of COLSTATUS collection command).
  • Add recNum Stream Evaluator.
  • Allow zplot to visualize 2D clusters and convex hulls.
  • Add a field type for Estonian language to default managed_schema, document about Estonian language analysis in Solr Ref Guide
  • Bug Fixes:
  • Intermittent 401's for internode requests with basicauth enabled.
  • In 8.1, Atomic Updates were broken (NPE) when the schema declared the new nest_path field even if you weren't using nested docs. In-place updates were not affected (worked)
  • Fix atomic update encoding issue for UUID, enum, bool, and binary fields.
  • Impossible to delete a collection with the same name as an existing alias. This fixes also a bug inREINDEXCOLLECTION when used with removeSource=true which could lead to a data loss.

New in Apache Solr 8.1.1 (May 28, 2019)

  • Fix for a Null Pointer Exception when querying collection through collection alias.

New in Apache Solr 8.1.0 (May 16, 2019)

  • Partial/Atomic Updates for nested documents. This enables atomic updates for nested documents, without the need to supply the whole nested hierarchy (which would be overwritten if absent).
  • Category Routed Aliases feature introduced for data driven assignment of documents to collections based on values of a field
  • JWT Token authentication plugin with OpenID Connect implicit flow login through Admin UI
  • REINDEXCOLLECTION command for re-indexing of existing collections
  • Collection RENAME command and support using aliases in most collection admin commands
  • Read-only mode for SolrCloud collections

New in Apache Solr 8.0.0 (Mar 14, 2019)

  • Versions of major components:
  • Apache Tika 1.19.1
  • Carrot2 3.16.0
  • Velocity 1.7 and Velocity Tools 2.0
  • Apache ZooKeeper 3.4.13
  • Jetty 9.4.14.v20181114
  • Upgrade notes:
  • Due to the introduction of LIR redesign since Solr 7.3 (SOLR-11702) and the removing of old LIR implementation in Solr 8. Rolling updates are not possible unless all nodes must be on Solr 7.3 or higher. If not updates can be lost.
  • ALPN is not supported in Java 8 or lower version therefore when a node started in Java 8 or a lower version with SSL enabled, it will send and can only be able to handle HTTP/1.1 requests. In case of using SSL Java 9 or latter versions are recommended.
  • Custom AuthenticationPlugin must provide its own setup for Http2SolrClient through implementing HttpClientBuilderPlugin.setup, if not internal requests can't be authenticated.
  • LUCENE-7996: The 'func' query parser now returns scores that are equal to 0 when a negative value is produced. This change is due to the fact that Lucene now requires scores to be positive.
  • (Adrien Grand)
  • SOLR-11882: SolrMetric registries retained references to SolrCores when closed. A change of SolrMetricMAnager.registerGauge and SolrMetricProducer.initializeMetrics method signatures was required to fix it. Third party components that use this API need to be updated.
  • (Eros Taborelli, Erick Erickson, ab)
  • LUCENE-8267: Memory codecs have been removed from the codebase (MemoryPostings, MemoryDocValues). If you used postingsFormat="Memory" or docValuesFormat="Memory" then either remove it to use the default or experiment with one of the others.
  • (Dawid Weiss)
  • SOLR-12586: The date format patterns used by ParseDateFieldUpdateProcessorFactory (present in "schemaless mode") are now interpreted by Java 8's java.time.DateTimeFormatter instead of Joda Time. The pattern language is very similar but not the same. Typically, simply update the pattern by changing an uppercase 'Z' to lowercase 'z' and that's it. For the current recommended set of patterns in schemaless mode, see "Schemaless Mode" in the ref guide, or simply examine the default configSet. Also note that the set of patterns (formats) here have expanded from before to subsume those patterns previously handled by the "extract" contrib (Solr Cell / Tika).
  • (David Smiley, Bar Rotstein)
  • SOLR-12593: The "extraction" contrib (Solr Cell) no longer does any date parsing, and thus no longer has the "date.formats" configuration. To ensure date strings are properly parsed, use ParseDateFieldUpdateProcessorFactory (an URP) commonly registered with the name "parse-date" in "schemaless mode".
  • (David Smiley, Bar Rotstein)
  • SOLR-12643: Since Http2SolrClient does not support exposing connections related metrics. These metrics are no longer available 'QUERY.httpShardHandler.{availableConnections, leasedConnections, maxConnections, pendingConnections}', 'UPDATE.updateShardHandler.{availableConnections, leasedConnections, maxConnections, pendingConnections}'
  • SOLR-12605: UpdateShardHandler's updateOnlyClient is now a Http2SolrClient (previous HttpSolrClient). This new client does not support 'maxConnections','maxConnectionsPerHost' parameters.
  • SOLR-12640: HttpShardHandlerFactory's defaultClient is now a Http2SolrClient (previous HttpSolrClient). This new client does not support 'maxConnections','maxConnectionsPerHost' parameters. LBHttpSolrClient.Req and LBHttpSolrClient.Rsp are marked as deprecated, uses LBSolrClient.Req and LBSolrClient.Rsp instead.
  • SOLR-12754: The UnifiedHighlighter hl.weightMatches now defaults to true. If there are unforseen highlight problems, this may be the culprit.
  • If you explicitly use BM25SimilarityFactory in your schema, the absolute scoring will be lower due to SOLR-13025. But ordering of documents will not change in the normal case. Use LegacyBM25SimilarityFactory if you need to force the old 6.x/7.x scoring. Note that if you have not specified any similarity in schema or use the default SchemaSimilarityFactory, then LegacyBM25Similarity is automatically selected for 'luceneMatchVersion' < 8.0.0. See also explanation in Reference Guide chapter "Other Schema Elements".
  • SOLR-12535: Solr no longer accepts index time boosts in JSON provided to Solr. This used to be provided like so: {'id':'1', 'val_s':{'value':'foo', 'boost':2.0}} but will now produce an error. A object/map structure will now only be interpreted as a child document or an atomic update; nothing else. A uniqueKey is currently required on all child documents to be interpreted as such, though this may change in the future.
  • (David Smiley)
  • SOLR-12633: When JSON data is sent to Solr with nested child documents split using the "split" parameter, the child docs will now be associated to their parents by the field/label string used in the JSON instead of anonymously. Most users probably won't notice the distinction since the label is lost any way unless special fields are in the schema. This choice used to be toggleable with an internal/expert "anonChildDocs" parameter flag which is now gone.
  • (David Smiley)
  • SOLR-11774: In 'langid' contrib, the LanguageIdentifierUpdateProcessor base class changed some method signatures. If you have a custom language identifier implementation you will need to adapt your code.
  • SOLR-9515: Hadoop dependencies have been upgraded to Hadoop 3.2.0 from 2.7.2.
  • (Mark Miller, Kevin Risden)
  • SOLR-5211: Deleting (or updating) documents by their uniqueKey is now scoped to only consider root documents, not child/nested documents. Thus a delete-by-id won't work on a child doc (no-op), and an attempt to update a child doc by providing a new doc with the same ID would add a new doc (probably erroneous). Both these actions were and still are problematic. In-place-updates are safe though. If you want to delete certain child documents and if you know they don't themselves have nested children then you must do so with a delete-by-query technique.
  • SOLR-13248: The default replica placement strategy used in Solr has been reverted to the 'legacy' policy used by Solr 7.4 and previous versions. This is due to multiple bugs in the autoscaling based replica placement strategy that was made default in Solr 7.5 which causes multiple replicas of the same shard to be placed on the same node in addition to the maxShardsPerNode and createNodeSet parameters being ignored. Although the default has changed, autoscaling will continue to be used if a cluster policy or preference is specified or a collection level policy is in use. The default replica placement strategy can be changed to use autoscaling again by setting a cluster property: curl -X POST -H 'Content-type:application/json' --data-binary ' { "set-obj-property": { "defaults" : { "cluster": { "useLegacyReplicaAssignment":false } } } }' http://$SOLR_HOST:$SOLR_PORT/api/cluster
  • olr nodes can now listen and serve HTTP/2 requests. Most of internal requests (sent by UpdateShardHandler, HttpShardHandler) Http2SolrClient is used. Since by default, internal requests are sent by using HTTP/2, Solr 8.0 nodes can't talk to old nodes (7.x). However we can follow these steps to do rolling updates:
  • Do rolling updates as normally, but the Solr 8.0 nodes must start with -Dsolr.http1=true as startup parameter. By using this parameter internal requests are sent by using HTTP/1.1
  • When all nodes are upgraded to 8.0, restart them, this time -Dsolr.http1 parameter should be removed.
  • New features:
  • SOLR-12591: Expand the set of recognized date format patterns of schemaless mode to subsume those handled by the "extract" contrib (Solr Cell / Tika). This is primarily a change in configuration of the default configSet for more patterns, but also included enabling "lenient" parsing in ParseDateFieldUpdateProcessorFactory. The default locale was changed from ROOT to en_US since well-known patterns assume this locale.
  • (David Smiley, Bar Rotstein)
  • SOLR-12879: MinHash query parser that builds queries providing a measure of Jaccard similarity
  • (Andy Hind via Tommaso Teofili)
  • SOLR-12593: The default configSet now includes an "ignored_*" dynamic field.
  • (David Smiley)
  • SOLR-12799: Allow Authentication Plugins to intercept internode requests on a per-request basis. The BasicAuth plugin now supports a new parameter 'forwardCredentials', and when set to 'true', user's BasicAuth credentials will be used instead of PKI for client initiated internode requests.
  • (janhoy, noble)
  • SOLR-12791: Add Metrics reporting for AuthenticationPlugin
  • (janhoy)
  • SOLR-12730: Implement staggered SPLITSHARD requests in IndexSizeTrigger.
  • (ab)
  • SOLR-12639: Umbrella JIRA for adding support HTTP/2
  • (Cao Manh Dat)
  • SOLR-12768: Improved nested document support, and enabled in the default schema with the presence of _nest_path_. When this field is present, certain things happen automatically. An internal URP is automatically used to populate it. The [child] (doc transformer) will return a hierarchy with relationships; no params needed. The relationship path is indexed for use in queries (can be disabled if not needed). Also, child documents needn't provide a uniqueKey value as Solr will supply one automatically by concatenating a path to that of the parent document's key.
  • (David Smiley, Moshe Bla).
  • SOLR-13134: Allow the knnRegress Stream Evaluator to more easily perform bivariate regression.
  • (Joel Bernstein)
  • SOLR-13104: Add natural and repeat Stream Evaluators
  • (Joel Bernstein)
  • SOLR-13147: Add movingMAD Stream Evaluator
  • (Joel Bernstein)
  • SOLR-13155: Add command-line option for testing autoscaling configurations.
  • (ab)
  • SOLR-13241: Add 'autoscaling' tool support to solr.cmd
  • (Jason Gerlowski)
  • Bug fixes:
  • SOLR-13058: Fix block that was synchronizing on the wrong collection in OverseerTaskProcessor
  • (Gus Heck)
  • SOLR-11774: langid.map.individual now works together with langid.map.keepOrig. Also the detectLanguage() API is changed to accept a Reader allowing for more memory efficient implementations
  • (janhoy)
  • SOLR-13126: Query boosts were not being combined correctly for documents where not all boost queries matched
  • (Alan Woodward, Mikhail Khludnev)
  • SOLR-13248: Autoscaling based replica placement is broken out of the box. Solr 7.5 enabled autoscaling based replica placement by default but in the absence of default cluster policies, autoscaling can place more than 1 replica of the same shard on the same node. Also, the maxShardsPerNode and createNodeSet was not respected. Due to these reasons, this issue reverts the default replica placement policy to the 'legacy' assignment policy that was the default until Solr 7.4.
  • (Gus Heck, Andrzej Bialecki, Bram Van Dam, shalin)
  • SOLR-13255 : ClasscastException when URPs try to read a String field which returns a ByteArrayUTF8CHarSequence . This is a regression in release 7.7
  • (noble)
  • SOLR-13299: Fix Windows startup script to disable HTTP/2 if TLS is enabled on Java 8.
  • (Uwe Schindler)
  • SOLR-13285: Updates with enum fields and javabin cause ClassCastException
  • (noble)
  • Improvements:
  • SOLR-5211: If _root_ is defined in the schema, it is now always populated automatically. This allows documents with children to be updated with a document that does not have children, whereas before it would break block-join queries. If you don't use nested documents then _root_ can be removed from the schema.
  • (Dr Oleg Savrasov, Moshe Bla, David Smiley, Mikhail Khludnev)
  • SOLR-6117: The response format has changed slightly for ReplicationHandler error-cases. All errors now have a non-200 'status' field, a 'message' field giving more details on the error, and an optional 'exception' field.
  • (Shalin Mangar, Jason Gerlowski)
  • SOLR-12888: The NestedUpdateProcessor (which populates internal fields for nested child docs) is now auto-registered to run immediately prior to RunUpdateProcessor. If the schema has no _nest_*_ fields then it's a no-op. RunUpdateProcessorFactory looks up a special/internal URP chain "_preRun_" which is implicitly defined but could be defined by an app for customization if desired.
  • (David Smiley)
  • Optimizations:
  • SOLR-12725: ParseDateFieldUpdateProcessorFactory should reuse ParsePosition.
  • (ab)
  • SOLR-13025: Due to LUCENE-8563, the BM25Similarity formula no longer includes the (k1+1) factor in the numerator This gives a lower absolute score but doesn't affect ordering, as this is a constant factor which is the same for every document. Use LegacyBM25SimilarityFactory if you need the old 6.x/7.x scoring. See also upgrade notes
  • (janhoy)
  • SOLR-13130: during the ResponseBuilder.STAGE_GET_FIELDS directly copy string bytes and avoid creating String Objects
  • (noble)
  • Other changes:
  • SOLR-12614: Make "Nodes" view the default in AdminUI "Cloud" tab
  • (janhoy)
  • SOLR-12586: Upgrade ParseDateFieldUpdateProcessorFactory (present in "schemaless mode") to use Java 8's java.time.DateTimeFormatter instead of Joda time (see upgrade notes). "Lenient" is enabled. Removed Joda Time dependency.
  • (David Smiley, Bar Rotstein)
  • SOLR-5163: edismax now throws an exception when qf refers to a nonexistent field
  • (Charles Sanders, David Smiley)
  • SOLR-12805: Store previous term (generation) of replica when start recovery process
  • (Cao Manh Dat)
  • SOLR-12652: Remove SolrMetricManager.overridableRegistryName method
  • (Peter Somogyi via David Smiley)
  • LUCENE-8513: SlowCompositeReaderWrapper now uses MultiTerms directly instead of MultiFields
  • (David Smiley)
  • SOLR-11812: Remove backward compatibility of old LIR implementation in 8.0
  • (Cao Manh Dat)
  • SOLR-12620: Remove the Admin UI Cloud -> Graph (Radial) view
  • (janhoy)
  • SOLR-12775: LowerCaseTokenizer is deprecated, and should be replaced by LetterTokenizer and LowerCaseFilter
  • (Alan Woodward)
  • SOLR-13036: Fix retry logic in JettySolrRunner
  • (Gus Heck)
  • SOLR-12535: Solr no longer accepts index time boosts in JSON provided to Solr.
  • (David Smiley)
  • SOLR-13086: Improve the error message reported by DocumentObjectBinder when a setter is not found
  • (Gus Heck)
  • SOLR-12365: Renamed class Config to XmlConfigFile
  • (David Smiley)
  • SOLR-9515: Hadoop dependencies have been upgraded to Hadoop 3.2.0 from 2.7.2.
  • (Mark Miller, Kevin Risden)

New in Apache Solr 7.7.1 (Mar 1, 2019)

  • Bugfix for ClassCastException when URPs try to read a String field which returns a ByteArrayUTF8CHarSequence (a regression in release 7.7.0).
  • Bugfix: Autoscaling based replica placement was broken out of the box. Solr 7.5 enabled autoscaling based replica placement by default but in the absence of default cluster policies, autoscaling can place more than 1 replica of the same shard on the same node. Also, the maxShardsPerNode and createNodeSet was not respected. Due to these reasons, this issue reverts the default replica placement policy to the 'legacy' assignment policy that was the default until Solr 7.4.

New in Apache Solr 7.7.0 (Feb 11, 2019)

  • Solr is the popular, blazing fast, open source NoSQL search platform from the Apache Lucene project. Its major features include powerful full-text search, hit highlighting, faceted search, dynamic clustering, database integration, rich document (e.g., Word, PDF) handling, and geospatial search. Solr is highly scalable, providing fault tolerant distributed search and indexing, and powers the search and navigation features of many of the world's largest internet sites.

New in Apache Solr 7.6.0 (Dec 17, 2018)

  • Field and FieldType now support a new uninvertible option to control using costly field cache or more efficient docValues.
  • Collections API has been improved to support adding multiple replicas to a collection shard at a time as well as splitting into multiple sub-shards directly..
  • Autoscaling's suggestions API now include rebalance options as well as suggestions to add new replicas for lost replicas.
  • Several new Stream Evaluators have been added to include: oscillate, convexHull, enclosingDisk, pairSort, log10, percentiles, and pivot for geometric and scientific analysis.
  • UnifiedHighlighter has been improved to support best/perfect highlighting accuracy and full phrase highlighting.

New in Apache Solr 7.5.0 (Sep 24, 2018)

  • Nested/child documents may now be supplied as a field value instead of stand-off. Future releases will leverage this semantic information.
  • Enhance Autoscaling policy support to equally distribute replicas on the basis of arbitrary properties.
  • Nodes are now visible inside a view of the Admin UI "Cloud" tab, listing nodes and key metrics.
  • The status of zookeeper ensemble is now accessible under the Admin UI Cloud tab.
  • The new Korean morphological analyzer ("nori") has been added to default distribution.

New in Apache Solr 7.5.0 (Sep 24, 2018)

  • Nested/child documents may now be supplied as a field value instead of stand-off. Future releases will leverage this semantic information.
  • Enhance Autoscaling policy support to equally distribute replicas on the basis of arbitrary properties.
  • Nodes are now visible inside a view of the Admin UI "Cloud" tab, listing nodes and key metrics.
  • The status of zookeeper ensemble is now accessible under the Admin UI Cloud tab.
  • The new Korean morphological analyzer ("nori") has been added to default distribution.

New in Apache Solr 7.4.0 (Jun 27, 2018)

  • A new 'relatedness()' aggregate function for JSON Faceting to enable building Semantic Knowledge Graphs.
  • Added the TaggerRequestHandler (AKA SolrTextTagger) for tagging text. It's used as a component of NER/ERD systems including query-understanding.
  • The "Auto Scaling" feature area has been added to and enhanced a lot.
  • The "Streaming Expressions" feature area has been added to and enhanced a lot.
  • Upgraded from Log4j 1.x to 2.x. Solr continues to log via SLF4J.

New in Apache Solr 7.3.1 (May 15, 2018)

  • This release includes 9 bug fixes since the 7.3.0 release. Some of the major fixes are:
  • Upgrade commons-fileupload dependency to 1.3.3 to address CVE-2016-1000031
  • Deleting replicas sometimes fails and causes the replicas to exist in the down state
  • A successful restore collection should mark the shard state as active and not buffering
  • Do not allow to use absolute URIs for including other files in solrconfig.xml and schema parsing
  • Furthermore, this release includes Apache Lucene 7.3.1 which includes 1 bug fix since the 7.3.0 release.

New in Apache Solr 7.3.0 (Apr 5, 2018)

  • Fixed bug in how CheckIndex verifies doc-value iterators.

New in Apache Solr 7.2.0 (Dec 22, 2017)

  • Bi-directional syncing of CDCR clusters is now supported.
  • The new synonymQueryStyle field type option allows for better scoring when terms at the same position are hyponyms/hypernyms rather than synonyms.
  • More stream evaluators, including: matrix operations; spline; derivative; regression; normalization; scaling; correlation; markov chains; time series differencing; and triangular and geometric distributions.
  • The new facet.matches parameter returns facet buckets only for terms that match a regular expression.
  • New Autoscaling features: the autoscaling/suggestions API end-point; the UTILIZENODE command, which moves replicas according to autoscaling policies and preferences; and the Autoscaling set-property command.

New in Apache Solr 7.1.0 (Oct 25, 2017)

  • 'autoAddReplicas' feature is ported to autoscaling framework. Existing users of this feature should not have
  • to change anything. Note these changes:
  • 1. Behaviour: Changing the autoAddReplicas property from disabled to enabled using MODIFYCOLLECTION API
  • no longer replaces down replicas for the collection immediately. Instead, replicas are only added
  • if a node containing them went down while autoAddReplicas was enabled. The params
  • autoReplicaFailoverBadNodeExpiration and autoReplicaFailoverWorkLoopDelay are no longer used.
  • 2. Deprecations: Enabling/disabling autoAddReplicas cluster wide with the API will be deprecated; use
  • suspend/resume trigger APIs with name='.auto_add_replicas' instead.
  • SOLR-11195: shard and cluster metric reporter configuration now requires a class attribute.
  • If a reporter configures the group="shard" attribute then please also configure the
  • class="org.apache.solr.metrics.reporters.solr.SolrShardReporter" attribute.
  • If a reporter configures the group="cluster" attribute then please also configure the
  • class="org.apache.solr.metrics.reporters.solr.SolrClusterReporter" attribute.
  • SOLR-11254: the abstract DocTransformer class now has an abstract score-less transform method variant.
  • SOLR-11283: all Stream Evaluators in solrj.io.eval have been refactored to have a simplier and more
  • robust structure. This simplifies and condenses the code required to implement a new Evaluator and
  • makes it much easier for evaluators to handle differing data types (primitives, objects, arrays,
  • lists, and so forth). (Dennis Gove)
  • SOLR-10962: in the ReplicationHandler the master.commitReserveDuration sub-element is deprecated. Instead
  • please configure a direct commitReserveDuration element for use in all modes (master, slave, cloud).
  • SOLR-11482: RunExecutableListener was removed for security reasons. If you want to listen to
  • events caused by updates, commits, or optimize, write your own listener as native Java class
  • as part of a Solr plugin.
  • SOLR-11477: in the XML query parser (defType=xmlparser or {!xmlparser ... })
  • the resolving of external entities is now disallowed by default.
  • New Features:
  • SOLR-10339: New set-trigger and remove-trigger APIs for autoscaling. (shalin)
  • SOLR-10340: New set-listener and remove-listener API for autoscaling. (shalin)
  • SOLR-10358: New suspend-trigger and resume-trigger APIs for autoscaling. (shalin)
  • SOLR-10376: Implement autoscaling trigger for nodeAdded event. (shalin)
  • SOLR-10396: Implement trigger support for nodeLost event type (Cao Manh Dat, shalin)
  • SOLR-10496: New ComputePlanAction for autoscaling which uses the policy framework to compute cluster
  • operations upon a trigger fire. (Noble Paul, shalin)
  • SOLR-10965: New ExecutePlanAction for autoscaling which executes the operations computed by ComputePlanAction
  • against the cluster. (shalin)
  • SOLR-11019: Add addAll Stream Evaluator (Joel Bernstein)
  • SOLR-10996: Implement TriggerListener API (ab, shalin)
  • SOLR-11046: Add residuals Stream Evaluator (Joel Bernstein)
  • SOLR-10858: Make UUIDUpdateProcessorFactory as Runtime URP (Amit Sarkar, noble)
  • SOLR-11126: Node level health check handler (Anshum Gupta)
  • SOLR-11031: Implement SystemLogListener for autoscaling (ab)
  • SOLR-11205: Any metrics value can be directly accessed in autoscaling policies (noble)
  • SOLR-11199: Payloads supports an "operator" param. Supported operators are 'or', "phrase" ( default ).
  • A new "sum" function is also added. Example :
  • {!payload_score f=payload_field func=sum operator=or}A B C" (Varun Thacker)
  • SOLR-11215: Make a metric accessible through a single param. (ab)
  • SOLR-11244: Query DSL for Solr (Cao Manh Dat)
  • SOLR-11317: JSON Facet API: min/max aggregations on numeric fields are now typed better so int/long
  • fields return an appropriate integral type rather than a double. (yonik)
  • SOLR-11316: JSON Facet API: min/max aggregations are now supported on single-valued date fields.
  • (yonik)
  • SOLR-10962: Make ReplicationHandler's commitReserveDuration configurable in SolrCloud mode.
  • (Ramsey Haddad, Christine Poerschke, hossman)
  • SOLR-11382: Lucene's Geo3D (surface of sphere & ellipsoid) is now supported on spatial RPT fields by
  • setting spatialContextFactory="Geo3D". Furthermore, this is the first time Solr has out of the box
  • support for polygons. (David Smiley)
  • SOLR-11160: Add normalDistribution, uniformDistribution, sample and kolmogorovSmirnov Stream Evaluators
  • (Joel Bernstein)
  • SOLR-11225: Add cumulativeProbability Stream Evaluator (Joel Bernstein)
  • SOLR-11241: Add discrete counting and probability Stream Evaluators (Joel Bernstein)
  • SOLR-11321: Add ebeAdd, ebeSubtract, ebeDivide, ebeMultiply, dotProduct and cosineSimilarity Stream Evaluators
  • (Joel Bernstein)
  • SOLR-11338: Add Kendall's Tau-b rank and Spearmans rank correlation Stream Evaluators (Joel Bernstein)
  • SOLR-11339: Add Canberra, Chebyshev, Earth Movers and Manhattan Distance Stream Evaluators (Joel Bernstein)
  • SOLR-11342: Add sumDifference and meanDifference Stream Evaluators (Joel Bernstein)
  • SOLR-11350: Add primes Stream Evaluator (Joel Bernstein)
  • SOLR-11354: Add factorial and movingMedian Stream Evaluators (Joel Bernstein)
  • SOLR-11377: Add expMovingAverage (exponential moving average) and binomialCoefficient Stream Evaluators
  • (Mathew Skaria, Joel Bernstein)
  • SOLR-11388: Add monteCarlo Stream Evaluator to support Monte Carlo simulations (Joel Bernstein)
  • SOLR-11398: Add weibullDistribution Stream Evaluator (Joel Bernstein)
  • SOLR-11400: Add logNormalDistribution Stream Evaluator (Joel Bernstein)
  • SOLR-11401: Add zipFDistribution Stream Evaluator (Joel Bernstein)
  • SOLR-11414: Add gammaDistribution Stream Evaluator (Joel Bernstein)
  • SOLR-11415: Add betaDistribution Stream Evaluator (Joel Bernstein)
  • SOLR-11436: Add polyfit and polyfitDerivative Stream Evaluators (Joel Bernstein)
  • SOLR-11439: Add harmonicFit Stream Evaluator (Joel Bernstein)
  • SOLR-11076: New /autoscaling/history API to return past cluster events and actions. (ab)
  • Bug Fixes:
  • SOLR-10602: Triggers should be able to restore state from old instances when taking over. (shalin)
  • SOLR-10714: OverseerTriggerThread does not start triggers on overseer start until autoscaling
  • config watcher is fired. (shalin)
  • SOLR-10738: TriggerAction is initialised even if the trigger is never scheduled. (shalin)
  • SOLR-10668: fix NPE at sort=childfield(..) .. on absent values (Mikhail Khludnev)
  • SOLR-8984: EnumField's error reporting to now indicate the field name in failure log (Lanny Ripple,
  • Ann Addicks via Ishan Chattopadhyaya)
  • SOLR-11012: Fix three (JavaBinCodec not being closed) Resource Leak warnings. (Christine Poerschke)
  • SOLR-11026: MoveReplicaSuggester must check if the target becomes more 'loaded' than the source
  • if an operation is performed (noble)
  • SOLR-10994: CREATE, CREATESHARD & ADDREPLICA to use policy framework & support replica types (noble)
  • SOLR-11011: Assign.buildCoreName can lead to error in creating a new core when legacyCloud=false (Cao Manh Dat)
  • SOLR-10944: Get expression fails to return EOF tuple (Susheel Kumar, Joel Bernstein)
  • SOLR-6086: Replica is active during autowarming resulting in queries being sent to a replica that
  • may not have a registered searcher. This causes spikes in response times when adding a replica
  • in busy clusters. (Ludovic Boutros, Timothy Potter, shalin)
  • SOLR-11190: GraphQuery also supports string fields which are indexed=false and docValues=true. Please refer to the
  • Javadocs for DocValuesTermsQuery for it's performance characteristics. (Karthik Ramachandran, Varun Thacker)
  • SOLR-11084: Issue with starting script with solr.home (-s) == solr (Leil Ireson, Amrit Sarkar via Erick Erickson)
  • SOLR-11255: Fix occasional ConcurrentModificationException when using SolrInfoMBeanHandler. (ab)
  • SOLR-11272: fix NPE when EmbeddedSolrServer handles /admin/* request and so one (Stephen Allen via Mikhail Khludnev)
  • SOLR-11289: fix comma handling in terms component. (yonik)
  • SOLR-11164, SOLR-11180, SOLR-11220: Fix NullPointerException and always-returns-zero
  • contrib/ltr OriginalScoreFeature issues in SolrCloud mode.
  • (Yuki Yano, Jonathan Gonzalez, Ryan Yacyshyn, Christine Poerschke)
  • SOLR-11278: Stopping CDCR should cancel a running bootstrap operation. (Amrit Sarkar, shalin)
  • SOLR-11293: Potential data loss in TLOG replicas when masterVersion equals zero (noble, Cao Manh Dat)
  • SOLR-10101: TestLazyCores hangs (Erick Erickson)
  • SOLR-11332: Fix sorting on 'enum' fieldTypes that use sortMissingFirst or sortMissingLast (hossman)
  • SOLR-11348: Fix the DIH database example (James Dyer)
  • SOLR-11363: JSON Facet API: repeated values in a numeric points field with docValues enabled
  • were double counted. (Hossman, yonik)
  • SOLR-11085: Improve resiliency of autoscaling actions against overseer restarts and operation failures. (shalin)
  • SOLR-11297: Message "Lock held by this virtual machine" during startup. Solr is trying to start some cores twice.
  • (Luiz Armesto, Shawn Heisey, Erick Erickson)
  • SOLR-11399: The UnifiedHighlighter was ignoring the hl.fragsize parameter when hl.bs.type=SEPARATOR
  • (Marc Morissette via David Smiley)
  • SOLR-11224: SolrStream.close can hit an NPE (Erick Erickson)
  • SOLR-11278: Fix a race condition in the CDCR bootstrap process which could lead to bootstraps cancelling itself
  • (Amrit Sarkar, shalin, Varun Thacker)
  • SOLR-11425: SolrClientBuilder does not allow infinite timeout (value 0). (Peter Szantai-Kis via Mark Miller)
  • SOLR-11449: MoveReplicaCmd mistakenly called registerCollectionStateWatcher on failure. (ab)
  • SOLR-11477: Disallow resolving of external entities in the XML query parser (defType=xmlparser).
  • (Michael Stepankin, Olga Barinova, Uwe Schindler, Christine Poerschke)
  • Optimizations:
  • SOLR-10985: Remove unnecessary toString() calls in solr-core's search package's debug logging.
  • (Michael Braun via Christine Poerschke)
  • SOLR-11124: MoveReplicaCmd should skip deleting old replica in case of its node is not live (Cao Manh Dat)
  • SOLR-10769: Allow nodeAdded / nodeLost events to report multiple nodes in one event. (ab)
  • SOLR-11242: QueryParser: re-use the LookaheadSuccess exception. (Michael Braun via David Smiley)
  • SOLR-11314: FastCharStream: re-use the READ_PAST_EOF exception. (Michael Braun via David Smiley)
  • SOLR-8344: Decide default when requested fields are both column and row stored. (Cao Manh Dat, David Smiley)
  • SOLR-10285: Skip LEADER messages when there are leader only shards (Cao Manh Dat, Joshua Humphries)
  • SOLR-11424: When legacyCloud=false, cores should not publish itself as DOWN on startup. (Cao Manh Dat)
  • Other Changes:
  • SOLR-10643: Throttling strategy for triggers and policy executions. (shalin)
  • SOLR-10764: AutoScalingHandler should validate policy and preferences before updating zookeeper. (shalin)
  • SOLR-10827: Factor out abstract FilteringSolrMetricReporter class. (Christine Poerschke)
  • SOLR-10957: Changed SolrCoreParser.init to use the resource loader from getSchema()
  • instead of the resource loader from getCore(). (Christine Poerschke)
  • SOLR-10748: Make stream.body configurable and disabled by default (janhoy)
  • SOLR-10964: Reduce SolrIndexSearcher casting in LTRRescorer. (Christine Poerschke)
  • SOLR-11075: Refactor handling of params in CloudSolrStream and FacetStream (Erick Erickson)
  • SOLR-11052: Remove unnecessary Long-to-Integer and back casts in ReplicationHandler.
  • (Ramsey Haddad via Christine Poerschke)
  • SOLR-11106: TestLBHttpSolrClient.testReliablity takes 30 seconds because of the wrong server name
  • (Kensho Hirasawa via Erick Erickson)
  • SOLR-10338: Configure SecureRandom non blocking for tests. (Mihaly Toth, hossman, Ishan Chattopadhyaya, via Mark Miller)
  • SOLR-10916: Convert tests that extend LuceneTestCase and use MiniSolrCloudCluster
  • to instead extend SolrCloudTestCase. (Steve Rowe)
  • SOLR-11131: Document 'assert' as a command option in bin/solr, and bin/solr.cmd scripts.
  • (Jason Gerlowski via Anshum Gupta)
  • SOLR-11140: Remove unused parameter in (private) SolrMetricManager.prepareCloudPlugins method.
  • (Omar Abdelnabi via Christine Poerschke)
  • SOLR-11187: contrib/ltr TestModelManagerPersistence improvements. (Yuki Yano via Christine Poerschke)
  • SOLR-10397: Port 'autoAddReplicas' feature to the autoscaling framework and make it work with non-shared filesystems
  • (Cao Manh Dat, shalin)
  • SOLR-11157: remove-policy must fail if a policy to be deleted is used by a collection (noble)
  • SOLR-11090: Add Replica.getProperty accessor. (Christine Poerschke)
  • SOLR-11061: Add a spins metric for data directory paths. (ab)
  • SOLR-11071: Improve TestIntervalFacets.testRandom (Tomás Fernández Löbbe)
  • SOLR-11195: Require class attribute for shard and cluster metric reporter configuration. (Christine Poerschke)
  • SOLR:10822: Share a Policy.session object between multiple collection admin calls to get the correct computations (noble)
  • SOLR-11249: Upgrade Jetty from 9.3.14.v20161028 to 9.3.20.v20170531 (Michael Braun via David Smiley)
  • SOLR-11270: Automatically added SystemLogListener should not prevent deleting a trigger. (ab)
  • SOLR-5129: Timeout property for waiting ZK get started. (Cao Manh Dat, Hrishikesh Gadre, Varun Thacker)
  • SOLR-10628: Less verbose output from bin/solr commands. (Jason Gerlowski, janhoy)
  • SOLR-11240: Raise UnInvertedField internal limit. (Toke Eskildsen)
  • SOLR-11254: Add score-less (abstract) DocTransformer.transform method. (Christine Poerschke)
  • SOLR-11209: Upgrade HttpClient to 4.5.3. (Hrishikesh Gadre via Mark Miller)
  • SOLR-11322: JSON Facet API: instead of returning NaN, min & max aggregations omit
  • the value for any bucket with no values in the numeric field. (yonik)
  • SOLR-10990: Breakup QueryComponent.process method for readability. (Christine Poerschke)
  • SOLR-11132: Refactor common getSortField logic in various FieldTypes (Jason Gerlowski, hossman)
  • SOLR-11351: Make LTRScoringModel model more extensible. (Christine Poerschke)
  • SOLR-10451: Remove contrib/ltr/lib from lib includes in the techproducts example config (sungjunyoung via janhoy)
  • SOLR-11306: Fix inaccurate comments on docValues and StrField in the example schemas
  • (Tom Burton-West, Jason Gerlowski, Varun Thacker)
  • SOLR-11482: RunExecutableListener was removed for security reasons. (Michael Stepankin,
  • Olga Barinova, Uwe Schindler, Tomás Fernández Löbbe)

New in Apache Solr 5.4.0 (Dec 15, 2015)

  • UI Changes:
  • The rearchitected Admin UI is now prominently linked to from the existing UI, and includes support for managing collections as well as creating and removing fields via the schema tab. Expect it to be default in the next release.
  • API Features:
  • New Collections APIs for migrating from clusterstate.json to per-collection state.json and forcing the election of a leader when all replicas in a shard are down.
  • A new configset management API has been added.
  • Querying Features:
  • Filter cache is now accessible via a solr query syntax.
  • ScoreJoins can now refer to a single-sharded collection that is replicated on all nodes.
  • Add boost support, and 'exclude the queried document' in MoreLikeThis QParser.
  • Add a 'sort' local param to the collapse QParser to support using complex sort options to select the representitive doc for each collapsed group.
  • Other Features:
  • SolrJ now has support for connecting to Solr using basic authentication.
  • Analyzing suggesters can now filter suggestions by a context field.
  • JSON Facet API: add "method" param to terms/field facets to give an execution hint for what method should be used to facet.
  • CloneFieldUpdateProcessorFactory now supports choosing a "dest" field name based on a regex pattern and replacement init options.
  • Provide pluggable context tool support for VelocityResponseWriter.

New in Apache Solr 5.3.1 (Oct 2, 2015)

  • Bug Fixes:
  • Remove classloader hack in MorfologikFilter
  • UsageTrackingQueryCachingPolicy no longer caches trivial queries like
  • MatchAllDocsQuery
  • Fixed BoostingQuery to rewrite wrapped queries
  • security.json is not loaded on server start
  • RuleBasedAuthorization plugin does not work for the collection-admin-edit
  • permission
  • VelocityResponseWriter template encoding issue. Templates must be UTF-8 encoded
  • SimplePostTool (also bin/post) -filetypes "*" now works properly in 'web' mode
  • example/files update-script.js to be Java 7 and 8 compatible.
  • SolrJ could not make requests to handlers with '/admin/' prefix
  • Use of timeAllowed can cause incomplete filters to be cached and incorrect
  • results to be returned on subsequent requests
  • VelocityResponseWriter's $resource.get(key,baseName,locale) to use specified
  • locale.
  • Resolve XSS issue in Admin UI stats page

New in Apache Solr 5.3.0 (Aug 24, 2015)

  • New Features:
  • SOLR-7724: SolrJ now supports parsing the output of the clustering component.
  • SOLR-7389: Expose znodeVersion property for each of the collections returned for the clusterstatus operation in the collections API
  • SOLR-7622: A DocTransformer can now request fields from the SolrIndexSearcher that are not necessarily returned in the file SolrDocument by returning a list of fields from
  • SOLR-7458: Expose HDFS Block Locality Metrics via JMX
  • SOLR-7676: Faceting on nested objects / Block-join faceting with the new JSON Facet API. Example: Assuming books with nested pages and an input domain of pages, the following will switch the domain to books before faceting on the author field: authors:{ type:terms, field:author, domain:{toParent:"type:book"} }
  • SOLR-7668: Add 'port' tag support in replica placement rules
  • SOLR-5886: Response for an async call is now stored in zk so that it can be returned by the REQUESTSTATUS API. Also, the number of stored (failed and successful) responses are now restricted to 10,000 each as a safety net.
  • SOLR-7639: MoreLikeThis QParser now supports all options provided by the MLT Handler i.e. mintf, mindf, minwl, maxwl, maxqt, and maxntp.
  • SOLR-7182: Make the Schema-API a first class citizen of SolrJ. The new SchemaRequest and its inner classes can be used to make requests to the Schema API.
  • SOLR-7651: New response format added wt=smile
  • SOLR-4212: SOLR-6353: Let facet queries and facet ranges hang off of pivots. Example: facet.range={!tag=r1}price&facet.query={!tag=q1}somequery&facet.pivot={!range=r1 query=q1}category,manufacturer
  • SOLR-7742: Support for Immutable ConfigSets
  • SOLR-6234: Scoring for query time join
  • SOLR-2522: new two argument option for the existing field() function; picks the min/max value of a docValues field to use as a ValueSource: "field(field_name,min)" and "field(field_name,max)"
  • SOLR-5882: score local parameter for block join query parser {!parent}
  • SOLR-7799: Added includeIndexFieldFlags (backwards compatible default is true) to /admin/luke. When there are many fields in the index, setting this flag to false can dramatically speed up requests.
  • SOLR-7769: Add bin/post -p alias for -port parameter.
  • SOLR-7849: Solr-managed inter-node authentication when authentication enabled
  • SOLR-7766: support creation of a coreless collection via createNodeSet=EMPTY
  • SOLR-7757: Improved security framework where security components can be edited/reloaded, Solr now watches /security.json. Components can choose to make their config editable
  • SOLR-7838: An authorizationPlugin interface where the access control rules are stored/managed in ZooKeeper
  • SOLR-7837: An AuthenticationPlugin which implements the HTTP BasicAuth protocol and stores credentials securely in ZooKeeper
  • Bug fixes:
  • SOLR-7361: Slow loading SolrCores should not hold up all other SolrCores that have finished loading from serving requests.
  • SOLR-4506: Clean-up old (unused) index directories in the background after initializing a new index; previously, Solr would leave old index.yyyyMMddHHmmssSSS directories left behind after failed recoveries in the data directory, which unnecessarily consumes disk space.
  • SOLR-7108: Change default query used by /admin/ping to not rely on other parameters such as query parser or default field.
  • SOLR-6835: ReRankQueryParserPlugin checks now whether the reRankQuery parameter is present and not empty.
  • SOLR-7566: Search requests should return the shard name that is down.
  • SOLR-7675: Add missing _root_ field to managed-schema template so that the default data driven config set can index nested documents by default.
  • SOLR-7635: Limit lsof port check in bin/solr to just listening ports
  • SOLR-7091: Nested documents with unknown fields don't work in schemaless mode.
  • SOLR-7682: Schema API: add-copy-field should accept the maxChars parameter.
  • SOLR-7693: Fix the bin/solr -e cloud example to work if lsof is not installed on the local machine by waiting for 10 seconds before starting the second node.
  • SOLR-7689: ReRankQuery rewrite method can change the QueryResultKey causing cache misses.
  • SOLR-7697: Schema API doesn't take class or luceneMatchVersion attributes into account for the analyzer when adding a new field type.
  • SOLR-7679: Schema API doesn't take similarity attribute into account when adding field types.
  • SOLR-7664: Throw correct exception (RemoteSolrException) on receiving a HTTP 413.
  • SOLR-6686: facet.threads can return wrong results when using facet.prefix multiple times on same field.
  • SOLR-7673: Race condition in shard splitting can cause operation to hang indefinitely or sub-shards to never become active.
  • SOLR-7741: Add missing fields to SolrIndexerConfig.toMap
  • SOLR-7748: Fix bin/solr to start on IBM J9.
  • SOLR-7143: MoreLikeThis Query parser should handle multiple field names
  • SOLR-7132: The Collections API ADDREPLICA command property.name is not reflected in the clusterstate until after Solr restarts
  • SOLR-7172: addreplica API fails with incorrect error msg "cannot create collection"
  • SOLR-7705: CoreAdminHandler Unload no longer handles null core name and throws NPE instead of a bad request error.
  • SOLR-7529: CoreAdminHandler Reload throws NPE on null core name instead of a bad request error.
  • SOLR-7781: JSON Facet API: Terms facet on string/text fields with sub-facets caused a bug that resulted in filter cache lookup misses as well as the filter cache exceeding it's configured size.
  • SOLR-7810: map-reduce contrib script to set classpath for convenience refers to example rather than server.
  • SOLR-7765: Hardened the behavior of TokenizerChain when null arguments are used in constructor. This prevents NPEs in some code paths.
  • SOLR-7829: Fixed a bug in distributed pivot faceting that could result in a facet.missing=true count which was lower then the correct count if facet.sort=index and facet.pivot.mincount > 1
  • SOLR-7842: ZK connection loss or session expiry events should not fire config directory listeners.
  • SOLR-6357: Allow delete documents by doing a score join query.
  • SOLR-7756: Fixed ExactStatsCache and LRUStatsCache to not throw an NPE when a term is not present on a shard.
  • SOLR-7818: Fixed distributed stats to be calculated for all the query terms. Earlier the stats were calculated with the terms that are present in the last shard of a distributed request.
  • SOLR-7866: VersionInfo caused an unhandled NPE when trying to determine the max value for the version field.
  • SOLR-7666 (and linked tickets): Many fixes to AngularJS Admin UI bringing it close to feature parity with existing UI.)
  • SOLR-7908: SegmentsInfoRequestHandler gets a ref counted IndexWriter and does not properly release it.
  • SOLR-7921: The techproducts example fails when running in a directory that contains spaces.
  • SOLR-7934: SolrCLI masks underlying cause of create collection failure.
  • SOLR-7920: Resolve XSS issue in Admin UI Schema Browser
  • Optimizations:
  • SOLR-7660: Avoid redundant 'exists' calls made to ZK while fetching cluster state updates.
  • SOLR-7714: Reduce SearchHandler's use of ShardHandler objects across shards in a search, from one for each shard and the federator, to just one for the federator.
  • SOLR-7751: Minor optimizations to QueryComponent.process (reduce eager instantiations, cache method calls)
  • SOLR-7455: Terms facets with the JSON Facet API now defer calculating non-sorting stats until a second phase, after the top N facets are found. This improves performance proportional to the number of non-sorting statistics being calculated in addition to the number of buckets and domain documents. For Example: The facet request {type:terms, field:field1, facet:{x:"unique(field2)"}} saw a 7x improvement when field1 and 1M unique terms and field2 had 1000 unique terms.
  • SOLR-7840: ZkStateReader.updateClusterState fetches watched collections twice from ZK.
  • SOLR-7875: Speedup SolrQueryTimeoutImpl. Avoid setting a timeout time when timeAllowed parameter is not set.
  • Other changes:
  • SOLR-7787: Removed fastutil and java-hll dependency, integrated HyperLogLog from java-hll into Solr core.
  • SOLR-7595: Allow method chaining for all CollectionAdminRequests in Solrj.
  • SOLR-7146: MiniSolrCloudCluster based tests can fail with ZooKeeperException NoNode for /live_nodes.
  • SOLR-7590: Finish and improve MDC context logging support.
  • SOLR-7599: Remove cruft from SolrCloud tests.
  • SOLR-7636: CLUSTERSTATUS API is executed at CollectionsHandler
  • LUCENE-6508: Remove ability to forcefully unlock an index. This is no longer supported by the underlying Lucene locking framework.
  • SOLR-3719: Add as-you-type "instant search" to example/files /browse.
  • SOLR-7645: Remove explicitly defined request handlers from example and test solrconfig's that are already defined implicitly, such as /admin/ping, /admin/system, and several others.
  • SOLR-7603: Fix test only bug in UpdateRequestProcessorFactoryTest
  • SOLR-7634: Upgrade Jetty to 9.2.11.v20150529
  • SOLR-7659: Rename releaseCommitPointAndExtendReserve in DirectoryFileStream to extendReserveAndReleaseCommitPoint, and reverse the code to match.
  • SOLR-7624: Add correct spelling (zkCredentialsProvider) as an alternative to zkCredientialsProvider element in solrcloud section of solr.xml.
  • SOLR-7619: Fix SegmentsInfoRequestHandlerTest when more than one segment is created.
  • SOLR-7678: Switch RTimer to use nanoTime (improves accuracy of QTime, and other times returned by Solr handlers)
  • SOLR-7680: Use POST instead of GET when finding versions for mismatches with CloudInspectUtil for tests
  • SOLR-7662: Refactored response writing to consolidate the logic in one place
  • SOLR-7665: deprecate the class TransformerWithContext
  • SOLR-7629: Have RulesTest consider disk space limitations of where the test is being run
  • SOLR-7499: The "name" parameter in ADDREPLICA Collections API call has be deprecated. One cannot specify the core name for a replica
  • SOLR-7711: Correct initial capacity for the list that holds the default components for the SearchHandler
  • SOLR-7485: Replace shards.info occurrences with ShardParams.SHARDS_INFO
  • SOLR-7710: Replace async occurrences with CommonAdminParams.ASYNC
  • SOLR-7712: fixed test to account for aggregate floating point precision loss
  • SOLR-7740: Fix typo bug with TestConfigOverlay
  • SOLR-7750: Change TestConfig.testDefaults to cover all SolrIndexConfig fields
  • SOLR-7703: Authentication plugin is now loaded using the ResourceLoader.
  • SOLR-7800: JSON Facet API: the avg() facet function now skips missing values rather than treating them as a 0 value. The def() function can be used to treat missing values as 0 if that is desired. Example: facet:{ mean:"avg(def(myfield,0))" }
  • SOLR-7805: Update Kite Morphlines to 1.1.0
  • SOLR-7803: Prevent class loading deadlock in TrieDateField; refactor date formatting and parsing out of TrieDateField and move to static utility class DateFormatUtil.
  • SOLR-7825: Forbid all usages of log4j and java.util.logging classes in Solr except classes which are specific to logging implementations. Remove accidental usage of log4j logger from a few places. The default log level for org.apache.zookeeper is changed from ERROR to WARN for zkcli.{sh,cmd} only.
  • SOLR-7227: Ship Solr with the Web application directory exploded into server/solr-webapp, solr.war is no longer included in the distribution bundles.
  • SOLR-6625: Enable registering interceptors for the calls made using HttpClient and make the request object available at the interceptor context
  • SOLR-5022: On Java 7 raise permgen for running tests.
  • SOLR-7823: TestMiniSolrCloudCluster.testCollectionCreateSearchDelete async collection-creation (sometimes)
  • SOLR-7735: Look for solr.xml in Zookeeper by default in SolrCloud mode. If not found, it will be loaded from $SOLR_HOME/solr.xml as before. Sysprop solr.solrxml.location is now gone.
  • SOLR-7854: Remove unused ZkStateReader.updateClusterState(false) method.
  • SOLR-7863: Lowercase the CLUSTERPROP command in ZkCLI for consistency, print error for unknown cmd
  • SOLR-7832: bin/post now allows either -url or -c, rather than requiring both.
  • SOLR-7847: Implement run example logic in Java instead of OS-specific scripts in bin/solr and bin\solr.cmd
  • SOLR-7877: TestAuthenticationFramework.testBasics to preserve/restore the original request(Username|Password)
  • SOLR-7900: example/files improvements - added language detection and faceting, added title field, relocated .js files.

New in Apache Solr 5.2.1 (Jun 16, 2015)

  • Bug Fixes:
  • LUCENE-6482: Fix class loading deadlock relating to Codec initialization, default codec and SPI discovery.
  • LUCENE-6523: NRT readers now reflect a new commit even if there is no change to the commit user data
  • LUCENE-6527: Queries now get a dummy Similarity when scores are not needed in order to not load unnecessary information like norms.

New in Apache Solr 5.2.0 (Jun 9, 2015)

  • New features:
  • SOLR-6637: Restore a Solr core from a backed up index. Restore API Example - http://localhost:8983/solr/techproducts/replication?command=restore&name=backup_name Restore Status API Example - http://localhost:8983/solr/techproducts/replication?command=restorestatus
  • SOLR-7241, SOLR-7263, SOLR-7279, SOLR-7300, SOLR-7396, SOLR-7397, SOLR-7492: Admin UI - Refactoring using AngularJS. More functionality moving the Admin UI to Angular JS
  • SOLR-7372: Limit memory consumed by LRUCache with a new 'maxRamMB' config parameter.
  • SOLR-7376: Return raw XML or JSON (in the appropriate writer) using DocumentTransformers. ?fl=id,name,json_s:[json],xml_s:[xml]
  • SOLR-7422: Optional flatter form for the JSON Facet API via a "type" parameter: top_authors : { type:terms, field:author, limit:5 } is equivalent to top_authors : { terms : { field:author, limit:5 } }
  • SOLR-7176: zkcli script can perfrom the CLUSTERPROP command without a running Solr cluster
  • SOLR-7417: JSON Facet API - unique() is now implemented for numeric and date fields.
  • SOLR-7406: Add a new "facet.range.method" parameter to let users choose how to do range faceting between an implementation based on filters (previous algorithm, using "facet.range.method=filter") or DocValues ("facet.range.method=dv"). Input parameters and output of both methods are the same.
  • SOLR-7473: Facet Module (Json Facet API) range faceting now supports the "mincount" parameter in range facets to supress buckets less than that count. The default for "mincount" remains 0 for range faceting. Example: prices:{ type:range, field:price, mincount:1, start:0, end:100, gap:10 }
  • SOLR-7437: Make HDFS transaction log replication factor configurable.
  • SOLR-7477: Multi-select faceting support for the Facet Module via the "excludeTags" parameter which disregards any matching tagged filters for that facet. Example: & q=shoes & fq={!tag=COLOR}color:blue & json.facet={ colors:{type:terms, field:color, excludeTags=COLOR} }
  • SOLR-7231: DIH-TikaEntityprocessor, create lat-lon field from Metadata
  • SOLR-6220: Rule Based Replica Assignment during collection, shard creation and replica creation
  • SOLR-6968: New 'cardinality' option for stats.field, uses HyperLogLog to efficiently estimate the cardinality of a field w/bounded RAM.
  • SOLR-4392: Make it possible to specify AES encrypted password in dataconfig.xml
  • SOLR-7461: stats.field now supports individual local params for 'countDistinct' and 'distinctValues'. 'calcdistinct' is still supported as an alias for both options
  • SOLR-7522: Facet Module - Implement field/terms faceting over single-valued numeric fields.
  • SOLR-7275: Authorization framework for Solr. It defines an interface and a mechanism to create, load, and use an Authorization plugin.
  • SOLR-7377: Solr Streaming Expressions
  • SOLR-7553: Facet Analytics Module: new "hll" function that uses HyperLogLog to calculate distributed cardinality. The original "unique" function is still available. Example: json.facet={ numProducts : "hll(product_id)" }
  • SOLR-7546: bin/post (and SimplePostTool in -Dauto=yes mode) now sends rather than skips files without a known content type, as "application/octet-stream", provided it still is in the allowed filetypes setting.
  • SOLR-7274: Pluggable authentication module in Solr. This defines an interface and a mechanism to create, load, and use an Authentication plugin.
  • SOLR-7379: (experimental) New spatial RptWithGeometrySpatialField, based on CompositeSpatialStrategy, which blends RPT indexes for speed with serialized geometry for accuracy. Includes a Lucene segment based in-memory shape cache.
  • SOLR-7465, SOLR-7610: New file indexing example, under example/files.
  • SOLR-7468: Kerberos authenticaion plugin for Solr. This would allow running a Kerberized Solr.
  • Bug fixes:
  • SOLR-6709: Fix QueryResponse to deal with the "expanded" section when using the XMLResponseParser
  • SOLR-7066: autoAddReplicas feature has bug when selecting replacement nodes.
  • SOLR-7370: FSHDFSUtils#recoverFileLease tries to recover the lease every one second after the first four second wait.
  • SOLR-7369: AngularJS UI insufficient URLDecoding in cloud/tree view
  • SOLR-7380: SearchHandler should not try to load runtime components in inform()
  • SOLR-7385: The clusterstatus API now returns the config set used to create a collection inside a 'configName' key.
  • SOLR-7401: Fixed a NullPointerException when concurrently creating and deleting collections, while accessing other collections.
  • SOLR-7412: Fixed range.facet.other parameter for distributed requests.
  • SOLR-6087: SolrIndexSearcher makes no DelegatingCollector.finish() call when IndexSearcher throws an expected exception.
  • SOLR-7420: Overseer stats are not reset on loss of ZK connection.
  • SOLR-7392: Fix SOLR_JAVA_MEM and SOLR_OPTS customizations in solr.in.sh being ignored
  • SOLR-7426: SolrConfig#getConfigOverlay does not clean up it's resources.
  • SOLR-6665: ZkController.publishAndWaitForDownStates can return before all local cores are marked as 'down' if multiple replicas with the same core name exist in the cluster.
  • SOLR-7418: Check and raise a SolrException instead of an NPE when an invalid doc id is sent to the MLTQParser.
  • SOLR-7443: Implemented range faceting over date fields in the new facet module (JSON Facet API).
  • SOLR-7440: DebugComponent does not return the right requestPurpose for pivot facet refinements.
  • SOLR-7408: Listeners set by SolrCores on config directories in ZK could be removed if collections are created/deleted in paralle against the same config set.
  • SOLR-7450: Fix edge case which could cause `bin/solr stop` to hang forever
  • SOLR-7157: initParams must support tags other than appends, defaults and, invariants
  • SOLR-7387: Facet Module - distributed search didn't work when sorting terms facet by min, max, avg, or unique functions.
  • SOLR-7469: Fix check-licenses to correctly detect if start.jar.sha1 is incorrect
  • SOLR-7449: solr/server/etc/jetty-https-ssl.xml hard codes the key store file and password rather than pulling them from the sysprops defined in solr/bin/solr.in.{sh,cmd}
  • SOLR-7470: Fix sample data to eliminate file order dependency for successful indexing, also fixed SolrCloudExampleTest to help catch this in the future.
  • SOLR-7478: UpdateLog#close shuts down it's executor with interrupts before running it's close logic, possibly preventing a clean close.
  • SOLR-7494: Facet Module - unique() facet function was wildly inaccurate for high cardinality fields.
  • SOLR-7502: start script should not try to create configset for .system collection
  • SOLR-7514: SolrClient.getByIds fails with ClassCastException
  • SOLR-7531: config API shows a few keys merged together
  • SOLR-7542: Schema API: Can't remove single dynamic copy field directive
  • SOLR-7472: SortingResponseWriter does not log fl parameters that don't exist.
  • SOLR-7545: Honour SOLR_HOST parameter with bin/solr{,.cmd}
  • SOLR-7503: Recovery after ZK session expiration should happen in parallel for all cores using the thread-pool managed by ZkContainer instead of a single thread.
  • SOLR-7335: Fix doc boosts to no longer be multiplied in each field value in multivalued fields that are not used in copyFields
  • SOLR-7585: Fix NoSuchElementException in LFUCache resulting from heavy writes making concurrent put() calls.
  • SOLR-7587: Seeding bucket versions from index when the firstSearcher event fires has a race condition that leads to an infinite wait on VersionInfo's ReentrantReadWriteLock because the read-lock acquired during a commit cannot be upgraded to a write-lock needed to block updates; solution is to move the call out of the firstSearcher event path and into the SolrCore constructor.
  • SOLR-7625: Ensure that the max value for seeding version buckets is updated after recovery even if the UpdateLog is not replayed.
  • SOLR-7610: Fix VelocityResponseWriter's $resource.locale to accurately report locale in use.
  • SOLR-7614: Distributed pivot facet refinement was broken due to a single correlation counter used across multiple requests as if it was private to each request.
  • Optimizations:
  • SOLR-7324: IndexFetcher does not need to call isIndexStale if full copy is already needed
  • SOLR-7547: Short circuit SolrDisptachFilter for static content request. Right now it creates a new HttpSolrCall object and tries to process it.
  • SOLR-7333: Make the poll queue time a leader uses when distributing updates to replicas configurable and use knowledge that a batch is being processed to poll efficiently.
  • SOLR-7332: Initialize the highest value for all version buckets with the max value from the index or recent updates to avoid unnecessary lookups to the index to check for reordered updates when processing new documents.
  • SOLR-5855: DefaultSolrHighlighter now re-uses the document's term vectors instance when highlighting more than one field. Applies to the standard and FVH highlighters.
  • Other changes:
  • Upgrade HttpClient to 4.4.1
  • SOLR-7358: TestRestoreCore fails in Windows
  • SOLR-7371: Make DocSet implement Accountable to estimate memory usage.
  • SOLR-7381: Improve logging by adding node name in MDC in SolrCloud mode and adding MDC to all thread pools. A new MDCAwareThreadPoolExecutor is introduced and usages of Executors#newFixedThreadPool, #newSingleThreadExecutor, #newCachedThreadPool as well as ThreadPoolExecutor directly is now forbidden in Solr. MDC keys are now exposed in thread names automatically so that a thread dump can give hints on what the thread was doing. Uncaught exceptions thrown by tasks in the pool are logged along with submitter's stack trace.
  • SOLR-7384: Fix spurious failures in FullSolrCloudDistribCmdsTest.
  • SOLR-6692: Default highlighter changes:
  • hl.maxAnalyzedChars now applies cumulatively on a multi-valied field.
  • fragment ranking on a multi-valued field should be more relevant.
  • hl.usePhraseHighlighter is now toggleable on a per-field basis.
  • Much more extensible (get values from another source; return snippet scores and offsets).
  • When using hl.maxMultiValuedToMatch with hl.preserveMulti, only count matched snippets.
  • SOLR-6886: Removed redundant size check and added missing calls to DelegatingCollection.finish inside Grouping code.
  • SOLR-7421: RecoveryAfterSoftCommitTest fails frequently on Jenkins due to full index replication taking longer than 30 seconds.
  • SOLR-7081: Add new test case to test if create/delete/re-create collections work.
  • SOLR-7467: Upgrade t-digest to 3.1
  • SOLR-7471: Stop requiring docValues for interval faceting
  • SOLR-7391: Use a time based expiration cache for one off HDFS FileSystem instances.
  • SOLR-5213: Log when shard splitting unexpectedly leads to documents going to no or multiple shards
  • SOLR-4839: Upgrade Jetty to 9.2.10.v20150310 and restlet-jee to 2.3.0
  • SOLR-7425: Improve MDC based logging format.
  • SOLR-7457: Make DirectoryFactory publishing MBeanInfo extensible.
  • SOLR-7325: Slice.getState() now returns a State enum instead of a String. This helps clarify the states a Slice can be in, as well comparing the state of a Slice.
  • SOLR-7336: Added Replica.getState() and removed ZkStateReader state-related constants. You should use Replica.State to compare a replica's state.
  • SOLR-7487: Fix check-example-lucene-match-version Ant task to check luceneMatchVersion in solr/server/solr/configsets instead of example and harden error checking / validation logic.
  • SOLR-7409: When there are multiple dataimport handlers defined, the admin UI was listing them in a random order. Now they are sorted in a natural order that handles numbers properly.
  • SOLR-7484: Refactor SolrDispatchFilter to extract all Solr specific implementation detail to HttpSolrCall and also extract methods from within the current SDF.doFilter(..) logic making things easier to manage. HttpSolrCall converts the processing to a 3-step process i.e. Construct, Init, and Call so the context of the request would be available after Init and before the actual call operation.
  • SOLR-6878: Allow symmetric lists of synonyms to be added using the managed synonym REST API to support legacy expand=true type mappings; previously the API only allowed adding explicit mappings, with this feature you can now add a list and have the mappings expanded when the update is applied
  • (Timothy Potter, Vitaliy Zhovtyuk, hossman)
  • SOLR-7102: bin/solr should activate cloud mode if ZK_HOST is set
  • SOLR-7500: Remove pathPrefix from SolrDispatchFilter as Solr no longer runs as a part of a bigger webapp.
  • SOLR-7243: CloudSolrClient was always returning SERVER_ERROR for exceptions, even when a more relevant ErrorCode was available, via SolrException. Now the actual ErrorCode is used when available.
  • SOLR-7544: CollectionsHandler refactored to be more modular
  • SOLR-7532: Removed occurrences of the unused 'commitIntervalLowerBound' property for updateHandler elements from Solr configuration.
  • SOLR-7541: Removed CollectionsHandler#createNodeIfNotExists. All calls made to this method now call ZkCmdExecutor#ensureExists as they were doing the same thing. Also ZkCmdExecutor#ensureExists now respects the CreateMode passed to it.
  • SOLR-6820: Make the number of version buckets used by the UpdateLog configurable as increasing beyond the default 256 has been shown to help with high volume indexing performance in SolrCloud; helps overcome a limitation where Lucene uses the request thread to perform expensive index housekeeping work.
  • SOLR-7463: Stop forcing MergePolicy's "NoCFSRatio" based on the IWC "useCompoundFile" configuration
  • SOLR-7582: Allow auto-commit to be set with system properties in data_driven_schema_configs and enable auto soft-commits for the bin/solr -e cloud example using the Config API.
  • SOLR-7183: Fix Locale blacklisting for Minikdc based tests.

New in Apache Solr 5.1.0 (Jun 9, 2015)

  • New features:
  • SOLR-6909: Extract atomic update handling logic into AtomicUpdateDocumentMerger class and enable subclassing.
  • SOLR-6845: Add a “buildOnStartup” option for suggesters.
  • SOLR-6449: Add first class support for Real Time Get in Solrj.
  • SOLR-6954: SolrClient now implements Closeable, and shutdown() has been deprecated in favour of close().
  • SOLR-4905: Allow fromIndex parameter to JoinQParserPlugin to refer to a single-sharded collection that has a replica on all nodes where there is a replica in the to index
  • SOLR-6648: Add support in AnalyzingInfixLookupFactory and BlendedInfixLookupFactory for setting 'highlight' and 'allTermsRequired' in the suggester configuration.
  • SOLR-7083: Support managing all named components in solrconfig such as requestHandler, queryParser, queryResponseWriter, valueSourceParser, transformer, queryConverter
  • SOLR-7005: Spatial 2D heatmap faceting on RPT fields via new facet.heatmap with PNG and 2D int array formats.
  • SOLR-7019: Support changing field key when using interval faceting.
  • SOLR-6832: Queries be served locally rather than being forwarded to another replica.
  • SOLR-1945: Add support for child docs in DocumentObjectBinder
  • SOLR-7125, SOLR-7158: You can upload and download configurations via CloudSolrClient
  • SOLR-5507: Admin UI - Refactoring using AngularJS, first part
  • SOLR-7164: BBoxField defaults sub fields to not-stored
  • SOLR-7155,SOLR-7201: All SolrClient methods now take an optional 'collection' argument
  • SOLR-6359: Allow number of logs and records kept by UpdateLog to be configured
  • SOLR-7189: Allow DIH to extract content from embedded documents via Tika.
  • SOLR-6841: Visualize lucene segment information in Admin UI.
  • SOLR-5846: EnumField supports DocValues functionality.
  • SOLR-4044: CloudSolrClient.connect() throws a more useful exception if the cluster is not ready, and can now take an optional timeout argument to wait for the cluster.
  • SOLR-7073: Support adding a jar to a collections classpath
  • SOLR-7126: Secure loading of runtime external jars
  • SOLR-6349: Added support for stats.field localparams to enable/disable individual stats to limit the amount of computation done and the amount of data returned. eg: stats.field={!min=true max=true}field_name
  • SOLR-7218: lucene/solr query syntax to give any query clause a constant score. General Form: ^= Example: (color:blue color:green)^=2.0 text:shoes
  • SOLR-7214: New Facet module with a JSON API, facet functions, aggregations, and analytics. Any facet type can have sub facets, and facets can be sorted by arbitrary aggregation functions. Examples: json.facet={x:'avg(price)', y:'unique(color)'} json.facet={count1:{query:"price:[10 TO 20]"}, count2:{query:"color:blue AND popularity:[0 TO 50]"} } json.facet={categories:{terms:{field:cat, sort:"x desc", facet:{x:"avg(price)", y:"sum(price)"}}}}
  • SOLR-6141: Schema API: Remove fields, dynamic fields, field types and copy fields; and replace fields, dynamic fields and field types.
  • SOLR-7217: HTTP POST body is auto-detected when the client is curl and the content type is form data (curl's default), allowing users to use curl to send JSON or XML without having to specify the content type.
  • SOLR-6892: Update processors can now be top-level components and they can be specified in request to create a new custom update chain
  • SOLR-7216: Solr JSON Request API:
  • HTTP search requests can have a JSON body.
  • JSON request can also be passed via the "json" parameter.
  • Smart merging of multiple JSON parameters: ruery parameters starting with "json." will be merged into the JSON request.
  • Legacy query parameters can also be passed in the "params" block of the JSON request.
  • SOLR-7245: Temporary ZK election or connection loss should not stall indexing due to leader initiated recovery
  • SOLR-6350: StatsComponent now supports Percentiles
  • SOLR-7306: Percentiles support for the new facet module. Percentiles can be calculated for all facet buckets and field faceting can sort by percentile values. Examples: json.facet={ median_age : "percentile(age,50)" } json.facet={ salary_percentiles : "percentile(salary,25,50,75)" }
  • SOLR-7307: EmbeddedSolrServer can now be started up by passing a path to a solr home directory, or a NodeConfig object
  • SOLR-1387: Add facet.contains and facet.contains.ignoreCase options
  • SOLR-7082: Streaming Aggregation for SolrCloud
  • SOLR-7212: Parameter substitution / macro expansion across entire request. Substitution can contain further expansions and default values are supported. Example: q=price:[ ${low:0} TO ${high} ]&low=100&high=200
  • SOLR-7226: Make /query/* jmx/* , requestDispatcher/*, properties in solrconfig.xml editable
  • SOLR-7240: '/' redirects to '/solr/' for convenience
  • SOLR-5911: Added payload support for term vectors. New "termPayloads" option for fields / types in the schema, and "tv.payloads" param for the term vector component.
  • SOLR-5132: Added a new collection action MODIFYCOLLECTION
  • Bug fixes:
  • SOLR-7046: NullPointerException when group.function uses query() function.
  • SOLR-7072: Multiple mlt.fl does not work.
  • SOLR-6775: Creating backup snapshot results in null pointer exception.
  • SOLR-5890: Delete silently fails if not sent to shard where document was added
  • SOLR-7101: JmxMonitoredMap can throw an exception in clear when queryNames fails.
  • SOLR-6214: Snapshots numberToKeep param only keeps n-1 backups.
  • SOLR-7084: FreeTextSuggester: Better error message when doing a lookup during dictionary build. Used to be nullpointer
  • SOLR-6956: OverseerCollectionProcessor and replicas on the overseer node can sometimes operate on stale cluster state due to overseer holding the state update lock for a long time.
  • SOLR-7104: Propagate property prefix parameters for ADDREPLICA Collections API call.
  • SOLR-7113: Multiple calls to UpdateLog#init is not thread safe with respect to the HDFS FileSystem client object usage.
  • SOLR-7128: Two phase distributed search is fetching extra fields in GET_TOP_IDS phase.
  • SOLR-7139: Fix SolrContentHandler for TIKA to ignore multiple startDocument events.
  • SOLR-7178: OverseerAutoReplicaFailoverThread compares Integer objects using ==
  • SOLR-7171: BaseDistributedSearchTestCase now clones getSolrHome() for each subclass, and consistently uses getSolrXml().
  • SOLR-6657: DocumentDictionaryFactory requires weightField to be mandatory, but it shouldn't
  • SOLR-7206: MiniSolrCloudCluster wasn't dealing with SSL mode correctly
  • SOLR-4464: DIH Processed documents counter resets to zero after first entity is processed.
  • SOLR-7209: /update/json/docs carry forward fields from previous records
  • SOLR-7195: Fixed a bug where the bin/solr shell script would incorrectly detect another Solr process listening on the same port number. If the requested listen port was 8983, it would match on another Solr using port 18983 for any purpose. Also escapes the dot character in all grep commands looking for start.jar.
  • SOLR-6682: Fix response when using EnumField with StatsComponent
  • SOLR-7109: Indexing threads stuck during network partition can put leader into down state.
  • SOLR-7092: Stop the HDFS lease recovery retries in HdfsTransactionLog on close and try to avoid lease recovery on closed files.
  • SOLR-7285: ActionThrottle will not pause if getNanoTime first returns 0.
  • SOLR-7141: RecoveryStrategy: Raise time that we wait for any updates from the leader before they saw the recovery state to have finished.
  • SOLR-7248: In legacyCloud=false mode we should check if the core was hosted on the same node before registering it
  • SOLR-7294: Migrate API fails with 'Invalid status request: notfoundretried 6times' message.
  • SOLR-7254: Make an invalid negative start/rows throw a HTTP 400 error (Bad Request) instead of causing a 500 error.
  • SOLR-7305: BlendedInfixLookupFactory swallows root IOException when it occurs.
  • SOLR-7293: Fix bug that Solr server does not listen on IPv6 interfaces by default.
  • SOLR-7298: Fix Collections API calls (SolrJ) to not add name parameter when not needed.
  • SOLR-7134: Replication can still cause index corruption.
  • SOLR-7309: Make bin/solr, bin/post work when Solr installation directory contains spaces
  • SOLR-6924: The config API forcefully refreshes all replicas in the collection to ensure all are updated
  • SOLR-7266: The IgnoreCommitOptimizeUpdateProcessor blocks commit requests from replicas needing to recover.
  • SOLR-7299: bin\solr.cmd doesn't use jetty SSL configuration.
  • SOLR-7334: Admin UI does not show "Num Docs" and "Deleted Docs".
  • SOLR-7338, SOLR-6583: A reloaded core will never register itself as active after a ZK session expiration
  • SOLR-7366: Can't index example XML docs into the cloud example using bin/post due to regression in ManagedIndexSchema's handling of ResourceLoaderAware objects used by field types
  • SOLR-7284: HdfsUpdateLog is using hdfs FileSystem.get without turning off the cache.
  • SOLR-7286: Using HDFS's FileSystem.newInstance does not guarantee a new instance.
  • SOLR-7508: SolrParams.toMultiMap() does not handle arrays
  • Optimizations:
  • SOLR-7049: Move work done by the LIST Collections API call to the Collections Handler
  • SOLR-7116: Distributed facet refinement requests would needlessly compute other types of faceting that have already been computed.
  • SOLR-7239: improved performance of min & max in StatsComponent, as well as situations where local params disable all stats
  • SOLR-7110: Optimize JavaBinCodec to minimize string Object creation
  • Other changes:
  • SOLR-7014: Collapse identical catch branches in try-catch statements.
  • SOLR-6500: Refactor FileFetcher in SnapPuller, add debug logging.
  • SOLR-7076: In DIH, TikaEntityProcessor should have support for onError=skip
  • SOLR-7094: Better error reporting of JSON parse issues when indexing docs
  • SOLR-7103: Remove unused method params in faceting code.
  • SOLR-6311: When performing distributed queries, SearchHandler should use path when no qt or shard.qt parameter is specified; fix also resolves SOLR-4479.
  • SOLR-7112: Fix DeleteInactiveReplicaTest.deleteLiveReplicaTest test failures.
  • SOLR-6902: Use JUnit rules instead of inheritance with distributed Solr tests to allow for multiple tests without the same class.
  • SOLR-7032: Clean up test remnants of old-style solr.xml
  • SOLR-7145: SolrRequest is now parametrized by its response type
  • SOLR-7142: Fix TestFaceting.testFacets.
  • SOLR-7156: Fix test failures due to resource leaks on windows.
  • SOLR-7147: Introduce new TrackingShardHandlerFactory for monitoring what requests are sent to shards during tests.
  • SOLR-7160: Rename ConfigSolr to NodeConfig, and decouple it from xml representation
  • SOLR-7166: Encapsulate JettySolrRunner configuration
  • SOLR-7130: Make stale state notification work without failing the requests
  • SOLR-7151: SolrClient query methods throw IOException
  • SOLR-7179: JettySolrRunner no longer passes configuration to SolrDispatchFilter via system properties, but instead uses a Properties object in the servlet context
  • SOLR-6275: Improve accuracy of QTime reporting
  • SOLR-7174: DIH should reset TikaEntityProcessor so that it is capable of re-use
  • SOLR-6804: Untangle SnapPuller and ReplicationHandler
  • SOLR-7180: MiniSolrCloudCluster will startup and shutdown its jetties in parallel
  • SOLR-7173: Fix ReplicationFactorTest on Windows by adding better retry support after seeing no response exceptions.
  • SOLR-7246: Speed up BasicZkTest, TestManagedResourceStorage
  • SOLR-7258: Forbid MessageFormat.format and MessageFormat single-arg constructor.
  • SOLR-7162: Remove unused SolrSortField interface.
  • SOLR-6414: Update to Hadoop 2.6.0.
  • SOLR-6673: MDC based logging of collection, shard, replica, core
  • SOLR-7291: Test indexing on ZK disconnect with ChaosMonkey tests
  • SOLR-7203: Remove buggy no-op retry code in HttpSolrClient
  • SOLR-7202: Remove deprecated string action types in Overseer and OverseerCollectionProcessor - "deletecollection", "createcollection", "reloadcollection", "removecollection", "removeshard".
  • SOLR-7290: Rename catchall _text field in data_driven_schema_configs to _text_
  • SOLR-7346: Stored XSS in Admin UI Schema-Browser page and Analysis page

New in Apache Solr 5.0.0 (Feb 24, 2015)

  • New Features:
  • LUCENE-5945: All file handling converted to NIO.2 apis.
  • LUCENE-5946: SimpleFSDirectory now uses Files.newByteChannel, for portability with custom FileSystemProviders. If you want the old non-interruptible behavior of RandomAccessFile, use RAFDirectory in the misc/ module.
  • SOLR-3359: Added analyzer attribute/property to SynonymFilterFactory.
  • LUCENE-5648: Index and search date ranges, particularly multi-valued ones. It's implemented in the spatial module as DateRangePrefixTree used with NumberRangePrefixTreeStrategy.
  • LUCENE-5895: Lucene now stores a unique id per-segment and per-commit to aid in accurate replication of index files
  • LUCENE-5889: Add commit method to AnalyzingInfixSuggester, and allow just using .add to build up the suggester.
  • LUCENE-5123: Add a "pull" option to the postings writing API, so that a PostingsFormat now receives a Fields instance and it is responsible for iterating through all fields, terms, documents and positions.
  • LUCENE-5268: Full cutover of all postings formats to the "pull" FieldsConsumer API, removing PushFieldsConsumer. Added new PushPostingsWriterBase for single-pass push of docs/positions to the postings format.
  • LUCENE-5906: Use Files.delete everywhere instead of File.delete, so that when things go wrong, you get a real exception message why.
  • LUCENE-5933: Added FilterSpans for easier wrapping of Spans instance.
  • LUCENE-5925: Remove fallback logic from opening commits, instead use Directory.renameFile so that in-progress commits are never visible.
  • LUCENE-5820: SuggestStopFilter should have a factory.
  • LUCENE-5949: Add Accountable.getChildResources().
  • SOLR-5986: Added ExitableDirectoryReader that extends FilterDirectoryReader and enables exiting requests that take too long to enumerate over terms.
  • LUCENE-5911: Add MemoryIndex.freeze() to allow thread-safe searching over a MemoryIndex.
  • LUCENE-5969: Lucene 5.0 has a new index format with mismatched file detection, improved exception handling, and indirect norms encoding for sparse fields.
  • LUCENE-6053: Add Serbian analyzer.
  • LUCENE-4400: Add support for new NYSIIS Apache commons phonetic codec
  • LUCENE-6059: Add Daitch-Mokotoff Soundex phonetic Apache commons phonetic codec, and upgrade to Apache commons codec 1.10.
  • LUCENE-6058: With the upgrade to Apache commons codec 1.10, the experimental BeiderMorseFilter has changed its behavior, so any index using it will need to be rebuilt.
  • LUCENE-6050: Accept MUST and MUST_NOT (in addition to SHOULD) for each context passed to Analyzing/BlendedInfixSuggester
  • LUCENE-5929: Also extract terms to highlight from block join queries.
  • LUCENE-6063: Allow overriding whether/how ConcurrentMergeScheduler stalls incoming threads when merges are falling behind
  • LUCENE-5833: DocumentDictionary now enumerates each value separately in a multi-valued field (not just the first value), so you can build suggesters from multi-valued fields.
  • LUCENE-6077: Added a filter cache.
  • LUCENE-6088: TermsFilter implements Accountable.
  • LUCENE-6034: The default highlighter when used with QueryScorer will highlight payload-sensitive queries provided that term vectors with positions, offsets, and payloads are present. This is the only highlighter that can highlight such queries accurately.
  • LUCENE-5914: Add an option to Lucene50Codec to support either BEST_SPEED or BEST_COMPRESSION for stored fields.
  • LUCENE-6119: Add auto-IO-throttling to ConcurrentMergeScheduler, to rate limit IO writes for each merge depending on incoming merge rate.
  • LUCENE-6155: Add payload support to MemoryIndex. The default highlighter's QueryScorer and WeighedSpanTermExtractor now have setUsePayloads(bool).
  • LUCENE-6166: Deletions (alone) can now trigger new merges.
  • LUCENE-6177: Add CustomAnalyzer that allows to configure analyzers like you do in Solr's index schema. This class has a builder API to configure Tokenizers, TokenFilters, and CharFilters based on their SPI names and parameters as documented by the corresponding factories.
  • Optimizations:
  • LUCENE-5960: Use a more efficient bitset, not a Set, to track visited states.
  • LUCENE-5959: Don't allocate excess memory when building automaton in finish.
  • LUCENE-5963: Reduce memory allocations in AnalyzingSuggester.
  • LUCENE-5938: MultiTermQuery.CONSTANT_SCORE_FILTER_REWRITE is now faster on queries that match few documents by using a sparse bit set implementation.
  • LUCENE-5969: Refactor merging to be more efficient, checksum calculation is per-segment/per-producer, and norms and doc values merging no longer cause RAM spikes for latent fields.
  • LUCENE-5983: CachingWrapperFilter now uses a new DocIdSet implementation called RoaringDocIdSet instead of WAH8DocIdSet.
  • LUCENE-6022: DocValuesDocIdSet checks live docs before doc values.
  • LUCENE-6030: Add norms patched compression for a small number of common values
  • LUCENE-6040: Speed up EliasFanoDocIdSet through broadword bit selection.
  • LUCENE-6033: CachingTokenFilter now uses ArrayList not LinkedList, and has new isCached() method.
  • LUCENE-6031: TokenSources (in the default highlighter) converts term vectors into a TokenStream much faster in linear time (not N*log(N) using less memory, and with reset() implemented. Only one of offsets or positions are required of the term vector.
  • LUCENE-6089, LUCENE-6090: Tune CompressionMode.HIGH_COMPRESSION for better compression and less cpu usage.
  • LUCENE-6034: QueryScorer, used by the default highlighter, needn't re-index the provided TokenStream with MemoryIndex when it comes from TokenSources (term vectors) with offsets and positions.
  • LUCENE-5951: ConcurrentMergeScheduler detects whether the index is on SSD or not and does a better job defaulting its settings. This only works on Linux for now; other OS's will continue to use the previous defaults (tuned for spinning disks).
  • LUCENE-6131: Optimize SortingMergePolicy.
  • LUCENE-6133: Improve default StoredFieldsWriter.merge() to be more efficient.
  • LUCENE-6145: Make EarlyTerminatingSortingCollector able to early-terminate when the sort order is a prefix of the index-time order.
  • LUCENE-6178: Score boolean queries containing MUST_NOT clauses with BooleanScorer2, to use skip list data and avoid unnecessary scoring.
  • API Changes:
  • LUCENE-5900: Deprecated more constructors taking Version in *InfixSuggester and ICUCollationKeyAnalyzer, and removed TEST_VERSION_CURRENT from the test framework.
  • LUCENE-4535: oal.util.FilterIterator is now an internal API.
  • LUCENE-4924: DocIdSetIterator.docID() must now return -1 when the iterator is not positioned. This change affects all classes that inherit from DocIdSetIterator, including DocsEnum and DocsAndPositionsEnum.
  • LUCENE-5127: Reduce RAM usage of FixedGapTermsIndex. Remove IndexWriterConfig.setTermIndexInterval, IndexWriterConfig.setReaderTermsIndexDivisor, and termsIndexDivisor from StandardDirectoryReader. These options have been no-ops with the default codec since Lucene 4.0. If you want to configure the interval for this term index, pass it directly in your codec, where it can also be configured per-field.
  • LUCENE-5388: Remove Reader from Tokenizer's constructor and from Analyzer's createComponents. TokenStreams now always get their input via setReader.
  • LUCENE-5527: The Collector API has been refactored to use a dedicated Collector per leaf.
  • LUCENE-5702: The FieldComparator API has been refactor to a per-leaf API, just like Collectors.
  • LUCENE-4246: IndexWriter.close now always closes, even if it throws an exception. The new IndexWriterConfig.setCommitOnClose (default true) determines whether close() should commit before closing.
  • LUCENE-5608, LUCENE-5565: Refactor SpatialPrefixTree/Cell API. Doesn't use Strings as tokens anymore, and now iterates cells on-demand during indexing instead of building a collection. RPT now has more setters.
  • LUCENE-5666: Change uninverted access (sorting, faceting, grouping, etc) to use the DocValues API instead of FieldCache. For FieldCache functionality, use UninvertingReader in lucene/misc (or implement your own FilterReader). UninvertingReader is more efficient: supports multi-valued numeric fields, detects when a multi-valued field is single-valued, reuses caches of compatible types (e.g. SORTED also supports BINARY and SORTED_SET access without insanity). "Insanity" is no longer possible unless you explicitly want it. Rename FieldCache* and DocTermOrds* classes in the search package to DocValues*. Move SortedSetSortField to core and add SortedSetFieldSource to queries/, which takes the same selectors. Add helper methods to DocValues.java that are better suited for search code (never return null, etc).
  • LUCENE-5871: Remove Version from IndexWriterConfig. Use IndexWriterConfig.setCommitOnClose to change the behavior of IndexWriter.close(). The default has been changed to match that of 4.x.
  • LUCENE-5965: CorruptIndexException requires a String or DataInput resource.
  • LUCENE-5972: IndexFormatTooOldException and IndexFormatTooNewException now extend from IOException.
  • LUCENE-5569: *AtomicReader/AtomicReaderContext have been renamed to *LeafReader/LeafReaderContext.
  • LUCENE-5938: Removed MultiTermQuery.ConstantScoreAutoRewrite as MultiTermQuery.CONSTANT_SCORE_FILTER_REWRITE is usually better.
  • LUCENE-5924: Rename CheckIndex -fix option to -exorcise. This option does not actually fix the index, it just drops data.
  • LUCENE-5969: Add Codec.compoundFormat, which handles the encoding of compound files. Add getMergeInstance() to codec producer APIs, which can be overridden to return an instance optimized for merging instead of searching. Add Terms.getStats() which can return additional codec-specific statistics about a field. Change instance method SegmentInfos.read() to two static methods: SegmentInfos.readCommit() and SegmentInfos.readLatestCommit().
  • LUCENE-5992: Remove FieldInfos from SegmentInfosWriter.write API.
  • LUCENE-5998: Simplify Field/SegmentInfoFormat to read+write methods.
  • LUCENE-6000: Removed StandardTokenizerInterface. Tokenizers now use their jflex impl directly.
  • LUCENE-6006: Removed FieldInfo.normType since it's redundant: it will be DocValuesType.NUMERIC if the field indexed and does not omit norms, else null.
  • LUCENE-6013: Removed indexed boolean from IndexableFieldType and FieldInfo, since it's redundant with IndexOptions != null.
  • LUCENE-6021: FixedBitSet.nextSetBit now returns DocIdSetIterator.NO_MORE_DOCS instead of -1 when there are no more bits which are set.
  • LUCENE-5953: Directory and LockFactory APIs were restructured: Locking is now under the responsibility of the Directory implementation. LockFactory is only used by subclasses of BaseDirectory to delegate locking to an impl class. LockFactories are now singletons and are responsible to create a Lock instance based on a Directory implementation passed to the factory method. See MIGRATE.txt for more details.
  • LUCENE-6062: Throw exception instead of silently doing nothing if you try to sort/group/etc on a misconfigured field (e.g. no docvalues, no UninvertingReader, etc).
  • LUCENE-6068: LeafReader.fields() never returns null.
  • LUCENE-6082: Remove abort() from codec apis.
  • LUCENE-6084: IndexOutput's constructor now requires a String resourceDescription so its toString is sane
  • LUCENE-6087: Allow passing custom DirectoryReader to SearcherManager
  • LUCENE-6085: Undeprecate SegmentInfo attributes, but add safety so they won't be trappy if codec tries to use them during docvalues updates.
  • LUCENE-6097: Remove dangerous / overly expert IndexWriter.abortMerges and waitForMerges methods.
  • LUCENE-6099: Add FilterDirectory.unwrap and FilterDirectoryReader.unwrap
  • LUCENE-6121: CachingTokenFilter.reset() now propagates to its input if called before incrementToken(). You must call reset() now on this filter instead of doing it a-priori on the input(), which previously didn't work.
  • LUCENE-6147: Make the core Accountables.namedAccountable function public
  • LUCENE-6150: Remove staleFiles set and onIndexOutputClosed() from FSDirectory.
  • LUCENE-6146: Replaced Directory.copy() with Directory.copyFrom().
  • LUCENE-6149: Infix suggesters' highlighting and allTermsRequired can be set at the constructor for non-contextual lookup.
  • LUCENE-6158, LUCENE-6165: IndexWriter.addIndexes(IndexReader...) changed to addIndexes(CodecReader...)
  • LUCENE-6179: Out-of-order scoring is not allowed anymore, so Weight.scoresDocsOutOfOrder and LeafCollector.acceptsDocsOutOfOrder have been removed and boolean queries now always score in order.
  • LUCENE-6212: IndexWriter no longer accepts per-document Analyzer to add/updateDocument. These methods were trappy as they made it easy to accidentally index tokens that were not easily searchable.
  • Bug fixes:
  • LUCENE-5650: Enforce read-only access to any path outside the temporary folder via security manager, and make test temp dirs absolute.
  • LUCENE-5948: RateLimiter now fully inits itself on init.
  • LUCENE-5981: CheckIndex obtains write.lock, since with some parameters it may modify the index, and to prevent false corruption reports, as it does not have the regular "spinlock" of DirectoryReader.open. It now implements Closeable and you must close it to release the lock.
  • LUCENE-6004: Don't highlight the LookupResult.key returned from AnalyzingInfixSuggester
  • LUCENE-5980: Don't let document length overflow.
  • LUCENE-5999: Fix backcompat support for StandardTokenizer
  • LUCENE-5961: Fix the exists() method for FunctionValues returned by many ValueSources to behave properly when wrapping other ValueSources which do not exist for the specified document
  • LUCENE-6039: Add IndexOptions.NONE and DocValuesType.NONE instead of using null to mean not index and no doc values, renamed IndexOptions.DOCS_ONLY to DOCS, and pulled IndexOptions and DocValues out of FieldInfo into their own classes in org.apache.lucene.index
  • LUCENE-6043: Fix backcompat support for UAX29URLEmailTokenizer
  • LUCENE-6041: Remove sugar methods FieldInfo.isIndexed and FieldInfo.hasDocValues.
  • LUCENE-6044: Fix backcompat support for token filters with enablePositionIncrements=false. Also fixed backcompat for TrimFilter with updateOffsets=true. These options are supported with a match version before 4.4, and no longer valid at all with 5.0.
  • LUCENE-6042: CustomScoreQuery explain was incorrect in some cases, such as when nested inside a boolean query.
  • LUCENE-6046: Add maxDeterminizedStates safety to determinize (which has an exponential worst case) so that if it would create too many states, it now throws an exception instead of exhausting CPU/RAM.
  • LUCENE-6054: Allow repeating the empty automaton
  • LUCENE-6049: Don't throw cryptic exception writing a segment when the only docs in it had fields that hit non-aborting exceptions during indexing but also had doc values.
  • LUCENE-6055: PayloadAttribute.clone() now does a deep clone of the underlying bytes.
  • LUCENE-6060: Remove dangerous IndexWriter.unlock method
  • LUCENE-6062: Pass correct fieldinfos to docvalues producer when the segment has updates.
  • LUCENE-6075: Don't overflow int in SimpleRateLimiter
  • LUCENE-5987: IndexWriter will now forcefully close itself on aborting exception (an exception that would otherwise cause silent data loss).
  • LUCENE-6094: Allow IW.rollback to stop ConcurrentMergeScheduler even when it's stalling because there are too many merges.
  • LUCENE-6105: Don't cache FST root arcs if the number of root arcs is small, or if the cache would be > 20% of the size of the FST.
  • LUCENE-6124: Fix double-close() problems in codec and store APIs.
  • LUCENE-6152: Fix double close problems in OutputStreamIndexOutput.
  • LUCENE-6139: Highlighter: TokenGroup start & end offset getters should have been returning the offsets of just the matching tokens in the group when there's a distinction.
  • LUCENE-6173: NumericTermAttribute and spatial/CellTokenStream do not clone their BytesRef(Builder)s. Also equals/hashCode was missing.
  • LUCENE-6205: Fixed intermittent concurrency issue that could cause FileNotFoundException when writing doc values updates at the same time that a merge kicks off.
  • LUCENE-6192: Fix int overflow corruption case in skip data for high frequency terms in extremely large indices
  • LUCENE-6093: Don't throw NullPointerException from BlendedInfixSuggester for lookups that do not end in a prefix token.
  • LUCENE-6214: Fixed IndexWriter deadlock when one thread is committing while another opens a near-real-time reader and an unrecoverable (tragic) exception is hit.
  • Documentation:
  • LUCENE-5392: Add/improve analysis package documentation to reflect analysis API changes.
  • LUCENE-6057: Improve Sort(SortField) docs
  • LUCENE-6112: Fix compile error in FST package example code
  • Tests:
  • LUCENE-5957: Add option for tests to not randomize codec
  • LUCENE-5974: Add check that backcompat indexes use default codecs
  • LUCENE-5971: Create addBackcompatIndexes.py script to build and add backcompat test indexes for a given lucene version. Also renamed backcompat index files to use Version.toString() in filename.
  • LUCENE-6002: Monster tests no longer fail. Most of them now have an 80 hour timeout, effectively removing the timeout. The tests that operate near the 2 billion limit now use IndexWriter.MAX_DOCS instead of Integer.MAX_VALUE. Some of the slow Monster tests now explicitly choose the default codec.
  • LUCENE-5968: Improve error message when 'ant beast' is run on top-level modules.
  • LUCENE-6120: Fix MockDirectoryWrapper's close() handling.
  • Build:
  • LUCENE-5909: Smoke tester now has better command line parsing and optionally also runs on Java 8.
  • LUCENE-5902: Add bumpVersion.py script to manage version increase after release branch is cut.
  • LUCENE-5962: Rename diffSources.py to createPatch.py and make it work with all text file types.
  • LUCENE-5995: Upgrade ICU to 54.1
  • LUCENE-6070: Upgrade forbidden-apis to 1.7
  • Other:
  • LUCENE-5563: Removed sep layout: which has fallen behind on features and doesn't perform as well as other options.
  • LUCENE-4086: Removed support for Lucene 3.x indexes. See migration guide for more information.
  • LUCENE-5858: Moved Lucene 4 compatibility codecs to 'lucene-backward-codecs.jar'.
  • LUCENE-5915: Remove Pulsing postings format.
  • LUCENE-6213: Add useful exception message when commit contains segments from legacy codecs.

New in Apache Solr 4.10.2 (Dec 24, 2014)

  • Bug fixes:
  • SOLR-6509: Solr start scripts interactive mode doesn't honor -z argument
  • SOLR-6511: Fencepost error in LeaderInitiatedRecoveryThread
  • SOLR-6530: Commits under network partitions can put any node in down state.
  • SOLR-6573: QueryElevationComponent now works with localParams in the query
  • SOLR-6524: Collections left in recovery state after node restart because recovery sleep time increases exponentially between retries.
  • SOLR-6587: Misleading exception when creating collections in SolrCloud with bad configuration.
  • SOLR-6452: StatsComponent's stat 'missing' will work on fields with docValues=true and indexed=false
  • SOLR-6646: bin/solr start script fails to detect solr on non-default port and then after 30s tails wrong log file
  • SOLR-6647: Bad error message when missing resource from ZK when parsing Schema
  • SOLR-6545: Query field list with wild card on dynamic field fails.
  • Other changes:
  • SOLR-6550: Provide simple mechanism for passing additional metadata / context about a server-side SolrException back to the client-side
  • SOLR-6486: solr start script can have a debug flag option; use -a to set arbitrary options
  • SOLR-6549: bin/solr script should support a -s option to set the -Dsolr.solr.home property.
  • SOLR-6529: Stop command in the start scripts should only stop the instance that it had started.

New in Apache Solr 4.10.1 (Dec 24, 2014)

  • Bug fixes:
  • SOLR-6425: If using the new global hdfs block cache option, you can end up reading corrupt files on file name reuse.
  • SOLR-5814: CoreContainer reports incorrect & missleading path for solrconfig.xml when there are loading problems
  • SOLR-6024: Fix StatsComponent when using docValues="true" multiValued="true"
  • SOLR-6493: Fix fq exclusion via "ex" local param in multivalued stats.field
  • SOLR-6447: bin/solr script needs to pass -DnumShards=1 for boostrapping collection1 when starting Solr in cloud mode.
  • SOLR-6501: Binary Response Writer does not return wildcard fields.
  • Other changes:
  • SOLR-6503: Removed support for parsing netcdf files in Solr Cell because of license issues. If you need support for this format, download the parser JAR yourself (version 4.2) and add it to contrib/extraction/lib folder.

New in Apache Solr 4.10.0 (Sep 4, 2014)

  • New Features:
  • SOLR-6196: The overseerstatus collection API instruments amILeader and ZK state update calls. (shalin)
  • SOLR-6069: The 'clusterstatus' API should return 'roles' information. (shalin)
  • SOLR-6044: The 'clusterstatus' API should return live_nodes as well. (shalin)
  • SOLR-5768: Add a distrib.singlePass parameter to make EXECUTE_QUERY phase fetch all fields and skip GET_FIELDS. (Gregg Donovan, shalin)
  • SOLR-6183: New spatial BBoxField for indexing rectangles with search support for most predicates. It includes extra score relevancy modes in addition to distance: score=overlapRatio|area|area2D. (David Smiley, Ryan McKinley)
  • SOLR-6232: You can now unload/delete cores that have failed to initialize. (Alan Woodward)
  • SOLR-6258: Added onRollback event handler hook to Data Import Handler (DIH). (ehatcher)
  • SOLR-6263: Add DIH handler name to variable resolver as ${dih.handlerName}. (ehatcher)
  • SOLR-6216: Better faceting for multiple intervals on DV fields. (Tomas Fernandez-Lobbe via Erick Erickson)
  • SOLR-6267: Let user override Interval Faceting key with LocalParams. (Tomas Fernandez_Lobbe via Erick Erickson)
  • SOLR-6020: Auto-generate a unique key in schema-less example if data does not have an id field. The UUIDUpdateProcessor was improved to not require a field name in configuration and generate a UUID into the unique Key field. (Vitaliy Zhovtyuk, hossman, Steve Rowe, Erik Hatcher, shalin)
  • SOLR-6294: SOLR-6437: Remove the restriction of adding json by only wrapping it in an array in a new path /update/json/docs.(Noble Paul , hossman, Yonik Seeley, Steve Rowe)
  • SOLR-6302: UpdateRequestHandlers are registered implicitly /update , /update/json, /update/csv , /update/json/docs. (Noble Paul)
  • SOLR-6318: New "terms" QParser for efficiently filtering documents by a list of values. For many values, it's more appropriate than a boolean query. (David Smiley)
  • SOLR-6283: Add support for Interval Faceting in SolrJ. (Tomás Fernández Löbbe)
  • SOLR-6304 : JsonLoader should be able to flatten an input JSON to multiple docs. (Noble Paul)
  • SOLR-2894: Distributed query support for facet.pivot. (Dan Cooper, Erik Hatcher, Chris Russell, Andrew Muldowney, Brett Lucey, Mark Miller, hossman)
  • SOLR-5656: Add autoAddReplicas feature for shared file systems. (Mark Miller, Gregory Chanan)
  • SOLR-5244: Exporting Full Sorted Result Sets. (Erik Hatcher, Joel Bernstein)
  • SOLR-3617: bin/solr and bin/solr.cmd scripts for starting, stopping, and running Solr examples. (Timothy Potter)
  • SOLR-6233: Provide basic command line tools for checking Solr status and health. (Timothy Potter)
  • SOLR-2245: Improvements to the MailEntityProcessor:
  • Support for server-side date filtering if using GMail; requires new dependency on the Sun Gmail Java mail extensions
  • Support for using the last_index_time from the previous run as the value for the fetchMailsSince filter. (Peter Sturge, Timothy Potter)
  • Bug Fixes:
  • SOLR-6095 : SolrCloud cluster can end up without an overseer with overseer roles (Noble Paul, Shalin Mangar)(Anand Sengamalai via shalin)
  • SOLR-6189: Avoid publishing the state as down if the node is not live when determining if a replica should be in leader-initiated recovery. (Timothy Potter)
  • SOLR-6197: The MIGRATE collection API doesn't work when legacyCloud=false is set in cluster properties. (shalin)
  • SOLR-6206: The migrate collection API fails on retry if temp collection already exists. (shalin)
  • SOLR-6072: The 'deletereplica' API should remove the data and instance directory by default. (shalin)
  • SOLR-6211: TrieDateField doesn't default to omitNorms=true. (Michael Ryan, Steve Rowe)
  • SOLR-6159: A ZooKeeper session expiry during setup can keep LeaderElector from joining elections. (Steven Bower, shalin)
  • SOLR-6223: SearchComponents may throw NPE when using shards.tolerant and there is a failure in the 'GET_FIELDS/GET_HIGHLIGHTS/GET_DEBUG' phase. (Tomás Fernández Löbbe via shalin)
  • SOLR-6180: Callers of ManagedIndexSchema mutators should hold the schemaUpdateLock. (Gregory Chanan via Steve Rowe)
  • SOLR-6229: Make SuggestComponent return 400 instead of 500 for bad dictionary selected in request. (Tomás Fernández Löbbe via shalin)
  • SOLR-6235: Leader initiated recovery should use coreNodeName instead of coreName to avoid marking all replicas having common core name as down. (shalin)
  • SOLR-6208: JettySolrRunner QueuedThreadPool's configuration code is never executed. (dweiss via shalin)
  • SOLR-6245: Socket and Connection configuration are ignored in HttpSolrServer when passing in HttpClient. (Patanachai Tangchaisin, shalin)
  • SOLR-6136: ConcurrentUpdateSolrServer includes a Spin Lock. (Brandon Chapman, Timothy Potter)
  • SOLR-6257: More than two "!"-s in a doc ID throws an ArrayIndexOutOfBoundsException when using the composite id router. (Steve Rowe)
  • SOLR-5746: Bugs in solr.xml parsing have been fixed to more correctly deal with the various datatypes of options people can specify, additional error handling of duplicated/unidentified options has also been added. (Maciej Zasada, hossman)
  • SOLR-5847: Fixed data import abort button in admin UI. (ehatcher)
  • SOLR-6264: Distributed commit and optimize are executed serially across all replicas. (Mark Miller, Timothy Potter)
  • SOLR-6163: Correctly decode special characters in managed stopwords and synonym endpoints. (Vitaliy Zhovtyuk, Timo Schmidt via Timothy Potter)
  • SOLR-6336: DistributedQueue can easily create too many ZooKeeper Watches. (Ramkumar Aiyengar via Mark Miller)
  • SOLR-6347: DELETEREPLICA throws a NPE while removing the last Replica in a Custom sharded collection. (Anshum Gupta)
  • SOLR-6062: Fix undesirable edismax query parser effect (introduced in SOLR-2058) in how phrase queries generated from pf, pf2, and pf3 are merged into the main query. (Michael Dodsworth via ehatcher)
  • SOLR-6372: HdfsDirectoryFactory should use supplied Configuration for communicating with secure kerberos. (Gregory Chanan via Mark Miller)
  • SOLR-6284: Fix NPE in OCP when non-existent sliceId is used for a deleteShard request
  • (Ramkumar Aiyengar via Anshum Gupta)
  • SOLR-6380: Added missing context info to log message if IOException occurs in processing tlog
  • (Steven Bower via hossman)
  • SOLR-6383: RegexTransformer returns no results after replaceAll if regex does not match a value. (Alexander Kingson, shalin)
  • SOLR-6387: Add better error messages throughout Solr and supply a work around for Java bug #8047340 to SystemInfoHandler: On Turkish default locale, some JVMs fail to fork on MacOSX, BSD, AIX, and Solaris platforms. (hossman, Uwe Schindler)
  • SOLR-6338: coreRootDirectory requires trailing slash, or SolrCloud cores are created in wrong location. (Primož Skale via Erick Erickson)
  • SOLR-6314: Facet counts duplicated in the response if specified more than once on the request. (Vamsee Yarlagadda, Erick Erickson)
  • SOLR-6378: Fixed example/example-DIH/ issues with "tika" and "solr" configurations, and tidied up README.txt
  • (Daniel Shchyokin via ehatcher)
  • SOLR-6393: TransactionLog replay performance on HDFS is very poor. (Mark Miller)
  • SOLR-6268: HdfsUpdateLog has a race condition that can expose a closed HDFS FileSystem instance and should close it's FileSystem instance if either inherited close method is called. (Mark Miller)
  • SOLR-6089: When using the HDFS block cache, when a file is deleted, it's underlying data entries in the block cache are not removed, which is a problem with the global block cache option. (Mark Miller, Patrick Hunt)
  • SOLR-6402: OverseerCollectionProcessor should not exit for ZooKeeper ConnectionLoss. (Jessica Cheng via Mark Miller)
  • SOLR-6405: ZooKeeper calls can easily not be retried enough on ConnectionLoss. (Jessica Cheng, Mark Miller)
  • SOLR-6410: Ensure all Lookup instances are closed via CloseHook. (hossman, Areek Zillur, Ryan Ernst, Dawid Weiss)
  • SOLR-6137: Schemaless concurrency improvements:
  • Fixed an NPE when reloading a managed schema with no dynamic copy fields
  • Moved parsing and schema fields addition to after the distributed phase
  • AddSchemaFieldsUpdateProcessor now uses a fixed schema rather than always retrieving the latest, and holds the schema update lock through the entire schema swap-out process. (Gregory Chanan via Steve Rowe)
  • Optimizations:
  • LUCENE-5803: Solr's schema now uses DelegatingAnalyzerWrapper. This uses less heap for cached TokenStreamComponents because it caches per FieldType not per Field, so indexes with many fields of same type just use one TokenStream per thread. (Shay Banon, Uwe Schindler, Robert Muir)
  • SOLR-6259: Reduce CPU usage by avoiding repeated costly calls to Document.getField inside DocumentBuilder.toDocument for use-cases with large number of fields and copyFields. (Steven Bower via shalin)
  • SOLR-5968: BinaryResponseWriter fetches unnecessary stored fields when only pseudo-fields are requested. (Gregg Donovan via shalin)
  • SOLR-6261: Run ZooKeeper watch event callbacks in parallel to the ZooKeeper event thread. (Ramkumar Aiyengar via Mark Miller)
  • Other Changes:
  • SOLR-6173: Fixed wrong failure message in TestDistributedSearch. (shalin)
  • SOLR-5902: Corecontainer level mbeans are not exposed. (noble)
  • SOLR-6194: Allow access to DataImporter and DIHConfiguration from DataImportHandler. (Aaron LaBella via shalin)
  • SOLR-6170: CoreContainer.preRegisterInZk() and CoreContainer.register() commands are merged into CoreContainer.create(). (Alan Woodward)
  • SOLR-6171: Remove unused SolrCores coreNameToOrig map. (Alan Woodward)
  • SOLR-5596: Set system property zookeeper.forceSync=no for Solr test cases. (shalin)
  • SOLR-2853: Add a unit test for the case when "spellcheck.maxCollationTries=0". (James Dyer)
  • SOLR-6240: Removed unused coreName parameter in ZkStateReader.getReplicaProps. (shalin)
  • SOLR-6241: Harden the HttpPartitionTest. (shalin)
  • SOLR-6228: Fixed bug in TestReplicationHandler.doTestIndexAndConfigReplication. (shalin)
  • SOLR-6120: On Windows, when the war is not extracted, the zkcli.bat script will print a helpful message indicating that the war must be unzipped instead of a java error about a missing class. (shalin, Shawn Heisey)
  • SOLR-6179: Better strategy for handling empty managed data to avoid spurious warning messages in the logs. (Timothy Potter)
  • SOLR-6232: CoreContainer.remove() replaced with CoreContainer.unload(). A call to unload will also close the core.
  • SOLR-3893: DIH should not depend on mail.jar,activation.jar (Timothy Potter, Steve Rowe)
  • SOLR-6252: A couple of small improvements to UnInvertedField class. (Vamsee Yarlagadda, Gregory Chanan, Mark Miller)
  • SOLR-3345: BaseDistributedSearchTestCase should always ignore QTime. (Vamsee Yarlagadda, Benson Margulies via Mark Miller)
  • SOLR-6270: Increased timeouts for MultiThreadedOCPTest. (shalin)
  • SOLR-6274: UpdateShardHandler should log the params used to configure it's HttpClient. (Ramkumar Aiyengar via Mark Miller)
  • SOLR-6194: Opened up "public" access to DataSource, DocBuilder, and EntityProcessorWrapper in DIH. (Aaron LaBella via ehatcher)
  • SOLR-6269: Renamed "rollback" to "error" in DIH internals, including renaming onRollback to onError introduced in SOLR-6258. (ehatcher)
  • SOLR-3622: When using DIH in SolrCloud-mode, rollback will no longer be called when an error occurs. (ehatcher)
  • SOLR-6231: Increased timeouts and hardened the RollingRestartTest. (Noble Paul, shalin)
  • SOLR-6290: Harden and speed up CollectionsAPIAsyncDistributedZkTest. (Mark Miller, shalin)
  • SOLR-6281: Made PostingsSolrHighlighter more configurable via subclass extension. (David Smiley)
  • SOLR-6309: Increase timeouts for AsyncMigrateRouteKeyTest. (shalin)
  • SOLR-2168: Added support for facet.missing in /browse field and pivot faceting. (ehatcher)
  • SOLR-4702: Added support for multiple spellcheck collations to /browse UI. (ehatcher)
  • SOLR-5664: Added support for multi-valued field highlighting in /browse UI. (ehatcher)
  • SOLR-6313: Improve SolrCloud cloud-dev scripts. (Mark Miller, Vamsee Yarlagadda)
  • SOLR-6360: Remove bogus "Content-Charset" header in HttpSolrServer. (Michael Ryan, Uwe Schindler)
  • SOLR-6362: Fix bug in TestSqlEntityProcessorDelta. (James Dyer)
  • SOLR-6388: Force upgrade of Apache POI dependency in Solr Cell to version 3.10.1 to fix CVE-2014-3529 and CVE-2014-3574. (Uwe Schindler)
  • SOLR-6391: Improve message for CREATECOLLECTION failure due to missing numShards. (Anshum Gupta)

New in Apache Solr 4.9.0 (Jun 26, 2014)

  • Numerous optimizations for doc values search-time performance
  • Allow a client application to request the minium achieved replication factor for an update request (single or batch) by sending an optional parameter "min_rf"
  • Query re-ranking support with the new ReRankingQParserPlugin
  • A new [child ...] DocTransformer for optionally including Block-Join decendent documents inline in the results of a search
  • A new (default) Lucene49NormsFormat to better compress certain cases such as very short fields

New in Apache Solr 4.8.1 (May 19, 2014)

  • Bug Fixes:
  • SOLR-5904: ElectionContext can cancel an election when it should not if there was an exception while trying to register as the leader.
  • SOLR-5993: ZkController can warn about shard leader conflict even after the conflict is resolved.
  • SOLR-6017: Fix SimpleQParser to use query analyzer.
  • SOLR_6029: CollapsingQParserPlugin throws ArrayIndexOutOfBoundsException if elevated doc has been deleted from a segment.
  • SOLR-6030: Use System.nanoTime() instead of currentTimeInMills() in LRUCache.warm.
  • SOLR-6037: Fixed incorrect max/sum/stddev for Date fields in StatsComponent.
  • SOLR-6023: FieldAnalysisRequestHandler throws NPE if no parameters are supplied.
  • SOLR-5090: SpellCheckComponent sometimes throws NPE if "spellcheck.alternativeTermCount" is set to zero.
  • SOLR-6039: fixed debug output when no results in response.
  • SOLR-6035: CloudSolrServer directUpdate routing should use getCoreUrl.

New in Apache Solr 4.8.0 (Apr 28, 2014)

  • New Features:
  • SOLR-5130: Implement addReplica Collections API
  • SOLR-5183: JSON updates now support nested child documents using a "_childDocument_" object key.
  • SOLR-5714: You can now use one pool of memory for for the HDFS block cache that all collections share.
  • SOLR-5720: Add ExpandComponent to expand results collapsed by the CollapsingQParserPlugin.
  • SOLR-3177: Enable tagging and excluding filters in StatsComponent via the localParams syntax.
  • SOLR-1604: Wildcards, ORs etc inside Phrase Queries.
  • SOLR-5477: Async execution of OverseerCollectionProcessor(CollectionsAPI) tasks.
  • SOLR-5865: Provide a MiniSolrCloudCluster to enable easier testing.
  • SOLR-5860: Use leaderConflictResolveWait in WaitForState during recovery/startup, improve logging and force refresh cluster state every 15 seconds.
  • SOLR-5749: A new Overseer status collection API exposes overseer queue sizes, timing statistics, success and error counts and last N failures per operation.
  • SOLR-5858: Add a hl.qparser parameter to allow you to define a queryparser for hl.q highlight queries. If no queryparser is defined, Solr will use the overall query's defType.
  • SOLR-4478: Allow cores to use configuration from a configsets directory outside their instance directory.
  • SOLR-5466: A new List collections and cluster status API which clients can use to read collection and shard information instead of reading data directly from ZooKeeper.
  • Dave Seltzer, Varun Thacker, Vitaliy Zhovtyuk, Erick Erickson, shalin)
  • SOLR-5795: New DocExpirationUpdateProcessorFactory supports computing an expiration date for documents from the "TTL" expression, as well as automatically deleting expired documents on a periodic basis.
  • SOLR-5829: Allow ExpandComponent to accept query and filter query parameters
  • SOLR-5653: Create a RestManager to provide REST API endpoints for reconfigurable plugins.
  • SOLR-5655: Create a stopword filter factory that is (re)configurable, and capable of reporting its configuration, via REST API.
  • SOLR-5654: Create a synonym filter factory that is (re)configurable, and capable of reporting its configuration, via REST API.
  • SOLR-5960: Add support for basic authentication in post.jar tool, e.g.: java -Durl="http://username:password@hostname:8983/solr/update" -jar post.jar sample.xml
  • SOLR-4864: RegexReplaceProcessorFactory should support pattern capture group substitution in replacement string.
  • Bug Fixes:
  • SOLR-5858, SOLR-4812: edismax and dismax query parsers can be used for parsing highlight queries.
  • SOLR-5893: On restarting overseer designate , move itself to front of the queue
  • SOLR-5915: Attempts to specify the parserImpl for solr.PreAnalyzedField fieldtype failed.
  • SOLR-5943: SolrCmdDistributor does not distribute the openSearcher parameter.
  • SOLR-5954: Slower DataImportHandler process caused by not reusing jdbc connections.
  • SOLR-5897: Upgraded to jQuery 1.7.2, Solr was previously using 1.4.3, the file was mistakenly named 1.7.2
  • Optimizations:
  • SOLR-1880: Distributed Search skips GET_FIELDS stage if EXECUTE_QUERY stage gets all fields. Requests with fl=id or fl=id,score are now single-pass.
  • SOLR-5783: Requests to open a new searcher will now reuse the current registered searcher (w/o additional warming) if possible in situations where the underlying index has not changed. This reduces overhead in situations such as deletes that do not modify the index, and/or redundant commits.
  • SOLR-5884: When recovery is cancelled, any call to the leader to wait to see the replica in the right state for recovery should be aborted.
  • Other Changes:
  • SOLR-5909: Upgrade Carrot2 clustering dependency to 3.9.0.
  • SOLR-5764: Fix recently added tests to not use absolute paths to load test-files, use SolrTestCaseJ4.getFile() and getResource() instead; fix morphlines/map-reduce to not duplicate test resources and fix dependencies among them.
  • SOLR-5765: Update to SLF4J 1.7.6.
  • SOLR-5609: If legacy mode is disabled don't let cores create slices/replicas/collections . All operations should be performed through collection API
  • SOLR-5613: Upgrade to commons-codec 1.9 for better BeiderMorseFilter performance.
  • SOLR-5771: Add SolrTestCaseJ4.SuppressSSL annotation to disable SSL (instead of static boolean).
  • SOLR-5799: When registering as the leader, if an existing ephemeral registration exists, wait a short time to see if it goes away.
  • LUCENE-5472: IndexWriter.addDocument will now throw an IllegalArgumentException if a Term to be indexed exceeds IndexWriter.MAX_TERM_LENGTH. To recreate previous behavior of silently ignoring these terms, use LengthFilter in your Analyzer.
  • SOLR-5825: Separate http request creating and execution in SolrJ
  • SOLR-5837: Add hashCode/equals to SolrDocument, SolrInputDocument and SolrInputField for testing purposes.
  • SOLR-5853: The createCollection methods in the test framework now reports result of operation in the returned CollectionAdminResponse
  • SOLR-5838: Relative SolrHome Path Bug At AbstractFullDistribZkTestBase.
  • SOLR-5763: Upgrade to Tika 1.5
  • SOLR-5881: Upgrade ZooKeeper to 3.4.6
  • SOLR-5883: Many tests do not shutdown SolrServer.
  • SOLR-5898: Update to latest Kite Morphlines release: Version 0.12.1.
  • SOLR-5228: Don't require or be inside of -- or that be inside of .
  • SOLR-5903: SolrCore implements Closeable, cut over to using try-with-resources where possible.
  • SOLR-5914: Cleanup and fix Solr's test cleanup code.
  • SOLR-5936: Deprecate non-Trie-based numeric & date field types.
  • SOLR-5934: LBHttpSolrServer exception handling improvement and small test improvements.
  • SOLR-5773: CollapsingQParserPlugin should make elevated documents the group head.
  • SOLR-5937: Modernize the DIH example config sets.

New in Apache Solr 4.7.2 (Apr 15, 2014)

  • Versions of Major Components:
  • Apache Tika 1.4
  • Carrot2 3.8.0
  • Velocity 1.7 and Velocity Tools 2.0
  • Apache UIMA 2.3.1
  • Apache ZooKeeper 3.4.5
  • Bug Fixes:
  • SOLR-5951: Fixed SolrDispatchFilter to throw useful exception on startup if SLF4j logging jars are missing.
  • SOLR-5950: Maven config: make the org.slf4j:slf4j-api dependency transitive (i.e., not optional) in all modules in which it's a dependency, including solrj, except for the WAR, where it will remain optional.

New in Apache Solr 4.7.1 (Apr 2, 2014)

  • Versions of Major Components:
  • Apache Tika 1.4
  • Carrot2 3.8.0
  • Velocity 1.7 and Velocity Tools 2.0
  • Apache UIMA 2.3.1
  • Apache ZooKeeper 3.4.5
  • DETAILED CHANGE LIST:
  • Bug Fixes:
  • SOLR-5647: The lib paths in example-schemaless will now load correctly.
  • SOLR-5770: All attempts to match a SolrCore with it's state in clusterstate.json should be done with the CoreNodeName.
  • SOLR-5875: QueryComponent.mergeIds() unmarshals all docs' sort field values once per doc instead of once per shard.
  • SOLR-5800: Admin UI - Analysis form doesn't render results correctly when a CharFilter is used.
  • SOLR-5870: Admin UI - Reload on Core Admin doesn't show errors
  • SOLR-5867: OverseerCollectionProcessor isn't properly generating https urls in some cases.
  • SOLR-5866: UpdateShardHandler needs to use the system default scheme registry to properly handle https via javax.net.ssl.* properties.
  • SOLR-5782: The full MapReduceIndexer help text does not display when using --help.
  • SOLR-5824: Merge up Solr MapReduce contrib code to latest external changes. Includes a few minor bug fixes.
  • SOLR-5818: distrib search with custom comparator does not quite work correctly
  • SOLR-5895: JavaBinLoader hides IOExceptions.
  • SOLR-5861: Recovery should not set onlyIfLeaderActive=true for slice in 'recovery' state.
  • SOLR-5423: CSV output doesn't include function field
  • SOLR-5550: shards.info is not returned by a short circuited distributed query.
  • SOLR-5777: Fix ordering of field values in JSON updates where field name key is repeated
  • SOLR-5734: We should use System.nanoTime rather than System.currentTimeMillis when calculating elapsed time.
  • SOLR-5760: ConcurrentUpdateSolrServer has a blockUntilFinished call when streamDeletes is true that should be tucked into the if statement below it.
  • SOLR-5761: HttpSolrServer has a few fields that can be set via setters but are not volatile.
  • SOLR-5907: The hdfs write cache can cause a reader to see a corrupted state. It now defaults to off, and if you were using solr.hdfs.blockcache.write.enabled explicitly, you should set it to false.
  • SOLR-5811: The Overseer will retry work items until success, which is a serious problem if you hit a bad work item.
  • SOLR-5796: Increase how long we are willing to wait for a core to see the ZK advertised leader in it's local state.
  • SOLR-5834: Overseer threads are only being interrupted and not closed.
  • SOLR-5839: ZookeeperInfoServlet does not trim path properly.
  • SOLR-5874: Unsafe cast in CloudSolrServer's RouteException. Change RouteException to handle Throwable rather than Exception.
  • SOLR-5899: CloudSolrServer's RouteResponse and RouteException should be publicly accessible.
  • SOLR-5905: CollapsingQParserPlugin throws a NPE if required 'field' param is missing.
  • SOLR-5906: Collection create API ignores property.instanceDir parameter.
  • SOLR-5920: Distributed sort on DateField, BoolField and BCD{Int,Long,Str}Field returns string cast exception
  • Other Changes:
  • SOLR-5796: Make how long we are willing to wait for a core to see the ZK advertised leader in it's local state configurable.

New in Apache Solr 4.7.0 (Feb 27, 2014)

  • Versions of Major Components:
  • Apache Tika 1.4
  • Carrot2 3.8.0
  • Velocity 1.7 and Velocity Tools 2.0
  • Apache UIMA 2.3.1
  • Apache ZooKeeper 3.4.5
  • New Features:
  • SOLR-5308: SOLR-5601: SOLR-5710: A new 'migrate' collection API to split all documents with a route key into another collection
  • SOLR-5441: Expose number of transaction log files and their size via JMX.
  • SOLR-5320: Added support for tri-level compositeId routing.
  • SOLR-5287,SOLR-5522,SOLR-5446,SOLR-5456,SOLR-5539,SOLR-5458: Admin UI - Added a new "Files" conf directory browser/file viewer.
  • SOLR-5447, SOLR-5490: Add a QParserPlugin for Lucene's SimpleQueryParser.
  • SOLR-5208: Support for the setting of core.properties key/values at create-time on Collections API
  • SOLR-5428: SOLR-5690: New 'stats.calcdistinct' parameter in StatsComponent returns set of distinct values and their count. This can also be specified per field e.g. 'f.field.stats.calcdistinct'.
  • SOLR-5378, SOLR-5528: A new SuggestComponent that fully utilizes the Lucene suggester module and adds pluggable dictionaries, payloads and better distributed support. This is intended to eventually replace the Suggester support through the SpellCheckComponent.
  • SOLR-5492: Return the replica that actually served the query in shards.info response.
  • SOLR-5506: Support docValues in CollationField and ICUCollationField.
  • SOLR-5023: Add support for deleteInstanceDir to be passed from SolrJ for Core Unload action.
  • SOLR-1871: The 'map' function query accepts a ValueSource as target and default value.
  • SOLR-5556: Allow class of CollectionsHandler and InfoHandler to be specified in solr.xml.
  • SOLR-5581: Give ZkCLI the ability to get files.
  • SOLR-5536: Add ValueSource collapse criteria to CollapsingQParsingPlugin
  • SOLR-5541: Allow QueryElevationComponent to accept elevateIds and excludeIds as http parameters
  • SOLR-5463: new 'cursorMark' request param for deep paging of sorted result sets
  • SOLR-5529: Add support for queries to use multiple suggesters.
  • SOLR-1301: Add a Solr contrib that allows for building Solr indexes via Hadoop's MapReduce.
  • SOLR-5631: Add support for Lucene's FreeTextSuggester.
  • SOLR-5695: Add support for Lucene's BlendedInfixSuggester.
  • SOLR-5476: Overseer Role for nodes
  • SOLR-5594: Allow FieldTypes to specify custom PrefixQuery behavior
  • LUCENE-5395: Upgrade to Spatial4j 0.4. Various new options are now exposed automatically for an RPT field type. See Spatial4j CHANGES & javadocs.
  • SOLR-5670: allow _version_ to use DocValues.
  • SOLR-5535: Set "partialResults" header for shards that error out if shards.tolerant is specified.
  • SOLR-5610: Support cluster-wide properties with an API called CLUSTERPROP
  • SOLR-5623: Better diagnosis of RuntimeExceptions in analysis
  • SOLR-5530: Added a NoOpResponseParser for SolrJ which puts the entire raw response into an entry in the NamedList.
  • SOLR-5682: Make the admin InfoHandler more pluggable / derivable.
  • SOLR-5672: Add logParamsList parameter to support reduced logging.
  • SOLR-3854: SSL support for SolrCloud.
  • Bug Fixes:
  • SOLR-5438: DebugComponent throws NPE when used with grouping.
  • SOLR-4612: Admin UI - Analysis Screen contains empty table-columns
  • SOLR-5451: SyncStrategy closes it's http connection manager before the executor that uses it in it's close method.
  • SOLR-5460: SolrDispatchFilter#sendError can get a SolrCore that it does not close.
  • SOLR-5461: Request proxying should only set con.setDoOutput(true) if the request is a post.
  • SOLR-5481: SolrCmdDistributor should not let the http client do it's own retries.
  • LUCENE-5347: Fixed Solr's Zookeeper Client to copy files to Zookeeper using binary transfer. Previously data was read with default encoding and stored in zookeeper as UTF-8. This bug was found after upgrading to forbidden-apis 1.4.
  • SOLR-4376: DataImportHandler uses wrong date format for last_index_time if a delta-import is run first before any full-imports.
  • SOLR-5494: CoreContainer#remove throws NPE rather than returning null when a SolrCore does not exist in core discovery mode.
  • SOLR-5354: Distributed sort is broken with CUSTOM FieldType.
  • SOLR-5515: NPE when getting stats on date field with empty result on SolrCloud.
  • SOLR-5204: StatsComponent and SpellCheckComponent do not support the shards.tolerant=true parameter.
  • SOLR-5527: DIH logs spurious warning for special commands.
  • SOLR-5524: Exception when using Query Function inside Scale Function.
  • SOLR-5562: ConcurrentUpdateSolrServer constructor ignores supplied httpclient.
  • SOLR-5567: ZkController getHostAddress duplicates url prefix.
  • SOLR-4992: Solr eats OutOfMemoryError exceptions in many cases.
  • LUCENE-5399, SOLR-5354 sort wouldn't work correctly with distributed searching for some field types such as legacy numeric types
  • SOLR-5643: ConcurrentUpdateSolrServer will sometimes not spawn a new Runner thread even though there are updates in the queue.
  • SOLR-5650: When a replica becomes a leader, only peer sync with other replicas that last published an ACTIVE state.
  • SOLR-5657: When a SolrCore starts on HDFS, it should gracefully handle HDFS being in safe mode.
  • SOLR-5663: example-DIH uses non-existing column for mapping (case-sensitive)
  • SOLR-5666: Using the hdfs write cache can result in appearance of corrupted index.
  • SOLR-5230: Call DelegatingCollector.finish() during grouping.
  • SOLR-5679: Shard splitting fails with ClassCastException on collections upgraded from 4.5 and earlier versions.
  • SOLR-5673: HTTPSolrServer doesn't set own property correctly in setFollowRedirects.
  • SOLR-5676: SolrCloud updates rejected if talking to secure ZooKeeper.
  • SOLR-5634: SolrJ GroupCommand.getNGroups returns null if group.format=simple and group.ngroups=true.
  • SOLR-5667: Performance problem when not using hdfs block cache.
  • SOLR-5526: Fixed NPE that could arrise when explicitly configuring some built in QParserPlugins
  • SOLR-5598: LanguageIdentifierUpdateProcessor ignores all but the first value of multiValued string fields.
  • SOLR-5593: Replicas should accept the last updates from a leader that has just lost it's connection to ZooKeeper.
  • SOLR-5678: SolrZkClient should throw a SolrException when connect times out rather than a RuntimeException.
  • SOLR-4072: Error message is incorrect for linkconfig in ZkCLI.
  • SOLR-5691: Sharing non thread safe WeakHashMap across thread can cause problems.
  • SOLR-5693: Running on HDFS does work correctly with NRT search.
  • SOLR-5644: SplitShard does not handle not finding a shard leader well.
  • SOLR-5704: coreRootDirectory was not respected when creating new cores via CoreAdminHandler
  • SOLR-5709: Highlighting grouped duplicate docs from different shards with group.limit > 1 throws ArrayIndexOutOfBoundsException.
  • SOLR-5561: Fix implicit DefaultSimilarityFactory initialization in IndexSchema to properly specify discountOverlap option.
  • SOLR-5689: On reconnect, ZkController cancels election on first context rather than latest.
  • SOLR-5649: Clean up some minor ConnectionManager issues.
  • SOLR-5365: Fix bug with compressed files in ExtractingRequestHandler by upgrading commons-compress to 1.7
  • SOLR-5675: cloud-scripts/zkcli.bat: quote option log4j
  • SOLR-5721: ConnectionManager can become stuck in likeExpired.
  • SOLR-5731: In ConnectionManager, we should catch and only log exceptions from BeforeReconnect.
  • SOLR-5718: Make LBHttpSolrServer zombie checks non-distrib and non-scoring.
  • SOLR-5727: LBHttpSolrServer should only retry on Connection exceptions when sending updates. Affects CloudSolrServer.
  • SOLR-5739: Sub-shards created by shard splitting have their update log set to buffering mode on restarts.
  • SOLR-5741: UpdateShardHandler was not correctly setting max total connections on the HttpClient.
  • SOLR-5620: ZKStateReader.aliases should be volatile to ensure all threads see the latest aliases.
  • SOLR-5448: ShowFileRequestHandler treats everything as Directory, when in Cloud-Mode.
  • Optimizations:
  • SOLR-5436: Eliminate the 1500ms wait in overseer loop as well as polling the ZK distributed queue.
  • SOLR-5189: Solr 4.x Web UI Log Viewer does not display 'date' column from logs
  • SOLR-5512: Optimize DocValuesFacets.
  • SOLR-2960: fix DIH XPathEntityProcessor to add the correct number of "null" placeholders for multi-valued fields
  • SOLR-5214: Reduce memory usage for shard splitting by merging segments one at a time.
  • SOLR-4227: Wrap XML RequestWriter's OutputStreamWriter in a BufferedWriter to avoid frequent converter invocations.
  • SOLR-5624: Enable QueryResultCache for CollapsingQParserPlugin.
  • LUCENE-5440: DocSet decoupled from OpenBitSet. DocSetBase moved to use FixedBitSet instead of OpenBitSet. As a result BitDocSet now only works with FixedBitSet.
  • Other Changes:
  • SOLR-5399: Add distributed request tracking information to DebugComponent
  • SOLR-5421: Remove double set of distrib.from param in processAdd method of DistributedUpdateProcessor.
  • SOLR-5404: The example config references deprecated classes.
  • SOLR-5487: Replication factor error message doesn't match constraint.
  • SOLR-5499: Log a warning if /get is not registered when using SolrCloud.
  • SOLR-5517: Return HTTP error on POST requests with no Content-Type.
  • SOLR-5502: Added a test for tri-level compositeId routing with documents having a "/" in a document id.
  • SOLR-5533: Improve out of the box support for running Solr on hdfs with SolrCloud.
  • SOLR-5548: Give DistributedSearchTestCase / JettySolrRunner the ability to specify extra filters.
  • SOLR-5555: LBHttpSolrServer and CloudSolrServer constructors don't need to declare MalformedURLExceptions
  • SOLR-5565: Raise default ZooKeeper session timeout to 30 seconds from 15 seconds.
  • SOLR-5574: CoreContainer shutdown publishes all nodes as down and waits to see that and then again publishes all nodes as down.
  • SOLR-5590: Upgrade HttpClient/HttpComponents to 4.3.x.
  • SOLR-2794: change the default of hl.phraseLimit to 5000.
  • SOLR-5632: Improve response message for reloading a non-existent core.
  • SOLR-5633: HttpShardHandlerFactory should make its http client available to subclasses.
  • SOLR-5684: Shutdown SolrServer clients created in BasicDistributedZk2Test and BasicDistributedZkTest.
  • SOLR-5629: SolrIndexSearcher.name should include core name.
  • SOLR-5702: Log config name found for collection at info level.
  • SOLR-5659: Add test for compositeId ending with an '!'.
  • SOLR-5700: Improve error handling of remote queries (proxied requests).
  • SOLR-5585: Raise Collections API timeout to 3 minutes from one minute.
  • SOLR-5257: Improved error/warn messages when Update XML contains unexpected XML nodes

New in Apache Solr 4.6.1 (Jan 28, 2014)

  • Versions of Major Components:
  • Apache Tika 1.4
  • Carrot2 3.8.0
  • Velocity 1.7 and Velocity Tools 2.0
  • Apache UIMA 2.3.1
  • Apache ZooKeeper 3.4.5
  • Bug Fixes:
  • SOLR-5408: CollapsingQParserPlugin scores incorrectly when multiple sort criteria are used
  • SOLR-5416: CollapsingQParserPlugin breaks Tag/Exclude Faceting
  • SOLR-5442: Python client cannot parse proxied response when served by Tomcat.
  • SOLR-5445: Proxied responses should propagate all headers rather than the first one for each key.
  • SOLR-5479: SolrCmdDistributor retry logic stops if a leader for the request cannot be found in 1 second.
  • SOLR-5532: SolrJ Content-Type validation is too strict for some webcontainers / proxies.
  • SOLR-5547: Creating a collection alias using SolrJ's CollectionAdminRequest sets the alias name and the collections to alias to the same value.
  • SOLR-5577: Likely ZooKeeper expiration should not slow down updates a given amount, but instead cut off updates after a given time.
  • SOLR-5580: NPE when creating a core with both explicit shard and coreNodeName.
  • SOLR-5552: Leader recovery process can select the wrong leader if all replicas for a shard are down and trying to recover as well as lose updates that should have been recovered.
  • SOLR-5569 A replica should not try and recover from a leader until it has published that it is ACTIVE.
  • SOLR-5568 A SolrCore cannot decide to be the leader just because the cluster state says no other SolrCore's are active.
  • SOLR-5496: We should share an http connection manager across non search HttpClients and ensure all http connection managers get shutdown.
  • SOLR-5583: ConcurrentUpdateSolrServer#blockUntilFinished may wait forever if the executor service is shutdown.
  • SOLR-5586: All ZkCmdExecutor's should be initialized with the zk client timeout.
  • SOLR-5587: ElectionContext implementations should use ZkCmdExecutor#ensureExists to ensure their election paths are properly created.
  • SOLR-5540: HdfsLockFactory should explicitly create the lock parent directory if necessary.
  • SOLR-4709: The core reload after replication if config files have changed can fail due to a race condition.
  • SOLR-5503: Retry 'forward to leader' requests less aggressively - rather than on IOException and status 500, ConnectException.
  • SOLR-5588: PeerSync doesn't count all connect failures as success.
  • SOLR-5564: hl.maxAlternateFieldLength should apply to original field when fallback is attempted
  • SOLR-5608: Don't allow a closed SolrCore to publish state to ZooKeeper.
  • SOLR-5615: Deadlock while trying to recover after a ZK session expiration.
  • SOLR-5543: Core swaps resulted in duplicate core entries in solr.xml when using solr.xml persistence.
  • SOLR-5618: Fix false cache hits in queryResultCache when hashCodes are equal and duplicate filter queries exist in one of the requests
  • SOLR-4260: ConcurrentUpdateSolrServer#blockUntilFinished can return before all previously added updates have finished. This could cause distributed updates meant for replicas to be lost.
  • SOLR-5645: A SolrCore reload via the CoreContainer will try and register in zk again with the new SolrCore.
  • SOLR-5636: SolrRequestParsers does some xpath lookups on every request, which can cause concurrency issues.
  • SOLR-5658: commitWithin and overwrite are not being distributed to replicas now that SolrCloud uses javabin to distribute updates.
  • Optimizations:
  • SOLR-5576: Improve concurrency when registering and waiting for all SolrCore's to register a DOWN state.

New in Apache Solr 4.6.0 (Nov 27, 2013)

  • Versions of Major Components
  • Apache Tika 1.4
  • Carrot2 3.8.0
  • Velocity 1.7 and Velocity Tools 2.0
  • Apache UIMA 2.3.1
  • Apache ZooKeeper 3.4.5
  • New Features
  • SOLR-5167: Add support for AnalyzingInfixSuggester (AnalyzingInfixLookupFactory)
  • SOLR-5246: Shard splitting now supports collections configured with router.field
  • SOLR-5274: Allow JettySolrRunner SSL config to be specified via a constructor
  • SOLR-5300: Shards can be split by specifying arbitrary number of hash ranges within the shard's hash range
  • SOLR-5226: Add Lucene index heap usage to the Solr admin UI
  • SOLR-5324: Make sub shard replica recovery and shard state switch asynchronous
  • SOLR-5338: Split shards by a route key using split.key parameter
  • SOLR-5353: Enhance CoreAdmin api to split a route key's documents from an index and leave behind all other documents
  • SOLR-5027: CollapsingQParserPlugin for high performance field collapsing on high cardinality fields
  • SOLR-5395: Added a RunAlways marker interface for UpdateRequestProcessorFactory implementations indicating that they should not be removed in later stages of distributed updates (usually signalled by the update.distrib parameter)
  • SOLR-5310: Add a collection admin command to remove a replica
  • SOLR-5311: Avoid registering replicas which are removed
  • SOLR-5406: CloudSolrServer failed to propagate request parameters along with delete updates
  • SOLR-5374: Support user configured doc-centric versioning rules via the optional DocBasedVersionConstraintsProcessorFactory update processor
  • SOLR-5392: Extend solrj apis to cover collection management
  • SOLR-5084: new field type EnumField
  • SOLR-5464: Add option to ConcurrentSolrServer to stream pure delete requests
  • Bug Fixes
  • SOLR-5216: Document updates to SolrCloud can cause a distributed deadlock
  • SOLR-5367: Unmarshalling delete by id commands with JavaBin can lead to class cast exception
  • SOLR-5359: ZooKeeper client is not closed when it fails to connect to an ensemble
  • SOLR-5042: MoreLikeThisComponent was using the rows/count value in place of flags, which caused a number of very strange issues, including NPEs and ignoring requests for the results to include the score
  • SOLR-5371: Solr should consistently call SolrServer#shutdown
  • SOLR-5363: Solr doesn't start up properly with Log4J2
  • SOLR-5380: Using cloudSolrServer.setDefaultCollection(collectionId) does not work as intended for an alias spanning more than 1 collection
  • SOLR-5418: Background merge after field removed from solr.xml causes error
  • SOLR-5318: Creating a core via the admin API doesn't respect transient property
  • SOLR-5388: Creating a new core via the HTTP API that results in a transient being unloaded results in a " Too many close [count:-1]" error
  • SOLR-5453: Raise recovery socket read timeouts
  • SOLR-5397: Replication can fail silently in some cases
  • SOLR-5465: SolrCmdDistributor retry logic has a concurrency race bug
  • SOLR-5452: Do not attempt to proxy internal update requests
  • Optimizations
  • SOLR-5232: SolrCloud should distribute updates via streaming rather than buffering
  • SOLR-5223: SolrCloud should use the JavaBin binary format for communication by default
  • SOLR-5370: Requests to recover when an update fails should be done in background threads
  • LUCENE-5300,LUCENE-5304: Specialized faceting for fields which are declared as multi-valued in the schema but are actually single-valued
  • Security
  • SOLR-4882: SolrResourceLoader was restricted to only allow access to resource files below the instance dir. The reason for this is security related: Some Solr components allow to pass in resource paths via REST parameters (e.g. XSL stylesheets, velocity templates,...) and load them via resource loader. For backwards compatibility, this security feature can be disabled by a new system property: solr.allow.unsafe.resourceloading=true
  • Other Changes
  • SOLR-5237: Add indexHeapUsageBytes to LukeRequestHandler, indicating how much heap memory is being used by the underlying Lucene index structures
  • SOLR-5241: Fix SimplePostToolTest performance problem - implicit DNS lookups
  • SOLR-5273: Update HttpComponents to 4.2.5 and 4.2.6
  • SOLR-5264: Move methods for getting config information from FieldMutatingUpdateProcessorFactory to NamedList
  • SOLR-5319: Remove unused and incorrect router name from Collection ZK nodes
  • SOLR-5321: Remove unnecessary code in Overseer.updateState method which tries to use router name from message where none is ever sent
  • SOLR-5401: SolrResourceLoader logs a warning if a deprecated (factory) class is used in schema or config
  • SOLR-3397: Warn if master or slave replication is enabled in SolrCloud mode

New in Apache Solr 4.5.1 (Oct 25, 2013)

  • Versions of Major Components:
  • Apache Tika 1.4
  • Carrot2 3.8.0
  • Velocity 1.7 and Velocity Tools 2.0
  • Apache UIMA 2.3.1
  • Apache ZooKeeper 3.4.5
  • Bug Fixes:
  • SOLR-4590: Collections API should return a nice error when not in SolrCloud mode.
  • SOLR-5295: The CREATESHARD collection API creates maxShardsPerNode number of replicas if replicationFactor is not specified.
  • SOLR-5296: Creating a collection with implicit router adds shard ranges to each shard.
  • SOLR-5263: Fix CloudSolrServer URL cache update race.
  • SOLR-5297: Admin UI - Threads Screen missing Icon
  • SOLR-5301: DELETEALIAS command prints CREATEALIAS in logs
  • SOLR-5255: Remove unnecessary call to fetch and watch live nodes in ZkStateReader cluster watcher.
  • SOLR-5305: Admin UI - Reloading System-Information on Dashboard does not work anymore
  • SOLR-5314: Shard split action should use soft commits instead of hard commits to make sub shard data visible.
  • SOLR-5327: SOLR-4915, "The root cause should be returned to the user when a SolrCore create call fails", was reverted.
  • SOLR-5317: SolrCore persistence bugs if defining SolrCores in solr.xml.
  • SOLR-5306: Extra collection creation parameters like collection.configName are not being respected.
  • SOLR-5325: ZooKeeper connection loss can cause the Overseer to stop processing commands.
  • SOLR-4327: HttpSolrServer can leak connections on errors.
  • SOLR-5349: CloudSolrServer - ZK timeout arguments passed to ZkStateReader are flipped.
  • SOLR-5330: facet.method=fcs on single values fields could sometimes result in incorrect facet labels.
  • Other Changes:
  • SOLR-5323: Disable ClusteringComponent by default in collection1 example. The solr.clustering.enabled system property needs to be set to 'true' to enable the clustering contrib (reverts SOLR-4708).

New in Apache Solr 4.5.0 (Oct 7, 2013)

  • Versions of Major Components:
  • Apache Tika 1.4
  • Carrot2 3.8.0
  • Velocity 1.7 and Velocity Tools 2.0
  • Apache UIMA 2.3.1
  • Apache ZooKeeper 3.4.5
  • Upgrading from Solr 4.4.0:
  • XML configuration parsing is now more strict about situations where a single setting is allowed but multiple values are found. In the past, one value would be chosen arbitrarily and silently. Starting with 4.5, configuration parsing will fail with an error in situations like this. If you see error messages such as "solrconfig.xml contains more than one value for config path: XXXXX" or "Found Z configuration sections when at most 1 is allowed matching expression: XXXXX" check your solrconfig.xml file for multiple occurrences of XXXXX and delete the ones that you do not wish to use. See SOLR-4953 & SOLR-5108 for more details.
  • In the past, schema.xml parsing would silently ignore "default" or "required" options specified on declarations. Begining with 4.5, attempting to do configured these on a dynamic field will cause an init error. If you encounter one of these errors when upgrading an existing schema.xml, you can safely remove these attributes, regardless of their value, from your config and Solr will continue to bahave exactly as it did in previous versions. See SOLR-5227 for more details.
  • The UniqFieldsUpdateProcessorFactory has been improved to support all of the FieldMutatingUpdateProcessorFactory selector options. The init param option is now deprecated and should be replaced with the more standard . See SOLR-4249 for more details.
  • UpdateRequestExt has been removed as part of SOLR-4816. You should use UpdateRequest instead.
  • CloudSolrServer can now use multiple threads to add documents by default. This is a small change in runtime semantics when using the bulk add method - you will still end up with the same exception on a failure, but some documents beyond the one that failed may have made it in. To get the old, single threaded behavior, set parallel updates to false on the CloudSolrServer instance.
  • New Features:
  • SOLR-5219: Rewritten selection of the default search and document clustering algorithms.
  • SOLR-5202: Support easier overrides of Carrot2 clustering attributes via XML data sets exported from the Workbench.
  • SOLR-5126: Update Carrot2 clustering to version 3.8.0, update Morfologik to version 1.7.1
  • SOLR-2345: Enhanced geodist() to work with an RPT field, provided that the field is referenced via 'sfield' and the query point is constant.
  • SOLR-5082: The encoding of URL-encoded query parameters can be changed with the "ie" (input encoding) parameter, e.g. "select?q=m�ller&ie=ISO-8859-1". The default is UTF-8. To change the encoding of POSTed content, use the "Content-Type" HTTP header.
  • SOLR-4221: Custom sharding
  • SOLR-4808: Persist and use router,replicationFactor and maxShardsPerNode at Collection and Shard level
  • SOLR-5006: CREATESHARD command for 'implicit' shards
  • SOLR-5017: Allow sharding based on the value of a field
  • SOLR-4222: create custom sharded collection via collections API
  • SOLR-4718: Allow solr.xml to be stored in ZooKeeper.
  • SOLR-5156: Enhance ZkCLI to allow uploading of arbitrary files to ZK.
  • SOLR-5165: Single-valued docValues fields no longer require a default value. Additionally they work with sortMissingFirst, sortMissingLast, facet.missing, exists() in function queries, etc.
  • SOLR-5182: Add NoOpRegenerator, a regenerator for custom per-segment caches where items are preserved across commits.
  • SOLR-4249: UniqFieldsUpdateProcessorFactory now extends FieldMutatingUpdateProcessorFactory and supports all of it's selector options. Use of the "fields" init param is now deprecated in favor of "fieldName"
  • SOLR-2548: Allow multiple threads to be specified for faceting. When threading, one can specify facet.threads to parallelize loading the uninverted fields. In at least one extreme case this reduced warmup time from 20 seconds to 3 seconds.
  • SOLR-4816: CloudSolrServer can now route updates locally and no longer relies on inter-node update forwarding.
  • SOLR-3249: Allow CloudSolrServer and SolrCmdDistributor to use JavaBin.
  • Bug Fixes:
  • SOLR-3633: web UI reports an error if CoreAdminHandler says there are no SolrCores
  • SOLR-4489: SpellCheckComponent can throw StringIndexOutOfBoundsException when generating collations involving multiple word-break corrections.
  • SOLR-5087 - CoreAdminHandler.handleMergeAction generating NullPointerException
  • SOLR-5107: Fixed NPE when using numTerms=0 in LukeRequestHandler
  • SOLR-4679, SOLR-4908, SOLR-5124: Text extracted from HTML or PDF files using Solr Cell was missing ignorable whitespace, which is inserted by TIKA for convenience to support plain text extraction without using the HTML elements. This bug resulted in glued words.
  • SOLR-5121: zkcli usage help for makepath doesn't match actual command.
  • SOLR-5119: Managed schema problems after adding fields via Schema Rest API.
  • SOLR-5133: HdfsUpdateLog can fail to close a FileSystem instance if init is called more than once.
  • SOLR-5135: Harden Collection API deletion of /collections/$collection ZooKeeper node.
  • SOLR-4764: When using NRT, just init the first reader from IndexWriter.
  • SOLR-5122: Fixed bug in spellcheck.collateMaxCollectDocs. Eliminates risk of divide by zero, and makes estimated hit counts meaningful in non-optimized indexes.
  • SOLR-3936: Fixed QueryElevationComponent sorting when used with Grouping
  • SOLR-5171: SOLR Admin gui works in IE9, breaks in IE10.
  • SOLR-5174: Admin UI - Query View doesn't highlight (json) Result if it contains HTML Tags
  • SOLR-4817 Solr should not fall back to the back compat built in solr.xml in SolrCloud mode
  • SOLR-5112: Show full message in Admin UI Logging View
  • SOLR-5190: SolrEntityProcessor substitutes variables only once in child entities
  • SOLR-3852: Fixed ZookeeperInfoServlet so that the SolrCloud Admin UI pages will work even if ZK contains nodes with data which are not utf8 text.
  • SOLR-5206: Fixed OpenExchangeRatesOrgProvider to use refreshInterval correctly
  • SOLR-5215: Fix possibility of deadlock in ZooKeeper ConnectionManager.
  • SOLR-4909: Use DirectoryReader.openIfChanged in non-NRT mode.
  • SOLR-5227: Correctly fail schema initalization if a dynamicField is configured to be required, or have a default value.
  • SOLR-5231: Fixed a bug with the behavior of BoolField that caused documents w/o a value for the field to act as if the value were true in functions if no other documents in the same index segment had a value of true.
  • SOLR-5233: The "deleteshard" collections API doesn't wait for cluster state to update, can fail if some nodes of the deleted shard were down and had incorrect logging.
  • SOLR-5150: HdfsIndexInput may not fully read requested bytes.
  • SOLR-5240: All solr cores will now be loaded in parallel (as opposed to a fixed number) in zookeeper mode to avoid deadlocks due to replicas waiting for other replicas to come up.
  • SOLR-5243: Killing a shard in one collection can result in leader election in a different collection if they share the same coreNodeName.
  • SOLR-5281: IndexSchema log message was printing '[null]' instead of '[]'
  • SOLR-5279: Implicit properties don't seem to exist on core RELOAD
  • Optimizations:
  • SOLR-5044: Admin UI - Note on Core-Admin about directories while creating core
  • SOLR-5134: Have HdfsIndexOutput extend BufferedIndexOutput.
  • SOLR-5057: QueryResultCache should not related with the order of fq's list
  • SOLR-4816: CloudSolrServer now uses multiple threads to send updates by default.
  • Other Changes:
  • SOLR-4708: Enable ClusteringComponent by default in collection1 example. The solr.clustering.enabled system property is set to 'true' by default.
  • SOLR-4914, SOLR-5162: Factor out core list persistence and discovery into a new CoresLocator interface.
  • SOLR-5056: Improve type safety of ConfigSolr class.
  • SOLR-4951: Better randomization of MergePolicy in Solr tests
  • SOLR-4953, SOLR-5108: Make XML Configuration parsing fail if an xpath matches multiple nodes when only a single value or plugin instance is expected.
  • The routing parameter "shard.keys" is deprecated as part of SOLR-5017 .The new parameter name is '_route_' . The old parameter should continue to work for another release
  • SOLR-5173: Solr-core's Maven configuration includes test-only Hadoop dependencies as indirect compile-time dependencies.

New in Apache Solr 4.4.0 (Jul 24, 2013)

  • Versions of Major Components:
  • Apache Tika 1.4
  • Carrot2 3.6.2
  • Velocity 1.7 and Velocity Tools 2.0
  • Apache UIMA 2.3.1
  • Apache ZooKeeper 3.4.5
  • Upgrading from Solr 4.3.0:
  • TieredMergePolicy and the various subtypes of LogMergePolicy no longer have an explicit "setUseCompoundFile" method. Instead the behavior of new segments is determined by the IndexWriter configuration, and the MergePolicy is only consulted to determine if merge segements should use the compound file format (based on the value of "setNoCFSRatio"). If you have explicitly configured one of these classes using and include an init arg like this... true ...this will now be treated as if you specified... true ...directly on the (overriding any value already set using that syntax) and a warning will be logged to updated your configuration. Users with an explicitly declared are encouraged to review the current javadocs for their MergePolicy subclass and review their configured options carefully. See SOLR-4941, SOLR-4934 and LUCENE-5038 for more information.
  • SOLR-4778: The signature of LogWatcher.registerListener has changed, from (ListenerConfig, CoreContainer) to (ListenerConfig). Users implementing their own LogWatcher classes will need to change their code accordingly.
  • LUCENE-5063: ByteField and ShortField have been deprecated and will be removed in 5.0. If you are still using these field types, you should migrate your fields to TrieIntField.
  • New Features:
  • SOLR-3251: Dynamically add fields to schema.
  • SOLR-4761, SOLR-4976: Add option to plugin a merged segment warmer into solrconfig.xml. Info about segments warmed in the background is available via infostream.
  • SOLR-3240: Add "spellcheck.collateMaxCollectDocs" option so that when testing potential Collations against the index, SpellCheckComponent will only collect n documents, thereby estimating the hit-count. This is a performance optimization in cases where exact hit-counts are unnecessary. Also, when "collateExtendedResults" is false, this optimization is always made
  • SOLR-4785: New MaxScoreQParserPlugin returning max() instead of sum() of terms
  • SOLR-4234: Add support for binary files in ZooKeeper.
  • SOLR-4048: Add findRecursive method to NamedList.
  • SOLR-4228: SolrJ's SolrPing object has new methods for ping, enable, and disable.
  • SOLR-4893: Extend FieldMutatingUpdateProcessor.ConfigurableFieldNameSelector to enable checking whether a field matches any schema field. To select field names that don't match any fields or dynamic fields in the schema, add false to an update processor's configuration in solrconfig.xml.
  • SOLR-4921: Admin UI now supports adding documents to Solr
  • SOLR-4916: Add support to write and read Solr index files and transaction log files to and from HDFS.
  • SOLR-4892: Add FieldMutatingUpdateProcessorFactory subclasses Parse{Date,Integer,Long,Float,Double,Boolean}UpdateProcessorFactory. These factories have a default selector that matches all fields that either don’t match any schema field, or are in the schema with the corresponding typeClass. If they see a value that is not a CharSequence, or can't parse the value, they leave it as is. For multi-valued fields, these processors will not convert any values unless all are first successfully parsed, or already are instances of the target class. Ordering the processors, e.g. [Boolean, Long, Double, Date] will allow e.g. values ["2", "5", "8.6"] to be left alone by the Boolean and Long processors, but then converted by the Double processor.
  • SOLR-4972: Add PUT command to ZkCli tool.
  • SOLR-4973: Adding getter method for defaultCollection on CloudSolrServer.
  • SOLR-4897: Add solr/example/example-schemaless/, an example config set for schemaless mode.
  • SOLR-4655: Add option to have Overseer assign generic node names so that new addresses can host shards without naming confusion.
  • SOLR-4977: Add option to send IndexWriter's infostream to the logging system.
  • SOLR-4693: A "deleteshard" collections API that unloads all replicas of a given shard and then removes it from the cluster state. It will remove only those shards which are INACTIVE or have no range (created for custom sharding).
  • SOLR-5003: CSV Update Handler supports optionally adding the line number/row id to a document
  • SOLR-5010: Add support for creating copy fields to the Schema REST API
  • SOLR-4991: Register QParserPlugins as SolrInfoMBeans
  • Bug Fixes:
  • SOLR-4333: edismax parser to not double-escape colons if already escaped by the client application
  • SOLR-4776: Solrj doesn't return "between" count in range facets
  • SOLR-4616: HitRatio on caches is now exposed over JMX MBeans as a float.
  • SOLR-4803: Fixed core discovery mode (ie: new style solr.xml) to treat 'collection1' as the default core name.
  • SOLR-4790: Throw an error if a core has the same name as another core, both old and new style solr.xml
  • SOLR-4842: Fix facet.field local params from affecting other facet.field's.
  • SOLR-4814: If a SolrCore cannot be created it should remove any information it published about itself from ZooKeeper.
  • SOLR-4863: Removed non-existent attribute sourceId from dynamic JMX stats to fix AttributeNotFoundException
  • SOLR-4891: JsonLoader should preserve field value types from the JSON content stream.
  • SOLR-4805: SolreCore#reload should not call preRegister and publish a DOWN state to ZooKeeper.
  • SOLR-4899: When reconnecting after ZooKeeper expiration, we need to be willing to wait forever, not just for 30 seconds.
  • SOLR-4920: JdbcDataSource incorrectly suppresses exceptions when retrieving a connection from a JNDI context and falls back to trying to use DriverManager to obtain a connection. Additionally, if a SQLException is thrown while initializing a connection, such as in setAutoCommit(), the connection will not be closed.
  • SOLR-4915: The root cause should be returned to the user when a SolrCore create call fails.
  • SOLR-4925 : Collection create throws NPE when 'numShards' param is missing
  • SOLR-4910: persisting solr.xml is broken. More stringent testing of persistence fixed up a number of issues and several bugs with persistence. Among them are > don't persisting implicit properties > should persist zkHost in the tag (user's list) > reloading a core that has transient="true" returned an error. reload should load a transient core if it's not yet loaded. > No longer persisting loadOnStartup or transient core properties if they were not specified in the original solr.xml > Testing flushed out the fact that you couldn't swap a core marked transient=true loadOnStartup=false because it hadn't been loaded yet. > SOLR-4862, CREATE fails to persist schema, config, and dataDir > SOLR-4363, not persisting coreLoadThreads in tag > SOLR-3900, logWatcher properties not persisted > SOLR-4850, cores defined as loadOnStartup=true, transient=false can't be searched
  • SOLR-4923: Commits to non leaders as part of a request that also contain updates can execute out of order.
  • SOLR-4932: persisting solr.xml saves some parameters it shouldn't when they weren't defined in the original. Benign since the default values are saved, but still incorrect.
  • SOLR-4934, SOLR-4941: Fix handling of init arg "useCompoundFile" needed after changes in LUCENE-5038
  • SOLR-4456: Admin UI: Displays dashboard even if Solr is down
  • SOLR-4949: UI Analysis page dropping characters from input box
  • SOLR-4960: Fix race conditions in shutdown of CoreContainer and getCore that could cause a request to attempt to use a core that has shut down.
  • SOLR-4926: Fixed rare replication bug that normally only manifested when using compound file format.
  • SOLR-4974: Outgrowth of SOLR-4960 that includes transient cores and pending cores
  • SOLR-3369: shards.tolerant=true is broken for group queries
  • SOLR-4452: Hunspell stemmer should not merge duplicate dictionary entries
  • SOLR-5000: ManagedIndexSchema doesn't persist uniqueKey tag after calling addFields method.
  • SOLR-4982: Creating a core while referencing system properties looks like it loses files Actually, instanceDir, config, dataDir and schema are not dereferenced properly when creating cores that reference sys vars (e.g. &dataDir=${dir}). In the dataDir case in particular this leads to the index being put in a directory literally named ${dir} but on restart the sysvar will be properly dereferenced.
  • SOLR-4788: Multiple Entities DIH delta import: dataimporter.[entityName].last_index_time is empty.
  • SOLR-4978: Time is stripped from datetime column when imported into Solr date field if convertType=true.
  • SOLR-5019: spurious ConcurrentModificationException when spell check component was in use with filters.
  • SOLR-5028,SOLR-5029: ShardHandlerFactory was not being created properly when using new-style solr.xml, and was not being persisted properly when using old-style.
  • SOLR-5034: A facet.query that parses or analyzes down to a null Query would throw a NPE. Fixed.
  • SOLR-4997: The splitshard api doesn't call commit on new sub shards before switching shard states. Multiple bugs related to sub shard recovery and replication are also fixed.
  • SOLR-5039: Admin/Schema Browser displays -1 for term counts for multiValued fields.
  • SOLR-5037: The CSV loader now accepts field names that are not in the schema.
  • Optimizations:
  • SOLR-4923: Commit to all nodes in a collection in parallel rather than locally and then to all other nodes.
  • SOLR-3838: Admin UI - Multiple filter queries are not supported in Query UI
  • SOLR-4719 : Admin UI - Default to wt=json on Query-Screen
  • SOLR-4611: Admin UI - Analysis-Urls with empty parameters create empty result table
  • SOLR-4955: Admin UI - Show address bar on top for Schema + Config
  • SOLR-4412: New parameter langid.lcmap to map detected language code to be placed in "language" field
  • SOLR-4815: Admin-UI - DIH: Let "commit" be checked by default
  • SOLR-5002: optimize numDocs(Query,DocSet) when filterCache is null
  • SOLR-5012: optimize search with filter when filterCache is null
  • Other Changes:
  • SOLR-4737: Update Guava to 14.0.1
  • SOLR-2079: Add option to pass HttpServletRequest in the SolrQueryRequest context map.
  • SOLR-4738: Update Jetty to 8.1.10.v20130312
  • SOLR-4749: Clean up and refactor CoreContainer code around solr.xml and SolrCore management.
  • SOLR-4547: Move logging of filenames on commit from INFO to DEBUG.
  • SOLR-4757: Change the example to use the new solr.xml format and core discovery by directory structure.
  • SOLR-4759: Velocity (/browse) template cosmetic cleanup.
  • SOLR-4778: LogWatcher init code moved out of CoreContainer
  • SOLR-4784: Make class LuceneQParser public
  • SOLR-4448: Allow the solr internal load balancer to be more easily pluggable.
  • SOLR-4224: Refactor JavaBinCodec input stream definition to enhance reuse.
  • SOLR-4931: SolrDeletionPolicy onInit and onCommit methods changed to override exact signatures (with generics) from IndexDeletionPolicy
  • SOLR-4942: test improvements to randomize use of compound files
  • SOLR-4966: CSS, JS and other files in webapp without license
  • SOLR-4986: Upgrade to Tika 1.4
  • SOLR-4948, SOLR-5009: Tidied up CoreContainer construction logic.
  • LUCENE-5107: Properties files by Solr are now written in UTF-8 encoding, Unicode is no longer escaped. Reading of legacy properties files with \u escapes is still possible.

New in Apache Solr 4.3.1 (Jun 20, 2013)

  • Bug Fixes:
  • SOLR-4795: Sub shard leader should not accept any updates from parent after it goes active
  • SOLR-4798: shard splitting does not respect the router for the collection when executing the index split. One effect of this is that documents may be placed in the wrong shard when the default compositeId router is used in conjunction with IDs containing "!".
  • SOLR-4797: Shard splitting creates sub shards which have the wrong hash range in cluster state. This happens when numShards is not a power of two and router is compositeId.
  • SOLR-4791: solr.xml sharedLib does not work in 4.3.0
  • (Ryan Ernst, Jan Høydahl via Erick Erickson)
  • SOLR-4806: Shard splitting does not abort if WaitForState times out
  • SOLR-4807: The zkcli script now works with log4j. The zkcli.bat script was broken on Windows in 4.3.0, now it works.
  • SOLR-4813: Fix SynonymFilterFactory to allow init parameters for tokenizer factory used when parsing synonyms file.
  • SOLR-4829: Fix transaction log leaks (a failure to clean up some old logs) on a shard leader, or when unexpected exceptions are thrown during log recovery.
  • SOLR-4751: Fix replication problem of files in sub directory of conf directory.
  • SOLR-4741: Deleting a collection should set DELETE_DATA_DIR to true.
  • SOLR-4752: There are some minor bugs in the Collections API parameter validation.
  • SOLR-4563: RSS DIH-example not working
  • SOLR-4796: zkcli.sh should honor JAVA_HOME
  • SOLR-4734: Leader election fails with an NPE if there is no UpdateLog.
  • SOLR-4842: Fix facet.field local params from affecting other facet.field's.
  • SOLR-4868: Setting the log level for the log4j root category results in adding a new category, the empty string.
  • SOLR-4855: DistributedUpdateProcessor doesn't check for peer sync requests
  • SOLR-4867: Admin UI - setting loglevel on root throws RangeError
  • SOLR-4870: RecentUpdates.update() does not increment numUpdates loop counter
  • SOLR-4877, LUCENE-5023: Removed SolrIndexSearcher#getDocSetNC()'s special case for handling TermQuery to prevent NullPointerException if reader does not have fields.
  • SOLR-4881: Fix DocumentAnalysisRequestHandler to correctly use EmptyEntityResolver to prevent loading of external entities like UpdateRequestHandler does.
  • SOLR-4858: SolrCore reloading was broken when the UpdateLog was enabled.
  • SOLR-4853: Fixed SolrJettyTestBase so it may be reused by end users
  • SOLR-4744: Update failure on sub shard is not propagated to clients by parent shard
  • Other Changes:
  • SOLR-4760: Include core name in logs when loading schema.

New in Apache Solr 4.3.0 (May 7, 2013)

  • Versions of Major Components:
  • Apache Tika 1.3
  • Carrot2 3.6.2
  • Velocity 1.7 and Velocity Tools 2.0
  • Apache UIMA 2.3.1
  • Apache ZooKeeper 3.4.5
  • Upgrading from Solr 4.2.0:
  • In the schema REST API, the output path for copyFields and dynamicFields has been changed from all lowercase "copyfields" and "dynamicfields" to camelCase "copyFields" and "dynamicFields", respectively, to align with all other schema REST API outputs, which use camelCase. The URL format remains the same: all resource names are lowercase. See SOLR-4623 for details.
  • Slf4j/logging jars are no longer included in the Solr webapp. All logging jars are now in example/lib/ext. Changing logging impls is now as easy as updating the jars in this folder with those necessary for the logging impl you would like. If you are using another webapp container, these jars will need to go in the corresponding location for that container. In conjunction, the dist-excl-slf4j and dist-war-excl-slf4 build targets have been removed since they are redundent.
  • The hardcoded SolrCloud defaults for 'hostContext="solr"' and 'hostPort="8983"' have been deprecated and will be removed in Solr 5.0. Existing solr.xml files that do not have these options explicitly specified should be updated accordingly.
  • New Features:
  • SOLR-4648 PreAnalyzedUpdateProcessorFactory allows using the functionality of PreAnalyzedField with other field types.
  • SOLR-4623: Provide REST API read access to all elements of the live schema. Add a REST API request to return the entire live schema, in JSON, XML, and schema.xml formats. Move REST API methods from package org.apache.solr.rest to org.apache.solr.rest.schema, and rename base functionality REST API classes to remove the current schema focus, to prepare for other non-schema REST APIs. Change output path for copyFields and dynamicFields from "copyfields" and "dynamicfields" (all lowercase) to "copyFields" and "dynamicFields", respectively, to align with all other REST API outputs, which use camelCase.
  • SOLR-4658: In preparation for REST API requests that can modify the schema, a "managed schema" is introduced. Add '' to solrconfig.xml in order to use it, and to enable schema modifications via REST API requests.
  • SOLR-4656: Added two new highlight parameters, hl.maxMultiValuedToMatch and hl.maxMultiValuedToExamine. maxMultiValuedToMatch stops looking for snippets after finding the specified number of matches, no matter how far into the multivalued field you've gone. maxMultiValuedToExamine stops looking for matches after the specified number of multiValued entries have been examined. If both are specified, the limit hit first stops the loop. Also this patch cuts down on the copying of the document entries during highlighting. These optimizations are probably unnoticeable unless there are a large number of entries in the multiValued field. Conspicuously, this will prevent the "best" match from being found if it appears later in the MV list than the cutoff specified by either of these params.
  • SOLR-4675: Improve PostingsSolrHighlighter to support per-field/query-time overrides and add additional configuration parameters.
  • SOLR-3755: A new collections api to add additional shards dynamically by splitting existing shards.
  • SOLR-4530: DIH: Provide configuration to use Tika's IdentityHtmlMapper
  • SOLR-4662: Discover SolrCores by directory structure rather than defining them in solr.xml. Also, change the format of solr.xml to be closer to that of solrconfig.xml. This version of Solr will ship the example in the old style, but you can manually try the new style. Solr 4.4 will ship with the new style, and Solr 5.0 will remove support for the old style.
  • SOLR-4347: Ensure that newly-created cores via Admin handler are persisted in solr.xml
  • (Erick Erickson)
  • SOLR-1905: Cores created by the admin request handler should be persisted to solr.xml.
  • Also fixed a problem whereby properties like solr.solr.datadir would be persisted to solr.xml. Also, cores that didn't happen to be loaded were not persisted.
  • SOLR-4717/SOLR-1351: SimpleFacets now work with localParams allowing faceting on the same field multiple ways
  • SOLR-4671: CSVResponseWriter now supports pseudo fields.
  • SOLR-4358: HttpSolrServer sends the stream name and exposes 'useMultiPartPost'
  • Bug Fixes:
  • SOLR-4543: setting shardHandlerFactory in solr.xml/solr.properties does not work.
  • SOLR-4634: Fix scripting engine tests to work with Java 8's "Nashorn" Javascript implementation.
  • SOLR-4636: If opening a reader fails for some reason when opening a SolrIndexSearcher, a Directory can be left unreleased.
  • SOLR-4405: Admin UI - admin-extra files are not rendered into the core-menu
  • SOLR-3956: Fixed group.facet=true to work with negative facet.limit
  • SOLR-4650: copyField doesn't work with source globs that don't match any explicit or dynamic fields. This regression was introduced in Solr 4.2.
  • SOLR-4641: Schema now throws exception on illegal field parameters.
  • SOLR-3758: Fixed SpellCheckComponent to work consistently with distributed grouping
  • SOLR-4652: Fix broken behavior with shared libraries in resource loader for solr.xml plugins.
  • SOLR-4664: ZkStateReader should update aliases on construction.
  • SOLR-4682: CoreAdminRequest.mergeIndexes can not merge multiple cores or indexDirs.
  • SOLR-4581: When faceting on numeric fields in Solr 4.2, negative values (constraints) were sorted incorrectly.
  • SOLR-4699: The System admin handler should not assume a file system based data directory location.
  • SOLR-4695: Fix core admin SPLIT action to be useful with non-cloud setups
  • (shalin)
  • SOLR-4680: Correct example spellcheck configuration's queryAnalyzerFieldType and use "text" field instead of narrower "name" field
  • SOLR-4702: Fix example /browse "Did you mean?" suggestion feature.
  • SOLR-4710: You cannot delete a collection fully from ZooKeeper unless all nodes are up and functioning correctly.
  • SOLR-4487: SolrExceptions thrown by HttpSolrServer will now contain the proper HTTP status code returned by the remote server, even if that status code is not something Solr itself returned -- eg: from the Servlet Container, or an intermediate HTTP Proxy
  • SOLR-4661: Admin UI Replication details now correctly displays the current replicable generation/version of the master.
  • SOLR-4716,SOLR-4584: SolrCloud request proxying does not work on Tomcat and perhaps other non Jetty containers.
  • SOLR-4746: Distributed grouping used a NamedList instead of a SimpleOrderedMap for the top level group commands, causing output formatting differences compared to non-distributed grouping.
  • SOLR-4729: LukeRequestHandler: Using a dynamic copyField source that is not also a dynamic field triggers error message 'undefined field: "(glob)"'.
  • Other Changes:
  • SOLR-4653: Solr configuration should log inaccessible/ non-existent relative paths in lib dir=...
  • SOLR-4317: SolrTestCaseJ4: Can't avoid "collection1" convention
  • SOLR-4571: SolrZkClient#setData should return Stat object.
  • SOLR-4603: CachingDirectoryFactory should use an IdentityHashMap for byDirectoryCache.
  • SOLR-4544: Refactor HttpShardHandlerFactory so load-balancing logic can be customized.
  • SOLR-4607: Use noggit 0.5 release jar rather than a forked copy.
  • SOLR-4624: forceNew has been removed from the DirectoryFactory and related java apis.
  • SOLR-3706: Ship setup to log with log4j.
  • SOLR-4651: Remove dist-excl-slf4j build target.
  • SOLR-4622: The hardcoded SolrCloud defaults for 'hostContext="solr"' and 'hostPort="8983"' have been deprecated and will be removed in Solr 5.0. Existing solr.xml files that do not have these options explicitly specified should be updated accordingly.
  • SOLR-4672: Requests attempting to use SolrCores which had init failures (that would be reported by CoreAdmin STATUS requests) now result in 500 error responses with the details about the init failure, instead of 404 error responses.
  • SOLR-4730: Make the wiki link more prominent in the release documentation.

New in Apache Solr 4.2.1 (Apr 4, 2013)

  • Versions of Major Components:
  • Apache Tika 1.3
  • Carrot2 3.6.2
  • Velocity 1.7 and Velocity Tools 2.0
  • Apache UIMA 2.3.1
  • Apache ZooKeeper 3.4.5
  • Bug Fixes:
  • SOLR-4567: copyField source glob matching explicit field(s) stopped working in Solr 4.2.
  • SOLR-4475: Fix various places that still assume File based paths even when not using a file based DirectoryFactory.
  • SOLR-4551: CachingDirectoryFactory needs to create CacheEntry's with the fullpath not path.
  • SOLR-4555: When forceNew is used with CachingDirectoryFactory#get, the old CachValue should give up it's path as it will be used by a new Directory instance.
  • SOLR-4578: CoreAdminHandler#handleCreateAction gets a SolrCore and does not close it in SolrCloud mode when a core with the same name already exists.
  • SOLR-4574: The Collections API will silently return success on an unknown ACTION parameter.
  • SOLR-4576: Collections API validation errors should cause an exception on clients and otherwise act as validation errors with the Core Admin API.
  • SOLR-4577: The collections API should return responses (success or failure) for each node it attempts to work with.
  • SOLR-4568: The lastPublished state check before becoming a leader is not working correctly.
  • SOLR-4570: Even if an explicit shard id is used, ZkController#preRegister should still wait to see the shard id in it's current ClusterState.
  • SOLR-4318: NPE encountered with querying with wildcards on a field that uses the DefaultAnalyzer (i.e. no analysis chain defined).
  • SOLR-4585: The Collections API validates numShards with < 0 but should use

New in Apache Solr 4.2.0 (Mar 12, 2013)

  • New Features:
  • SOLR-4043: Add ability to get success/failure responses from Collections API.
  • (Raintung Li, Mark Miller)
  • SOLR-2827: RegexpBoost Update Processor (janhoy)
  • SOLR-4370: Allow configuring commitWithin to do hard commits. (Mark Miller, Senthuran Sivananthan)
  • SOLR-4451: SolrJ, and SolrCloud internals, now use SystemDefaultHttpClient under the covers -- allowing many HTTP connection related properties to be controlled via 'standard' java system properties. (hossman)
  • SOLR-3855, SOLR-4490: Doc values support. (Adrien Grand, Robert Muir)
  • SOLR-4417: Reopen the IndexWriter on SolrCore reload. (Mark Miller)
  • SOLR-4477: Add support for queries (match-only) against docvalues fields. (Robert Muir)
  • SOLR-4488: Return slave replication details for a master if the master has also acted like a slave. (Mark Miller)
  • SOLR-4498: Add list command to ZkCLI that prints out the contents of ZooKeeper. (Roman Shaposhnik via Mark Miller)
  • SOLR-4481: SwitchQParserPlugin registered by default as 'switch' using syntax: {!switch case=XXX case.foo=YYY case.bar=ZZZ default=QQQ}foo (hossman)
  • SOLR-4078: Allow custom naming of SolrCloud nodes so that a new host:port combination can take over for a previous shard. (Mark Miller)
  • SOLR-4210: Requests to a Collection that does not exist on the receiving node should be proxied to a suitable node. (Mark Miller, Po Rui, yonik)
  • SOLR-1365: New SweetSpotSimilarityFactory allows customizable TF/IDF based Similarity when you know the optimal "Sweet Spot" of values for the field length and TF scoring factors. (hossman)
  • SOLR-4138: CurrencyField fields can now be used in a ValueSources to get the "raw" value (using the default number of fractional digits) in the default currency of the field type. There is also a new currency(field,[CODE]) function for generating a ValueSource of the "natural" value, converted to an optionally specified currency to override the default for the field type. (hossman)
  • SOLR-4503: Add REST API methods, via Restlet integration, for reading schema elements, at /schema/fields/, /schema/dynamicfields/, /schema/fieldtypes/, and /schema/copyfields/. (Steve Rowe)
  • Bug Fixes:
  • SOLR-2850: Do not refine facets when minCount == 1 (Matt Smith, lundgren via Adrien Grand)
  • SOLR-4309: /browse: Improve JQuery autosuggest behavior (janhoy)
  • SOLR-4330: group.sort is ignored when using group.truncate and ex/tag local params together (koji)
  • SOLR-4321: Collections API will sometimes use a node more than once, even when more unused nodes are available. (Eric Falcao, Brett Hoerner, Mark Miller)
  • SOLR-4345 : Solr Admin UI dosent work in IE 10 (steffkes)
  • SOLR-4349 : Admin UI - Query Interface does not work in IE (steffkes)
  • SOLR-4359: The RecentUpdates#update method should treat a problem reading the next record the same as a problem parsing the record - log the exception and break. (Mark Miller)
  • SOLR-4225: Term info page under schema browser shows incorrect count of terms (steffkes)
  • SOLR-3926: Solr should support better way of finding active sorts (Eirik Lygre via Erick Erickson)
  • SOLR-4342: Fix DataImportHandler stats to be a proper Map (hossman)
  • SOLR-3967: langid.enforceSchema option checks source field instead of target field (janhoy)
  • SOLR-4380: Replicate after startup option would not replicate until the IndexWriter was lazily opened. (Mark Miller, Gregg Donovan)
  • SOLR-4400: Deadlock can occur in a rare race between committing and closing a SolrIndexWriter. (Erick Erickson, Mark Miller)
  • SOLR-3655: A restarted node can briefly appear live and active before it really is in some cases. (Mark Miller)
  • SOLR-4426: NRTCachingDirectoryFactory does not initialize maxCachedMB and maxMergeSizeMB if is not present in solrconfig.xml (Jack Krupansky via shalin)
  • SOLR-4463: Fix SolrCoreState reference counting. (Mark Miller)
  • SOLR-4459: The Replication 'index move' rather than copy optimization doesn't kick in when using NRTCachingDirectory or the rate limiting feature. (Mark Miller)
  • SOLR-4421,SOLR-4165: On CoreContainer shutdown, all SolrCores should publish their state as DOWN. (Mark Miller, Markus Jelsma)
  • SOLR-4467: Ephemeral directory implementations may not recover correctly because the code to clear the tlog files on startup is off. (Mark Miller)
  • SOLR-4413: Fix SolrCore#getIndexDir() to return the current index directory. (Gregg Donovan, Mark Miller)
  • SOLR-4469: A new IndexWriter must be opened on SolrCore reload when the index directory has changed and the previous SolrCore's state should not be propagated. (Mark Miller, Gregg Donovan)
  • SOLR-4471: Replication occurs even when a slave is already up to date. (Mark Miller, Andre Charton)
  • SOLR-4484: ReplicationHandler#loadReplicationProperties still uses Files rather than the Directory to try and read the replication properties files. (Mark Miller)
  • SOLR-4352: /browse pagination now supports and preserves sort context (Eric Spiegelberg, Erik Hatcher)
  • LUCENE-4796, SOLR-4373: Fix concurrency issue in NamedSPILoader and AnalysisSPILoader when doing concurrent core loads in multicore Solr configs. (Uwe Schindler, Hossman)
  • SOLR-4504: Fixed CurrencyField range queries to correctly exclude documents w/o values (hossman)
  • SOLR-4480: A trailing + or - caused the edismax parser to throw an exception. (Fiona Tay, Jan Høydahl, yonik)
  • SOLR-4507: The Cloud tab does not show up in the Admin UI if you set zkHost in solr.xml. (Alfonso Presa, Mark Miller)
  • SOLR-4505: Possible deadlock around SolrCoreState update lock. (Erick Erickson, Mark Miller)
  • SOLR-4511: When a new index is replicated into place, we need to update the most recent replicatable index point without doing a commit. This is important for repeater use cases, as well as when nodes may switch master/slave roles. (Mark Miller, Raúl Grande)
  • SOLR-4515: CurrencyField's OpenExchangeRatesOrgProvider now requires a ratesFileLocation init param, since the previous global default no longer works (hossman)
  • SOLR-4518: Improved CurrencyField error messages when attempting to use a Currency that is not supported by the current JVM. (hossman)
  • SOLR-3798: Fix copyField implementation in IndexSchema to handle dynamic field references that aren't string-equal to the name of the referenced dynamic field. (Steve Rowe)
  • SOLR-4497: Collection Aliasing. (Mark Miller)
  • Optimizations:
  • SOLR-4339: Admin UI - Display Field-Flags on Schema-Browser (steffkes)
  • SOLR-4340: Admin UI - Analysis's Button Spinner goes wild (steffkes)
  • SOLR-4341: Admin UI - Plugins/Stats Page contains loooong Values which result in horizontal Scrollbar (steffkes)
  • SOLR-3915: Color Legend for Cloud UI (steffkes)
  • SOLR-4306: Utilize indexInfo=false when gathering core names in UI (steffkes)
  • SOLR-4284: Admin UI - make core list scrollable separate from the rest of the UI (steffkes)
  • SOLR-4364: Admin UI - Locale based number formatting (steffkes)
  • SOLR-4521: Stop using the 'force' option for recovery replication. This will keep some less common unnecessary replications from happening. (Mark Miller, Simon Scofield)
  • SOLR-4529: Improve Admin UI Dashboard legibility (Felix Buenemann via steffkes)
  • SOLR-4526: Admin UI depends on optional system info (Felix Buenemann via steffkes)
  • Other Changes:
  • SOLR-4259: Carrot2 dependency should be declared on the mini version, not the core. (Dawid Weiss).
  • SOLR-4348: Make the lock type configurable by system property by default. (Mark Miller)
  • SOLR-4353: Renamed example jetty context file to reduce confusion (hossman)
  • SOLR-4384: Make post.jar report timing information (Upayavira via janhoy)
  • SOLR-4415: Add 'state' to shards (default to 'active') and read/write them to ZooKeeper (Anshum Gupta via shalin)
  • SOLR-4394: Tests and example configs demonstrating SSL with both server and client certs (hossman)
  • SOLR-3060: SurroundQParserPlugin highlighting tests (Ahmet Arslan via hossman)
  • SOLR-2470: Added more tests for VelocityResponseWriter
  • SOLR-4471: Improve and clean up TestReplicationHandler. (Amit Nithian via Mark Miller)
  • SOLR-3843: Include lucene codecs jar and enable per-field postings and docvalues support in the schema.xml (Robert Muir, Steve Rowe)
  • SOLR-4511: Add new test for 'repeater' replication node. (Mark Miller)
  • SOLR-4458: Sort directions (asc, desc) are now case insensitive (Shawn Heisey via hossman)
  • SOLR-2996: A bare * without a field specification is treated as *:* by the lucene and edismax query paesers. (hossman, Jan Høydahl, Alan Woodward, yonik)
  • SOLR-4416: Upgrade to Tika 1.3. (Markus Jelsma via Mark Miller)
  • SOLR-4200: Reduce INFO level logging from CachingDirectoryFactory (Shawn Heisey via hossman)

New in Apache Solr 4.1.0 (Jan 23, 2013)

  • Versions of Major Components:
  • Apache Tika 1.2
  • Carrot2 3.6.2
  • Velocity 1.7 and Velocity Tools 2.0
  • Apache UIMA 2.3.1
  • Apache ZooKeeper 3.4.5
  • Upgrading from Solr 4.0.0:
  • Custom java parsing plugins need to migrate from throwing the internal ParseException to throwing SyntaxError.
  • BaseDistributedSearchTestCase now randomizes the servlet context it uses when creating Jetty instances. Subclasses that assume a hard coded context of "/solr" should either be fixed to use the "String context" variable, or should take advantage of the new BaseDistributedSearchTestCase(String) constructor to explicitly specify a fixed servlet context path.
  • New Features:
  • SOLR-2255: Enhanced pivot faceting to use local-params in the same way that regular field value faceting can. This means support for excluding a filter query, using a different output key, and specifying 'threads' to do facet.method=fcs concurrently. PivotFacetHelper now extends SimpleFacet and the getFacetImplementation() extension hook was removed.
  • SOLR-3897: A highlighter parameter "hl.preserveMulti" to return all of the values of a multiValued field in their original order when highlighting.
  • SOLR-3929: Support configuring IndexWriter max thread count in solrconfig.
  • SOLR-3906: Add support for AnalyzingSuggester (LUCENE-3842), where the underlying analyzed form used for suggestions is separate from the returned text.
  • SOLR-3985: ExternalFileField caches can be reloaded on firstSearcher/ newSearcher events using the ExternalFileFieldReloader
  • SOLR-3911: Make Directory and DirectoryFactory first class so that the majority of Solr's features work with any custom implementations.
  • Additional Work:
  • SOLR-4032: Files larger than an internal buffer size fail to replicate.
  • SOLR-4033: Consistently use the solrconfig.xml lockType everywhere.
  • SOLR-4144: Replication using too much RAM.
  • SOLR-4187: NPE on Directory release
  • SOLR-4051: Add element to DIH's data-config.xml file, allowing the user to specify the location, filename and Locale for the "data-config.properties" file. Alternatively, users can specify their own property writer implementation for greater control. This new configuration element is optional, and defaults mimic prior behavior. The one exception is that the "root" locale is default. Previously it was the machine's default locale.
  • SOLR-4084: Add FuzzyLookupFactory, which is like AnalyzingSuggester except that it can tolerate typos in the input.
  • SOLR-4088: New and improved auto host detection strategy for SolrCloud.
  • SOLR-3970: SystemInfoHandler now exposes more details about the JRE/VM/Java version in use.
  • SOLR-4101: Add support for storing term offsets in the index via a 'storeOffsetsWithPositions' flag on field definitions in the schema.
  • SOLR-4093: Solr QParsers may now be directly invoked in the lucene query syntax without the _query_ magic field hack. Example: foo AND {!term f=myfield v=$qq}
  • SOLR-4087: Add MAX_DOC_FREQ option to MoreLikeThis.
  • SOLR-4114: Allow creating more than one shard per instance with the Collection API.
  • SOLR-3531: Allowing configuring maxMergeSizeMB and maxCachedMB when using NRTCachingDirectoryFactory.
  • SOLR-4118: Fix replicationFactor to align with industry usage. replicationFactor now means the total number of copies of a document stored in the collection (or the total number of physical indexes for a single logical slice of the collection). For example if replicationFactor=3 then for a given shard there will be a total of 3 replicas (one of which will normally be designated as the leader.)
  • SOLR-4124: You should be able to set the update log directory with the CoreAdmin API the same way as the data directory.
  • SOLR-4028: When using ZK chroot, it would be nice if Solr would create the initial path when it doesn't exist.
  • SOLR-3948: Calculate/display deleted documents in admin interface.
  • SOLR-4030: Allow rate limiting Directory IO based on the IO context.
  • SOLR-4166: LBHttpSolrServer ignores ResponseParser passed in constructor.
  • SOLR-4140: Allow access to the collections API through CloudSolrServer without referencing an existing collection.
  • SOLR-788: Distributed search support for MLT.
  • SOLR-4120: Collection API: Support for specifying a list of Solr addresses to spread a new collection across.
  • SOLR-4110: Configurable Content-Type headers for PHPResponseWriters and PHPSerializedResponseWriter.
  • SOLR-1028: The ability to specify "transient" and "loadOnStartup" as a new properties of tags in solr.xml. Can specify "transientCacheSize" in the tag. Together these allow cores to be loaded only when needed and only transientCacheSize transient cores will be loaded at a time, the rest aged out on an LRU basis.
  • SOLR-4246: When update.distrib is set to skip update processors before the distributed update processor, always include the log update processor so forwarded updates will still be logged.
  • SOLR-4230: The new Solr 4 spatial fields now work with the {!geofilt} and {!bbox} query parsers. The score local-param works too.
  • SOLR-1972: Add extra statistics to RequestHandlers - 5 & 15-minute reqs/sec rolling averages; median, 75th, 95th, 99th, 99.9th percentile request times
  • SOLR-4271: Add support for PostingsHighlighter.
  • SOLR-4255: The new Solr 4 spatial fields now have a 'filter' boolean local-param that can be set to false to not filter. Its useful when there is already a spatial filter query but you also need to sort or boost by distance.
  • SOLR-4265, SOLR-4283: Solr now parses request parameters (in URL or sent with POST using content-type application/x-www-form-urlencoded) in its dispatcher code. It no longer relies on special configuration settings in Tomcat or other web containers to enable UTF-8 encoding, which is mandatory for correct Solr behaviour. Query strings passed in via the URL need to be properly-%-escaped, UTF-8 encoded bytes, otherwise Solr refuses to handle the request. The maximum length of x-www-form-urlencoded POST parameters can now be configured through the requestDispatcher/requestParsers/@formdataUploadLimitInKB setting in solrconfig.xml (defaults to 2 MiB). Solr now works out of the box with e.g. Tomcat, JBoss,...
  • SOLR-2201: DIH's "formatDate" function now supports a timezone as an optional fourth parameter
  • SOLR-4302: New parameter 'indexInfo' (defaults to true) in CoreAdmin STATUS command can be used to omit index specific information
  • SOLR-2592: Collection specific document routing. The "compositeId" router is the default for collections with hash based routing (i.e. when numShards=N is specified on collection creation). Documents with ids sharing the same domain (prefix) will be routed to the same shard, allowing for efficient querying.
  • Collections that do not specify numShards at collection creation time use custom sharding and default to the "implicit" router. Document updates received by a shard will be indexed to that shard, unless a "_shard_" parameter or document field names a different shard.
  • Optimizations:
  • SOLR-3788: Admin Cores UI should redirect to newly created core details
  • SOLR-3895: XML and XSLT UpdateRequestHandler should not try to resolve external entities. This improves speed of loading e.g. XSL-transformed XHTML documents.
  • SOLR-3614: Fix XML parsing in XPathEntityProcessor to correctly expand named entities, but ignore external entities.
  • SOLR-3734: Improve Schema-Browser Handling for CopyField using dynamicField's
  • SOLR-3941: The "commitOnLeader" part of distributed recovery can use openSearcher=false.
  • SOLR-4063: Allow CoreContainer to load multiple SolrCores in parallel rather than just serially.
  • SOLR-4199: When doing zk retries due to connection loss, rather than just retrying for 2 minutes, retry in proportion to the session timeout.
  • SOLR-4262: Replication Icon on Dashboard does not reflect Master-/Slave- State
  • SOLR-4264: Missing Error-Screen on UI's Cloud-Page
  • SOLR-4261: Percentage Infos on Dashboard have a fixed width
  • SOLR-3851: create a new core/delete an existing core should also update the main/left list of cores on the admin UI
  • SOLR-3840: XML query response display is unreadable in Solr Admin Query UI
  • SOLR-3982: Admin UI: Various Dataimport Improvements
  • SOLR-4296: Admin UI: Improve Dataimport Auto-Refresh
  • SOLR-3458: Allow multiple Items to stay open on Plugins-Page
  • Bug Fixes:
  • SOLR-4288: Improve logging for FileDataSource (basePath, relative resources).
  • SOLR-4007: Morfologik dictionaries not available in Solr field type due to class loader lookup problems.
  • SOLR-3560: Handle different types of Exception Messages for Logging UI
  • SOLR-3637: Commit Status at Core-Admin UI is always false
  • SOLR-3917: Partial State on Schema-Browser UI is not defined for Dynamic Fields & Types
  • SOLR-3939: Consider a sync attempt from leader to replica that fails due to 404 a success.
  • SOLR-3940: Rejoining the leader election incorrectly triggers the code path for a fresh cluster start rather than fail over.
  • SOLR-3961: Fixed error using LimitTokenCountFilterFactory
  • SOLR-3933: Distributed commits are not guaranteed to be ordered within a request.
  • SOLR-3939: An empty or just replicated index cannot become the leader of a shard after a leader goes down.
  • SOLR-3971: A collection that is created with numShards=1 turns into a numShards=2 collection after starting up a second core and not specifying numShards.
  • SOLR-3988: Fixed SolrTestCaseJ4.adoc(SolrInputDocument) to respect field and document boosts
  • SOLR-3981: Fixed bug that resulted in document boosts being compounded in destination fields.
  • SOLR-3920: Fix server list caching in CloudSolrServer when using more than one collection list with the same instance.
  • SOLR-3938: prepareCommit command omits commitData causing a failure to trigger replication to slaves.
  • SOLR-3992: QuerySenderListener doesn't populate document cache.
  • SOLR-3995: Recovery may never finish on SolrCore shutdown if the last reference to a SolrCore is closed by the recovery process.
  • SOLR-3998: Atomic update on uniqueKey field itself causes duplicate document.
  • SOLR-4001: In CachingDirectoryFactory#close, if there are still refs for a Directory outstanding, we need to wait for them to be released before closing.
  • SOLR-4005: If CoreContainer fails to register a created core, it should close it.
  • SOLR-4009: OverseerCollectionProcessor is not resilient to many error conditions and can stop running on errors.
  • SOLR-4019: Log stack traces for 503/Service Unavailable SolrException if not thrown by PingRequestHandler. Do not log exceptions if a user tries to view a hidden file using ShowFileRequestHandler.
  • SOLR-3589: Edismax parser does not honor mm parameter if analyzer splits a token.
  • SOLR-4031: Upgrade to Jetty 8.1.7 to fix a bug where in very rare occasions the content of two concurrent requests get mixed up.
  • SOLR-4060: ReplicationHandler can try and do a snappull and open a new IndexWriter after shutdown has already occurred, leaving an IndexWriter that is not closed.
  • SOLR-4055: Fix a thread safety issue with the Collections API that could cause actions to be targeted at the wrong SolrCores.
  • SOLR-3993: If multiple SolrCore's for a shard coexist on a node, on cluster restart, leader election would stall until timeout, waiting to see all of the replicas come up.
  • SOLR-2045: Databases that require a commit to be issued before closing the connection on a non-read-only database leak connections. Also expanded the SqlEntityProcessor test to sometimes use Derby as well as HSQLDB (Derby is one db affected by this bug).
  • SOLR-4064: When there is an unexpected exception while trying to run the new leader process, the SolrCore will not correctly rejoin the election.
  • SOLR-3989: SolrZkClient constructor dropped exception cause when throwing a new RuntimeException.
  • SOLR-4036: field aliases in fl should not cause properties of target field to be used.
  • SOLR-4003: The SolrZKClient clean method should not try and clear zk paths that start with /zookeeper, as this can fail and stop the removal of further nodes.
  • SOLR-4076: SolrQueryParser should run fuzzy terms through MultiTermAwareComponents to ensure that (for example) a fuzzy query of foobar~2 is equivalent to FooBar~2 on a field that includes lowercasing.
  • SOLR-4081: QueryParsing.toString, used during debugQuery=true, did not correctly handle ExtendedQueries such as WrappedQuery (used when cache=false), spatial queries, and frange queries.
  • SOLR-3959: Ensure the internal comma separator of poly fields is escaped for CSVResponseWriter.
  • SOLR-4075: A logical shard that has had all of it's SolrCores unloaded should be removed from the cluster state.
  • SOLR-4034: Check if a collection already exists before trying to create a new one.
  • SOLR-4097: Race can cause NPE in logging line on first cluster state update.
  • SOLR-4099: Allow the collection api work queue to make forward progress even when it's watcher is not fired for some reason.
  • SOLR-3960: Fixed a bug where Distributed Grouping ignored PostFilters
  • SOLR-3842: DIH would not populate multivalued fields if the column name derives from a resolved variable
  • SOLR-4117: Retrieving the size of the index may use the wrong index dir if you are replicating.
  • SOLR-2890: Fixed a bug that prevented omitNorms and omitTermFreqAndPositions options from being respected in some declarations
  • SOLR-4159: When we are starting a shard from rest, a potential leader should not consider it's last published state when deciding if it can be the new leader.
  • SOLR-4158: When a core is registering in ZooKeeper it may not wait long enough to find the leader due to how long the potential leader waits to see replicas.
  • SOLR-4162: ZkCli usage examples are not correct because the zkhost parameter is not present and it is mandatory for all commands.
  • SOLR-4071: Validate that name is pass to Collections API create, and behave the same way as on startup when collection.configName is not explicitly passed.
  • SOLR-4127: Added explicit error message if users attempt Atomic document updates with either updateLog or DistribUpdateProcessor.
  • SOLR-4136: Fix SolrCloud behavior when using "hostContext" containing "_" or"/" characters. This fix also makes SolrCloud more accepting of hostContext values with leading/trailing slashes.
  • SOLR-4168: Ensure we are using the absolute latest index dir when getting list of files for replication.
  • SOLR-4102: Fix UI javascript error if canonical hostname can not be resolved
  • SOLR-4178: ReplicationHandler should abort any current pulls and wait for it's executor to stop during core close.
  • SOLR-3918: Fixed the 'dist-war-excl-slf4j' ant target to exclude all slf4j jars, so that the resulting war is usable as is provided the servlet container includes the correct slf4j api and impl jars.
  • SOLR-4198: OverseerCollectionProcessor should implement ClosableThread.
  • SOLR-4213: Directories that are not shutdown until DirectoryFactory#close do not have close listeners called on them.
  • SOLR-4134: Standard (XML) request writer cannot "set" multiple values into multivalued field with partial updates.
  • SOLR-3972: Fix ShowFileRequestHandler to not log a warning in the (expected) situation of a file not found.
  • SOLR-4133: Cannot "set" field to null with partial updates when using the standard RequestWriter.
  • SOLR-4223: "maxFormContentSize" in jetty.xml is not picked up by jetty 8 so set it via solr webapp context file.
  • SOLR-4175:SearchComponent chain can't contain two components of the same class and use debugQuery.
  • SOLR-4244: When coming back from session expiration we should not wait for the leader to see us in the down state if we are the node that must become the leader.
  • SOLR-4245: When a core is registering with ZooKeeper, the timeout to find the leader in the cluster state is 30 seconds rather than leaderVoteWait + extra time.
  • SOLR-4238: Fix jetty example requestLog config
  • SOLR-4251: Fix SynonymFilterFactory when an optional tokenizerFactory is supplied.
  • SOLR-4253: Misleading resource loading warning from Carrot2 clustering component fixed
  • SOLR-4257: PeerSync updates and Log Replay updates should not wait for a ZooKeeper connection in order to proceed.
  • SOLR-4045: SOLR admin page returns HTTP 404 on core names containing a '.' (dot)
  • SOLR-4176: analysis ui: javascript not properly handling URL decoding of input
  • SOLR-4079: Long core names break web gui appearance and functionality
  • SOLR-4263: Incorrect Link from Schema-Browser to Query From for Top-Terms
  • SOLR-3829: Admin UI Logging events broken if schema.xml defines a catch-all dynamicField with type ignored
  • SOLR-4275: Fix TrieTokenizer to no longer throw StringIndexOutOfBoundsException in admin UI / AnalysisRequestHandler when you enter no number to tokenize.
  • SOLR-4279: Wrong exception message if _version_ field is multivalued
  • SOLR-4170: The 'backup' ReplicationHandler command can sometimes use a stale index directory rather than the current one.
  • SOLR-3876: Solr Admin UI is completely dysfunctional on IE 9
  • SOLR-4112: Fixed DataImportHandler ZKAwarePropertiesWriter implementation so import works fine with SolrCloud clusters
  • SOLR-4291: Harden the Overseer work queue thread loop.
  • SOLR-3820: Solr Admin Query form is missing some edismax request parameters
  • SOLR-4217: post.jar no longer ignores -Dparams when -Durl is used.
  • SOLR-4303: On replication, if the generation of the master is lower than the slave we need to force a full copy of the index.
  • SOLR-4266: HttpSolrServer does not release connection properly on exception when no response parser is used.
  • Other Changes:
  • SOLR-4106: Javac/ ivy path warnings with morfologik fixed by upgrading to Morfologik 1.5.5
  • SOLR-3899: SolrCore should not log at warning level when the index directory changes - it's an info event.
  • SOLR-3861: Refactor SolrCoreState so that it's managed by SolrCore.
  • SOLR-3966: Eliminate superfluous warning from LanguageIdentifierUpdateProcessor
  • SOLR-3932: SolrCmdDistributorTest either takes 3 seconds or 3 minutes.
  • SOLR-3856: New tests for SqlEntityProcessor/CachedSqlEntityProcessor
  • SOLR-4067: ZkStateReader#getLeaderProps should not return props for a leader that it does not think is live.
  • SOLR-4086: DIH refactor of VariableResolver and Evaluator. VariableResolver and each built-in Evaluator are separate concrete classes. DateFormatEvaluator now defaults with the ROOT Locale. However, users may specify a different Locale using an optional new third parameter.
  • SOLR-3602: Update ZooKeeper to 3.4.5
  • SOLR-4095: DIH NumberFormatTransformer & DateFormatTransformer default to the ROOT Locale if none is specified. These previously used the machine's default.
  • SOLR-4096: DIH FileDataSource & FieldReaderDataSource default to UTF-8 encoding if none is specified. These previously used the machine's default.
  • SOLR-1916: DIH to not use Lucene-forbidden Java APIs (default encoding, locale, etc.)
  • SOLR-4111: SpellCheckCollatorTest#testContextSensitiveCollate to test against both DirectSolrSpellChecker & IndexBasedSpellChecker
  • SOLR-2141: Better test coverage for Evaluators
  • SOLR-4119: Update Guava to 13.0.1
  • SOLR-4074: Raise default ramBufferSizeMB to 100 from 32.
  • SOLR-4062: The update log location in solrconfig.xml should default to ${solr.ulog.dir} rather than ${solr.data.dir:}
  • SOLR-4155: Upgrade Jetty to 8.1.8.
  • SOLR-2986: Add MoreLikeThis to warning about features that require uniqueKey. Also, change the warning to warn log level.
  • SOLR-4163: README improvements
  • SOLR-4248: "ant eclipse" should declare .svn directories as derived.
  • SOLR-3279: Upgrade Carrot2 to 3.6.2
  • SOLR-4254: Harden the 'leader requests replica to recover' code path.
  • SOLR-4226: Extract fl parsing code out of ReturnFields constructor.
  • SOLR-4208: ExtendedDismaxQParserPlugin has been refactored to make subclassing easier.
  • SOLR-3735: Relocate the example mime-to-extension mapping, and upgrade Velocity Engine to 1.7
  • SOLR-4287: Removed "apache-" prefix from Solr distribution and artifact filenames.
  • SOLR-4016: Deduplication does not work with atomic/partial updates so disallow atomic update requests which change signature generating fields.
  • SOLR-4308: Remove the problematic and now unnecessary log4j-over-slf4j.

New in Apache Solr 4.0.0 (Oct 12, 2012)

  • New Features:
  • SOLR-3670: New CountFieldValuesUpdateProcessorFactory makes it easy to index the number of values in another field for later use at query time.
  • SOLR-2768: new "mod(x,y)" function for computing the modulus of two value sources.
  • SOLR-3238: Numerous small improvements to the Admin UI
  • SOLR-3597: seems like a lot of wasted whitespace at the top of the admin screens
  • SOLR-3304: Added Solr adapters for Lucene 4's new spatial module. With SpatialRecursivePrefixTreeFieldType ("location_rpt" in example schema), it is possible to index a variable number of points per document (and sort on them), index not just points but any Spatial4j supported shape such as polygons, and to query on these shapes too. Polygons requires adding JTS to the classpath.
  • SOLR-3825: Added optional capability to log what ids are in a response
  • SOLR-3821: Added 'df' to the UI Query form
  • SOLR-3822: Added hover titles to the edismax params on the UI Query form
  • Optimizations:
  • SOLR-3715: improve concurrency of the transaction log by removing synchronization around log record serialization.
  • SOLR-3807: Currently during recovery we pause for a number of seconds after waiting for the leader to see a recovering state so that any previous updates will have finished before our commit on the leader - we don't need this wait for peersync.
  • SOLR-3837: When a leader is elected and asks replicas to sync back to him and that fails, we should ask those nodes to recovery asynchronously rather than synchronously.
  • SOLR-3709: Cache the url list created from the ClusterState in CloudSolrServer on each request.
  • SOLR-3560: Handle different types of Exception Messages for Logging UI
  • Bug fixes:
  • SOLR-3685: Solr Cloud sometimes skipped peersync attempt and replicated instead due to tlog flags not being cleared when no updates were buffered during a previous replication.
  • SOLR-3229: Fixed TermVectorComponent to work with distributed search
  • SOLR-3725: Fixed package-local-src-tgz target to not bring in unnecessary jars and binary contents.
  • SOLR-3649: Fixed bug in JavabinLoader that caused deleteById(List ids) to not work in SolrJ
  • SOLR-3730: Rollback is not implemented quite right and can cause corner case fails in SolrCloud tests.
  • SOLR-2981: Fixed StatsComponent to no longer return duplicated information when requesting multiple stats.facet fields.
  • SOLR-3743: Fixed issues with atomic updates and optimistic concurrency in conjunction with stored copyField targets by making real-time get never return copyField targets.
  • SOLR-3746: Proper error reporting if updateLog is configured w/o necessary "_version_" field in schema.xml
  • SOLR-3745: Proper error reporting if SolrCloud mode is used w/o necessary "_version_" field in schema.xml
  • SOLR-3770: Overseer may lose updates to cluster state
  • SOLR-3721: Fix bug that could theoretically allow multiple recoveries to run briefly at the same time if the recovery thread join call was interrupted.
  • SOLR-3782: A leader going down while updates are coming in can cause shard inconsistency.
  • SOLR-3611: We do not show ZooKeeper data in the UI for a node that has children.
  • SOLR-3789: Fix bug in SnapPuller that caused "internal" compression to fail.
  • SOLR-3790: ConcurrentModificationException could be thrown when using hl.fl=*. Fixed in r1231606.
  • SOLR-3668: DataImport : Specifying Custom Parameters
  • SOLR-3793: UnInvertedField faceting cached big terms in the filter cache that ignored deletions, leading to duplicate documents in search later when a filter of the same term was specified.
  • SOLR-3679: Core Admin UI gives no feedback if "Add Core" fails
  • SOLR-3795: Fixed LukeRequestHandler response to correctly return field name strings in copyDests and copySources arrays
  • SOLR-3699: Fixed some Directory leaks when there were errors during SolrCore or SolrIndexWriter initialization.
  • SOLR-3518: Include final 'hits' in log information when aggregating a distibuted request
  • SOLR-3628: SolrInputField and SolrInputDocument are now consistently backed by Collections passed in to setValue/setField, and defensively copy values from Collections passed to addValue/addField
  • SOLR-3595: CurrencyField now generates an appropriate error on schema init if it is configured as multiValued - this has never been properly supported, but previously failed silently in odd ways.
  • SOLR-3823: Fix 'bq' parsing in edismax. Please note that this required reverting the negative boost support added by SOLR-3278
  • SOLR-3827: Fix shareSchema=true in solr.xml
  • SOLR-3809: Fixed config file replication when subdirectories are used
  • SOLR-3828: Fixed QueryElevationComponent so that using 'markExcludes' does not modify the result set or ranking of 'excluded' documents relative to not using elevation at all.
  • SOLR-3569: Fixed debug output on distributed requests when there are no results found.
  • SOLR-3811: Query Form using wrong values for dismax, edismax
  • SOLR-3779: DataImportHandler's LineEntityProcessor when used in conjunction with FileListEntityProcessor would only process the first file.
  • SOLR-3791: CachedSqlEntityProcessor would throw a NullPointerException when a query returns a row with a NULL key.
  • SOLR-3833: When a election is started because a leader went down, the new leader candidate should decline if the last state they published was not active.
  • SOLR-3836: When doing peer sync, we should only count sync attempts that cannot reach the given host as success when the candidate leader is syncing with the replicas - not when replicas are syncing to the leader.
  • SOLR-3835: In our leader election algorithm, if on connection loss we found we did not create our election node, we should retry, not throw an exception.
  • SOLR-3834: A new leader on cluster startup should also run the leader sync process in case there was a bad cluster shutdown.
  • SOLR-3772: On cluster startup, we should wait until we see all registered replicas before running the leader process - or if they all do not come up, N amount of time.
  • SOLR-3756: If we are elected the leader of a shard, but we fail to publish this for any reason, we should clean up and re trigger a leader election.
  • SOLR-3812: ConnectionLoss during recovery can cause lost updates, leading to shard inconsistency.
  • SOLR-3813: When a new leader syncs, we need to ask all shards to sync back, not just those that are active.
  • SOLR-3641: CoreContainer is not persisting roles core attribute.
  • SOLR-3527: SolrCmdDistributor drops some of the important commit attributes (maxOptimizeSegments, softCommit, expungeDeletes) when sending a commit to replicas.
  • SOLR-3844: SolrCore reload can fail because it tries to remove the index write lock while already holding it.
  • SOLR-3831: Atomic updates do not distribute correctly to other nodes.
  • SOLR-3465: Replication causes two searcher warmups.
  • SOLR-3645: /terms should default to distrib=false.
  • SOLR-3759: Various fixes to the example-DIH configs
  • SOLR-3777: Dataimport-UI does not send unchecked checkboxes
  • SOLR-3850: DataImportHandler "cacheKey" parameter was incorrectly renamed "cachePk"
  • SOLR-3087: Fixed DOMUtil so that code doing attribute validation will automaticly ignore nodes in the resserved "xml" prefix - in particular this fixes some bugs related to xinclude and fieldTypes.
  • SOLR-3783: Fixed Pivot Faceting to work with facet.missing=true
  • SOLR-3869: A PeerSync attempt to it's replicas by a candidate leader should not fail on o.a.http.conn.ConnectTimeoutException.
  • SOLR-3875: Fixed index boosts on multi-valued fields when docBoost is used
  • SOLR-3878: Exception when using open-ended range query with CurrencyField
  • SOLR-3891: CacheValue in CachingDirectoryFactory cannot be used outside of solr.core package.
  • SOLR-3892: Inconsistent locking when accessing cache in CachingDirectoryFactory from RAMDirectoryFactory and MockDirectoryFactory.
  • SOLR-3883: Distributed indexing forwards non-applicable request params.
  • SOLR-3637: Commit Status at Core-Admin UI is always false
  • SOLR-3903: Fixed MissingFormatArgumentException in ConcurrentUpdateSolrServer
  • SOLR-3916: Fixed whitespace bug in parsing the fl param
  • Other changes:
  • SOLR-3690: Fixed binary release packages to include dependencie needed for the solr-test-framework
  • SOLR-2857: The /update/json and /update/csv URLs were restored to aid in the migration of existing clients.
  • SOLR-2747: Updated changes2html.pl to handle Solr's CHANGES.txt; added target 'changes-to-html' to solr/build.xml.
  • SOLR-3752: When a leader goes down, have the Overseer clear the leader state in cluster.json
  • SOLR-3751: Add defensive checks for SolrCloud updates and requests that ensure the local state matches what we can tell the request expected.
  • SOLR-3773: Hash based on the external String id rather than the indexed representation for distributed updates.
  • SOLR-3780: Maven build: Make solrj tests run separately from solr-core.
  • SOLR-3707: Upgrade Solr to Tika 1.2
  • SOLR-3772: Optionally, on cluster startup, we can wait until we see all registered replicas before running the leader process - or if they all do not come up, N amount of time.
  • SOLR-3750: Optionaly, on session expiration, we can explicitly wait some time before running the leader sync process so that we are sure every node participates.
  • SOLR-3691: SimplePostTool: Mode for crawling/posting web pages See http://wiki.apache.org/solr/ExtractingRequestHandler for examples
  • SOLR-3824: Velocity: Error messages from search not displayed
  • SOLR-3826: Test framework improvements for specifying coreName on initCore
  • SOLR-3749: Allow default UpdateLog syncLevel to be configured by solrconfig.xml
  • SOLR-3845: Rename numReplicas to replicationFactor in Collections API.
  • SOLR-3815: SolrCloud - Add properties such as "range" to shards, which changes the clusterstate.json and puts the shard replicas under "replicas".
  • SOLR-3871: SyncStrategy should use an executor for the threads it creates to request recoveries.
  • SOLR-3870: SyncStrategy should have a close so it can abort earlier on shutdown.

New in Apache Solr 4.0 Beta (Aug 14, 2012)

  • New Features:
  • LUCENE-4201: Added JapaneseIterationMarkCharFilterFactory to normalize Japanese iteration marks. (Robert Muir, Christian Moen)
  • SOLR-1856: In Solr Cell, literals should override Tika-parsed values. Patch adds a param "literalsOverride" which defaults to true, but can be set to "false" to let Tika-parsed values be appended to literal values (Chris Harris, janhoy)
  • SOLR-3488: Added a Collection management API for SolrCloud. (Tommaso Teofili, Sami Siren, yonik, Mark Miller)
  • SOLR-3559: Full deleteByQuery support with SolrCloud distributed indexing. All replicas of a shard will be consistent, even if updates arrive in a different order on different replicas. (yonik)
  • SOLR-1929: Index encrypted documents with ExtractingUpdateRequestHandler. By supplying resource.password= or specifying an external file with regular expressions matching file names, Solr will decrypt and index PDFs and DOCX formats. (janhoy, Yiannis Pericleous)
  • SOLR-3562: Add options to remove instance dir or data dir on core unload. (Mark Miller, Per Steffensen)
  • SOLR-2702: The default directory factory was changed to NRTCachingDirectoryFactory which wraps the StandardDirectoryFactory and caches small files for improved Near Real-time (NRT) performance. (Mark Miller, yonik)
  • SOLR-2616: Include a sample java util logging configuration file. (David Smiley, Mark Miller)
  • SOLR-3460: Add cloud-scripts directory and a zkcli.sh|bat tool for easy scripting and interaction with ZooKeeper. (Mark Miller)
  • SOLR-1725: StatelessScriptUpdateProcessorFactory allows users to implement the full ScriptUpdateProcessor API using any scripting language with a javax.script.ScriptEngineFactory (Uri Boness, ehatcher, Simon Rosenthal, hossman)
  • SOLR-139: Change to updateable documents to create the document if it doesn't already exist. To assert that the document must exist, use the optimistic concurrency feature by specifying a _version_ of 1. (yonik)
  • LUCENE-2510, LUCENE-4044: Migrated Solr's Tokenizer-, TokenFilter-, and CharFilterFactories to the lucene-analysis module. To add new analysis modules to Solr (like ICU, SmartChinese, Morfologik,...), just drop in the JAR files from Lucene's binary distribution into your Solr instance's lib folder. The factories are automatically made available with SPI. (Chris Male, Robert Muir, Uwe Schindler)
  • SOLR-3634, SOLR-3635: CoreContainer and CoreAdminHandler will now remember and report back information about failures to initialize SolrCores. These failures will be accessible from the web UI and CoreAdminHandler STATUS command until they are "reset" by creating/renaming a SolrCore with the same name. (hossman, steffkes)
  • SOLR-1280: Added commented-out example of the new script update processor to the example configuration. See http://wiki.apache.org/solr/ScriptUpdateProcessor (ehatcher)
  • SOLR-3672: SimplePostTool: Improvements for posting files Support for auto mode, recursive and wildcards (janhoy)
  • Optimizations:
  • SOLR-3708: Add hashCode to ClusterState so that structures built based on the ClusterState can be easily cached. (Mark Miller)
  • SOLR-3709: Cache the url list created from the ClusterState in CloudSolrServer on each request. (Mark Miller, yonik)
  • SOLR-3710: Change CloudSolrServer so that update requests are only sent to leaders by default. (Mark Miller)
  • Bug Fixes:
  • SOLR-3582: Our ZooKeeper watchers respond to session events as if they are change events, creating undesirable side effects. (Trym R. Møller, Mark Miller)
  • SOLR-3467: ExtendedDismax escaping is missing several reserved characters (Michael Dodsworth via janhoy)
  • SOLR-3587: After reloading a SolrCore, the original Analyzer is still used rather than a new one. (Alexey Serba, yonik, rmuir, Mark Miller)
  • LUCENE-4185: Fix a bug where CharFilters were wrongly being applied twice.(Michael Froh, rmuir)
  • SOLR-3610: After reloading a core, indexing would fail on any newly added fields to the schema. (Brent Mills, rmuir)
  • SOLR-3377: edismax fails to correctly parse a fielded query wrapped by parens. This regression was introduced in 3.6. (Bernd Fehling, Jan Høydahl, yonik)
  • SOLR-3621: Fix rare concurrency issue when opening a new IndexWriter for replication or rollback. (Mark Miller)
  • SOLR-1781: Replication index directories not always cleaned up. (Markus Jelsma, Terje Sten Bjerkseth, Mark Miller)
  • SOLR-3639: Update ZooKeeper to 3.3.6 for a variety of bug fixes. (Mark Miller)
  • SOLR-3629: Typo in solr.xml persistence when overriding the solrconfig.xml file name using the "config" attribute prevented the override file from being used. (Ryan Zezeski, hossman)
  • SOLR-3642: Correct broken check for multivalued fields in stats.facet (Yandong Yao, hossman)
  • SOLR-3658: Adding thousands of docs with one UpdateProcessorChain instance can briefly create spikes of threads in the thousands. (yonik, Mark Miller)
  • SOLR-3660: Velocity: Link to admin page broken (janhoy)
  • SOLR-3656: A core reload now always uses the same dataDir. (Mark Miller, yonik)
  • SOLR-3662: Core reload bugs: a reload always obtained a non-NRT searcher, which could go back in time with respect to the previous core's NRT searcher. Versioning did not work correctly across a core reload, and update handler synchronization was changed to synchronize on core state since more than on update handler can coexist for a single index during a reload. (yonik)
  • SOLR-3663: There are a couple of bugs in the sync process when a leader goes down and a new leader is elected. (Mark Miller)
  • SOLR-3623: Fixed inconsistent treatment of third-party dependencies for solr contribs analysis-extras & uima (hossman)
  • SOLR-3652: Fixed range faceting to error instead of looping infinitely when 'gap' is zero -- or effectively zero due to floating point arithmetic underflow. (hossman)
  • SOLR-3648: Fixed VelocityResponseWriter template loading in SolrCloud mode. For the example configuration, this means /browse now works with SolrCloud. (janhoy, ehatcher)
  • SOLR-3677: Fixed missleading error message in web ui to distinguish between no SolrCores loaded vs. no /admin/ handler available. (hossman, steffkes)
  • SOLR-3428: SolrCmdDistributor flushAdds/flushDeletes can cause repeated adds/deletes to be sent (Mark Miller, Per Steffensen)
  • SOLR-3647: DistributedQueue should use our Solr zk client rather than the std zk client. ZooKeeper expiration can be permanent otherwise. (Mark Miller)
  • Other Changes:
  • SOLR-3524: Make discarding punctuation configurable in JapaneseTokenizerFactory. The default is to discard punctuation, but this is overridable as an expert option. (Kazuaki Hiraga, Jun Ohtani via Christian Moen)
  • SOLR-1770: Move the default core instance directory into a collection1 folder. (Mark Miller)
  • SOLR-3355: Add shard and collection to SolrCore statistics. (Michael Garski, Mark Miller)
  • SOLR-3575: solr.xml should default to persist=true (Mark Miller)
  • SOLR-3563: Unloading all cores in a SolrCloud collection will now cause the removal of that collection's meta data from ZooKeeper. (Mark Miller, Per Steffensen)
  • SOLR-3599: Add zkClientTimeout to solr.xml so that it's obvious how to change it and so that you can change it with a system property. (Mark Miller)
  • SOLR-3609: Change Solr's expanded webapp directory to be at a consistent path called solr-webapp rather than a temporary directory. (Mark Miller)
  • SOLR-3600: Raise the default zkClientTimeout from 10 seconds to 15 seconds. (Mark Miller)
  • SOLR-3215: Clone SolrInputDocument when distrib indexing so that update processors after the distrib update process do not process the document twice. (Mark Miller)
  • SOLR-3683: Improved error handling if an contains both an explicit class attribute, as well as nested factories. (hossman)
  • SOLR-3682: Fail to parse schema.xml if uniqueKeyField is multivalued (hossman)
  • SOLR-2115: DIH no longer requires the "config" parameter to be specified in solrconfig.xml. Instead, the configuration is loaded and parsed with every import. This allows the use of a different configuration with each import, and makes correcting configuration errors simpler. Also, the configuration itself can be passed using the "dataConfig" parameter rather than using a file (this previously worked in debug mode only). When configuration errors are encountered, the error message is returned in XML format. (James Dyer)
  • SOLR-3439: Make SolrCell easier to use out of the box. Also improves "/browse" to display rich-text documents correctly, along with facets for author and content_type. With the new "content" field, highlighting of body is supported. See also SOLR-3672 for easier posting of a whole directory structure. (Jack Krupansky, janhoy)

New in Apache Solr 3.6.1 (Jul 23, 2012)

  • The concurrency of MMapDirectory was improved, which caused a performance regression in comparison to Solr 3.5.0. This affected users with 64bit platforms (Linux, Solaris, Windows) or those explicitely using MMapDirectoryFactory.
  • ReplicationHandler "maxNumberOfBackups" was fixed to work if backups are triggered on commit.
  • Charset problems were fixed with HttpSolrServer, caused by an upgrade to a new Commons HttpClient version in 3.6.0.
  • Grouping was fixed to return correct count when not all shards are queried in the second pass. Solr no longer throws Exception when using result grouping with main=true and using wt=javabin.
  • Config file replication was made less error prone.
  • Data Import Handler threading fixes.
  • Various minor bugs were fixed.

New in Apache Solr 3.4.0 (Sep 15, 2011)

  • Bug fixes and improvements from Apache Lucene 3.4.0, including a major bug (LUCENE-3418) whereby a Lucene index could easily become corrupted if the OS or computer crashed or lost power.
  • SolrJ client can now parse grouped and range facets results (SOLR-2523).
  • A new XsltUpdateRequestHandler allows posting XML that's transformed by a provided XSLT into a valid Solr document (SOLR-2630).
  • Post-group faceting option (group.truncate) can now compute facet counts for only the highest ranking documents per-group. (SOLR-2665).
  • Add commitWithin update request parameter to all update handlers that were previously missing it. This tells Solr to commit the change within the specified amount of time (SOLR-2540).
  • You can now specify NIOFSDirectory (SOLR-2670).
  • New parameter hl.phraseLimit speeds up FastVectorHighlighter (LUCENE-3234).
  • The query cache and filter cache can now be disabled per request. See this wiki page (SOLR-2429).
  • Improved memory usage, build time, and performance of SynonymFilterFactory (LUCENE-3233).
  • Added omitPositions to the schema, so you can omit position information while still indexing term frequencies (LUCENE-2048).
  • Various fixes for multi-threaded DataImportHandler.

New in Apache Solr 3.3.0 (Jul 2, 2011)

  • Grouping / Field Collapsing
  • A new, automaton-based suggest/autocomplete implementation offering an order of magnitude smaller RAM consumption.
  • KStemFilterFactory, an optimized implementation of a less aggressive stemmer for English.
  • Solr defaults to a new, more efficient merge policy (TieredMergePolicy). See http://s.apache.org/merging for more information.
  • Important bugfixes, including extremely high RAM usage in spellchecking.
  • Bugfixes and improvements from Apache Lucene 3.3