diff --git a/build.xml b/build.xml
index 5dc31748660c9b84c1bb220e56e00a0862f217eb..e1d324548eb343018629ef4b6b3d67c91d98fc6b 100644
--- a/build.xml
+++ b/build.xml
@@ -221,10 +221,13 @@
     </if>
 
     <!-- delete the configuration, sample index, logs and cache data -->
+    <delete dir="${srcdir}/solr/logs" includeemptydirs="true" failonerror="false" />
     <delete dir="${srcdir}/solr/alphabetical_browse" includeemptydirs="true" failonerror="true" />
+    <delete dir="${srcdir}/solr/authority/conf" includeemptydirs="true" failonerror="true" />
     <delete dir="${srcdir}/solr/authority/index" includeemptydirs="true" failonerror="true" />
     <delete dir="${srcdir}/solr/authority/tlog" includeemptydirs="true" failonerror="true" />
     <delete dir="${srcdir}/solr/biblio/index" includeemptydirs="true" failonerror="true" />
+    <delete dir="${srcdir}/solr/biblio/conf" includeemptydirs="true" failonerror="true" />
     <delete dir="${srcdir}/solr/biblio/tlog" includeemptydirs="true" failonerror="true" />
     <delete dir="${srcdir}/solr/biblio/spellchecker" includeemptydirs="true" failonerror="true" />
     <delete dir="${srcdir}/solr/biblio/spellShingle" includeemptydirs="true" failonerror="true" />
diff --git a/config/vufind/config.ini b/config/vufind/config.ini
index 2877b26773d5bbb565eb7b3ce3301f3176086b6b..a38ca1006bd4bae815f430457c17bbd0b970a34b 100644
--- a/config/vufind/config.ini
+++ b/config/vufind/config.ini
@@ -325,9 +325,6 @@ ils_encryption_key = false
 
 ; When using the Solr mode, specify the address of a Solr server containing a
 ; "stats" core here; if no URL is specified, [Index]/url below will be used.
-;
-; Note: The stats core is disabled by default -- you will need to edit solr/solr.xml
-; to turn it on.
 ;solr            = http://localhost:8080/solr
 
 ; When using the File mode, specify a directory for saving stat files here:
@@ -358,9 +355,8 @@ timeout = 30
 default_dismax_handler = dismax
 
 ; Enable/Disable searching reserves using the "reserves" Solr core.  When enabling
-; this feature, you also need to uncomment the relevant line in solr/solr.xml and
-; restart Solr to enable the reserves core, and you need to run the
-; util/index_reserves.php script to populate the new index.
+; this feature, you need to run the util/index_reserves.php script to populate the
+; new index.
 [Reserves]
 search_enabled  = false
 
diff --git a/import/browse-indexing.jar b/import/browse-indexing.jar
index b093a95ab005ff74995825b4ab03ad9e7466efd2..5a4c3492fb9da7e8c2ca174797c08648261964f1 100644
Binary files a/import/browse-indexing.jar and b/import/browse-indexing.jar differ
diff --git a/import/import.properties b/import/import.properties
index d1fb760d31499dffb0b59a409a6cec091eb369cb..8549a0ac3664fe854db608241ddc548f8d443e78 100644
--- a/import/import.properties
+++ b/import/import.properties
@@ -1,12 +1,8 @@
 # Properties for the Java import program
 # $Id: vufind_config.properties $
 
-# solrmarc.solr.war.path - must point to either a war file for the version of Solr that
-# you want to use, or to a directory of jar files extracted from a Solr war files.  If
-# this is not provided, SolrMarc can only work by communicating with a running Solr server.
 # IMPORTANT NOTE FOR WINDOWS USERS:
 #      Use forward slashes, not back slashes (i.e.  c:/vufind/..., not c:\vufind\...)
-# solrmarc.solr.war.path=/usr/local/vufind/solr/jetty/webapps/solr.war
 
 # solrmarc.custom.jar.path - Jar containing custom java code to use in indexing. 
 # If solr.indexer below is defined (other than the default of org.solrmarc.index.SolrIndexer)
diff --git a/import/import_auth.properties b/import/import_auth.properties
index d9f994bea2824597a7b91ca35cb43a01b5841779..c81f0c34b2e89de65918b79bc18fc4ca61d39efa 100644
--- a/import/import_auth.properties
+++ b/import/import_auth.properties
@@ -1,12 +1,8 @@
 # Properties for the Java import program (used for importing authority records)
 # $Id: import_auth.properties $
 
-# solrmarc.solr.war.path - must point to either a war file for the version of Solr that
-# you want to use, or to a directory of jar files extracted from a Solr war files.  If
-# this is not provided, SolrMarc can only work by communicating with a running Solr server.
 # IMPORTANT NOTE FOR WINDOWS USERS:
 #      Use forward slashes, not back slashes (i.e.  c:/vufind/..., not c:\vufind\...)
-# solrmarc.solr.war.path=/usr/local/vufind/solr/jetty/webapps/solr.war
 
 # solrmarc.custom.jar.path - Jar containing custom java code to use in indexing. 
 # If solr.indexer below is defined (other than the default of org.solrmarc.index.SolrIndexer)
diff --git a/solr/authority/conf/solrconfig.xml b/solr/authority/conf/solrconfig.xml
index 583777d3735513985a33da5c6c10d9618b083f6c..e822dd73555e0c88bbe57c1a52b9d632267a2097 100644
--- a/solr/authority/conf/solrconfig.xml
+++ b/solr/authority/conf/solrconfig.xml
@@ -32,7 +32,7 @@
        that you fully re-index after changing this setting as it can
        affect both how text is indexed and queried.
     -->
-  <luceneMatchVersion>LUCENE_42</luceneMatchVersion>
+  <luceneMatchVersion>4.10.4</luceneMatchVersion>
 
   <!-- Used to specify an alternate directory to hold all index data
        other than the default ./data under the Solr home.
diff --git a/solr/authority/core.properties b/solr/authority/core.properties
new file mode 100644
index 0000000000000000000000000000000000000000..84cd043b745a9bca082581430b90a72c3aeeb4c4
--- /dev/null
+++ b/solr/authority/core.properties
@@ -0,0 +1,2 @@
+# only load this core when it is accessed (since it may never be used):
+loadOnStartup=false
\ No newline at end of file
diff --git a/solr/biblio/conf/solrconfig.xml b/solr/biblio/conf/solrconfig.xml
index fa2f8dd7689ddb4210fd543909c093efc3218227..5daec2ea4857cf722abdb04d82fe47c161ba43ef 100644
--- a/solr/biblio/conf/solrconfig.xml
+++ b/solr/biblio/conf/solrconfig.xml
@@ -32,7 +32,7 @@
        that you fully re-index after changing this setting as it can
        affect both how text is indexed and queried.
     -->
-  <luceneMatchVersion>LUCENE_42</luceneMatchVersion>
+  <luceneMatchVersion>4.10.4</luceneMatchVersion>
 
   <!-- Used to specify an alternate directory to hold all index data
        other than the default ./data under the Solr home.
diff --git a/solr/biblio/core.properties b/solr/biblio/core.properties
new file mode 100644
index 0000000000000000000000000000000000000000..2de7dd02e2cc204e68a3d271e4b6cb6f10d180ef
--- /dev/null
+++ b/solr/biblio/core.properties
@@ -0,0 +1 @@
+# use defaults for biblio core
\ No newline at end of file
diff --git a/solr/jetty/lib/ext/jcl-over-slf4j-1.7.6.jar b/solr/jetty/lib/ext/jcl-over-slf4j-1.7.6.jar
new file mode 100644
index 0000000000000000000000000000000000000000..1a1ceeec5c2305ee3ac73a8a311a3a96762d8011
Binary files /dev/null and b/solr/jetty/lib/ext/jcl-over-slf4j-1.7.6.jar differ
diff --git a/solr/jetty/lib/ext/jul-to-slf4j-1.7.6.jar b/solr/jetty/lib/ext/jul-to-slf4j-1.7.6.jar
new file mode 100644
index 0000000000000000000000000000000000000000..433c8987a23e50ffed1eda8c17088041db38af5f
Binary files /dev/null and b/solr/jetty/lib/ext/jul-to-slf4j-1.7.6.jar differ
diff --git a/solr/jetty/lib/ext/log4j-1.2.17.jar b/solr/jetty/lib/ext/log4j-1.2.17.jar
new file mode 100644
index 0000000000000000000000000000000000000000..1d425cf7d7e25f81be64d32c406ff66cfb6c4766
Binary files /dev/null and b/solr/jetty/lib/ext/log4j-1.2.17.jar differ
diff --git a/solr/jetty/lib/ext/slf4j-api-1.7.6.jar b/solr/jetty/lib/ext/slf4j-api-1.7.6.jar
new file mode 100644
index 0000000000000000000000000000000000000000..19aaf37667690c429f30d5d186536ec3d22800ee
Binary files /dev/null and b/solr/jetty/lib/ext/slf4j-api-1.7.6.jar differ
diff --git a/solr/jetty/lib/ext/slf4j-log4j12-1.7.6.jar b/solr/jetty/lib/ext/slf4j-log4j12-1.7.6.jar
new file mode 100644
index 0000000000000000000000000000000000000000..d1cc2456e4a4bb35a87215ab9264b631d98dbf05
Binary files /dev/null and b/solr/jetty/lib/ext/slf4j-log4j12-1.7.6.jar differ
diff --git a/solr/jetty/webapps/solr.war b/solr/jetty/webapps/solr.war
index b22100f6066fe8d5a5e57923380527925418fd6b..f8775246b45d1a52aa95e7447b850e0a2967bb09 100644
Binary files a/solr/jetty/webapps/solr.war and b/solr/jetty/webapps/solr.war differ
diff --git a/solr/lib/browse-handler.jar b/solr/lib/browse-handler.jar
index 6a397d7ebb4ddb6fbd79e95585f46657f667f65a..95bf48857f9b97ae0e79877c42cff7f6cc29fd6c 100644
Binary files a/solr/lib/browse-handler.jar and b/solr/lib/browse-handler.jar differ
diff --git a/solr/lib/icu4j-49.1.jar b/solr/lib/icu4j-49.1.jar
deleted file mode 100644
index bd3d55073cb43f672605e6e497a8401a18fd975a..0000000000000000000000000000000000000000
Binary files a/solr/lib/icu4j-49.1.jar and /dev/null differ
diff --git a/solr/lib/icu4j-53.1.jar b/solr/lib/icu4j-53.1.jar
new file mode 100644
index 0000000000000000000000000000000000000000..2c3ff8bbfd4709300e57b9f93f5abb0ae69fbdde
Binary files /dev/null and b/solr/lib/icu4j-53.1.jar differ
diff --git a/solr/lib/lucene-analyzers-icu-4.10.4.jar b/solr/lib/lucene-analyzers-icu-4.10.4.jar
new file mode 100644
index 0000000000000000000000000000000000000000..ba46876eb79de91a74506f9f327f3ee0eba094de
Binary files /dev/null and b/solr/lib/lucene-analyzers-icu-4.10.4.jar differ
diff --git a/solr/lib/lucene-analyzers-icu-4.2.1.jar b/solr/lib/lucene-analyzers-icu-4.2.1.jar
deleted file mode 100644
index 3965e01ef3c438ada81a76f7dffd6e2225d09964..0000000000000000000000000000000000000000
Binary files a/solr/lib/lucene-analyzers-icu-4.2.1.jar and /dev/null differ
diff --git a/solr/lib/lucene-analyzers-smartcn-4.2.1.jar b/solr/lib/lucene-analyzers-smartcn-4.10.4.jar
similarity index 98%
rename from solr/lib/lucene-analyzers-smartcn-4.2.1.jar
rename to solr/lib/lucene-analyzers-smartcn-4.10.4.jar
index 417a2e1c6ce4dacc45e75ed3633f121cee18d510..3ebd81e2e0ca4dfa986723079b85a4d928f31d39 100644
Binary files a/solr/lib/lucene-analyzers-smartcn-4.2.1.jar and b/solr/lib/lucene-analyzers-smartcn-4.10.4.jar differ
diff --git a/solr/lib/lucene-analyzers-stempel-4.2.1.jar b/solr/lib/lucene-analyzers-stempel-4.10.4.jar
similarity index 92%
rename from solr/lib/lucene-analyzers-stempel-4.2.1.jar
rename to solr/lib/lucene-analyzers-stempel-4.10.4.jar
index 9c4272d1770b451e1770d5aa9c9853e5b43578d1..0259fa04896ccecf225b2620fff0d0e2e1a88f5d 100644
Binary files a/solr/lib/lucene-analyzers-stempel-4.2.1.jar and b/solr/lib/lucene-analyzers-stempel-4.10.4.jar differ
diff --git a/solr/lib/solr-analysis-extras-4.10.4.jar b/solr/lib/solr-analysis-extras-4.10.4.jar
new file mode 100644
index 0000000000000000000000000000000000000000..6e62dd6b8a56c295653afe5263eb71dea45bfda8
Binary files /dev/null and b/solr/lib/solr-analysis-extras-4.10.4.jar differ
diff --git a/solr/lib/solr-analysis-extras-4.2.1.jar b/solr/lib/solr-analysis-extras-4.2.1.jar
deleted file mode 100644
index f4da6206dd001d41aa860f4b9d27038d6efe6d54..0000000000000000000000000000000000000000
Binary files a/solr/lib/solr-analysis-extras-4.2.1.jar and /dev/null differ
diff --git a/solr/lib/solr-core-4.10.4.jar b/solr/lib/solr-core-4.10.4.jar
new file mode 100644
index 0000000000000000000000000000000000000000..cfbb98c1430ad3f2a8864e10926b1c2e841a66df
Binary files /dev/null and b/solr/lib/solr-core-4.10.4.jar differ
diff --git a/solr/lib/solr-core-4.2.1.jar b/solr/lib/solr-core-4.2.1.jar
deleted file mode 100644
index 14d2dbe2898cccb55db017dcb0e84633cf12adfb..0000000000000000000000000000000000000000
Binary files a/solr/lib/solr-core-4.2.1.jar and /dev/null differ
diff --git a/solr/log4j.properties b/solr/log4j.properties
new file mode 100644
index 0000000000000000000000000000000000000000..ff024c6b828e8cd1e6dfa0316128d199b6c3f2c4
--- /dev/null
+++ b/solr/log4j.properties
@@ -0,0 +1,24 @@
+#  Logging level
+solr.log=solr/logs/
+log4j.rootLogger=INFO, file, CONSOLE
+
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x \u2013 %m%n
+
+#- size rotation with log cleanup.
+log4j.appender.file=org.apache.log4j.RollingFileAppender
+log4j.appender.file.MaxFileSize=4MB
+log4j.appender.file.MaxBackupIndex=9
+
+#- File to log to and log format
+log4j.appender.file.File=${solr.log}/solr.log
+log4j.appender.file.layout=org.apache.log4j.PatternLayout
+log4j.appender.file.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; %C; %m\n
+
+log4j.logger.org.apache.zookeeper=WARN
+log4j.logger.org.apache.hadoop=WARN
+
+# set to INFO to enable infostream log messages
+log4j.logger.org.apache.solr.update.LoggingInfoStream=OFF
diff --git a/solr/reserves/conf/solrconfig.xml b/solr/reserves/conf/solrconfig.xml
index d05bb8dc4635b13353e65ae6923440390ae52fe5..a1585a05a8e33bd1f9ca89b8af7cad23e13a7623 100644
--- a/solr/reserves/conf/solrconfig.xml
+++ b/solr/reserves/conf/solrconfig.xml
@@ -32,7 +32,7 @@
        that you fully re-index after changing this setting as it can
        affect both how text is indexed and queried.
     -->
-  <luceneMatchVersion>LUCENE_42</luceneMatchVersion>
+  <luceneMatchVersion>4.10.4</luceneMatchVersion>
 
   <!-- Used to specify an alternate directory to hold all index data
        other than the default ./data under the Solr home.
diff --git a/solr/reserves/core.properties b/solr/reserves/core.properties
new file mode 100644
index 0000000000000000000000000000000000000000..84cd043b745a9bca082581430b90a72c3aeeb4c4
--- /dev/null
+++ b/solr/reserves/core.properties
@@ -0,0 +1,2 @@
+# only load this core when it is accessed (since it may never be used):
+loadOnStartup=false
\ No newline at end of file
diff --git a/solr/solr.xml b/solr/solr.xml
index 243b00523351f50a8192c837a170871b358e62b4..6b227f0a66bc22b8daf6723528efe8c6a1794657 100644
--- a/solr/solr.xml
+++ b/solr/solr.xml
@@ -1,9 +1,3 @@
-<solr persistent="true" sharedLib="lib">
-  <cores adminPath="/admin/multicore">
-    <core name="biblio" instanceDir="biblio"/>
-    <core name="authority" instanceDir="authority"/>
-    <!-- uncomment to enable stats core: <core name="stats" instanceDir="stats"/> -->
-    <!-- uncomment to enable website core: <core name="website" instanceDir="website"/> -->
-    <!-- uncomment to enable reserves core: <core name="reserves" instanceDir="reserves"/> -->
-  </cores>
+<solr>
+  <str name="sharedLib">solr/lib"</str>
 </solr>
diff --git a/solr/stats/conf/solrconfig.xml b/solr/stats/conf/solrconfig.xml
index 50a2e42c50d144a43a53ac295e0c07be3357f917..516505cc9ef545fc3578f485c154a57f793e4991 100644
--- a/solr/stats/conf/solrconfig.xml
+++ b/solr/stats/conf/solrconfig.xml
@@ -32,7 +32,7 @@
        that you fully re-index after changing this setting as it can
        affect both how text is indexed and queried.
     -->
-  <luceneMatchVersion>LUCENE_42</luceneMatchVersion>
+  <luceneMatchVersion>4.10.4</luceneMatchVersion>
 
   <!-- Used to specify an alternate directory to hold all index data
        other than the default ./data under the Solr home.
diff --git a/solr/stats/core.properties b/solr/stats/core.properties
new file mode 100644
index 0000000000000000000000000000000000000000..84cd043b745a9bca082581430b90a72c3aeeb4c4
--- /dev/null
+++ b/solr/stats/core.properties
@@ -0,0 +1,2 @@
+# only load this core when it is accessed (since it may never be used):
+loadOnStartup=false
\ No newline at end of file
diff --git a/solr/website/conf/solrconfig.xml b/solr/website/conf/solrconfig.xml
index e547b612722817852a5c0f208c24a8221150966d..0e5b9a372869d4b8402be3660d94b2561a9eada7 100644
--- a/solr/website/conf/solrconfig.xml
+++ b/solr/website/conf/solrconfig.xml
@@ -32,7 +32,7 @@
        that you fully re-index after changing this setting as it can
        affect both how text is indexed and queried.
     -->
-  <luceneMatchVersion>LUCENE_42</luceneMatchVersion>
+  <luceneMatchVersion>4.10.4</luceneMatchVersion>
 
   <!-- Used to specify an alternate directory to hold all index data
        other than the default ./data under the Solr home.
diff --git a/solr/website/core.properties b/solr/website/core.properties
new file mode 100644
index 0000000000000000000000000000000000000000..84cd043b745a9bca082581430b90a72c3aeeb4c4
--- /dev/null
+++ b/solr/website/core.properties
@@ -0,0 +1,2 @@
+# only load this core when it is accessed (since it may never be used):
+loadOnStartup=false
\ No newline at end of file
diff --git a/vufind.sh b/vufind.sh
index 5928c9163c96a5e4c39455cd9a88b1b8c6a92b42..046a334bd100bcc6ac46fd6ce0bde2c82e241978 100755
--- a/vufind.sh
+++ b/vufind.sh
@@ -425,6 +425,15 @@ then
     JAVA_OPTIONS="$JAVA_OPTIONS -Djetty.logs=$JETTY_LOG"
 fi
 
+#####################################################
+# Set log4j configuration file
+#####################################################
+if [ "$SOLR_LOG4J" != "" ]
+then
+  JAVA_OPTIONS="$JAVA_OPTIONS -Dlog4j.configuration=$SOLR_LOG4J"
+else
+  JAVA_OPTIONS="$JAVA_OPTIONS -Dlog4j.configuration=file://$SOLR_HOME/log4j.properties"
+fi
 
 #####################################################
 # Are we running on Windows? Could be, with Cygwin/NT.