Move Goobi.IndexServer into the Goobi.Presentation project

This commit is contained in:
Sebastian Meyer 2014-04-30 09:45:22 +02:00
parent 3e0f0e7385
commit 7115104c14
10 changed files with 1601 additions and 0 deletions

View File

@ -0,0 +1,202 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@ -0,0 +1,40 @@
Apache Solr for Goobi.Presentation
==================================
This is just a pre-configured version of Apache Solr. Some files have to be
patched in order to add some configuration and security constraints for up
to 15 different Lucene cores to be used by Goobi.Presentation. If you need
more cores, you have to add more security constraints by yourself.
Additionally there are ready-to-use configuration files for the Apache Solr
application in the conf/ directoy.
Installation instructions
-------------------------
1. Make sure you have Apache Tomcat 6 up and running. Download Solr 3.6.1
from http://lucene.apache.org/solr/. Using later versions may be
possible, but is not tested.
2. Apply the patches in patches/* to the respective files and build Solr.
3. Copy solr.xml and conf/* to /home/solr and confirm overwriting the
existing files. Then move the Solr WAR file to /home/solr and rename it
to "apache-solr-for-goobi.war" or change the "docBase" value in
conf/context.xml accordingly.
4. Add the roles "dlfSolrUpdate" and "dlfSolrAdmin" and at least one user
with both roles to Tomcat's tomcat-users.xml file.
5. Load the application by using conf/context.xml as Tomcat's context file.
6. Restart Tomcat and go for it!
Update instructions
-------------------
When updating an existing Solr instance for Goobi.Presentation follow the
above steps but DO NOT overwrite solr.xml! Goobi.Presentation dynamically
adds new cores to this file, so overwriting it would result in a loss of
these indexes.

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Set the path to the Solr war file as "docBase". -->
<Context docBase="/home/solr/apache-solr-for-goobi.war" debug="0" crossContext="true">
<!-- Specify the Solr home directory as "value". -->
<Environment name="solr/home" type="java.lang.String" value="/home/solr" override="true"/>
</Context>

View File

@ -0,0 +1,15 @@
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#-----------------------------------------------------------------------
# Use a protected word file to protect against the stemmer reducing two
# unrelated words to the same base word.

View File

@ -0,0 +1,163 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<schema name="goobi" version="1.5">
<types>
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" />
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0" />
<!-- Use dates of the form 1995-12-31Z23:59:49Z for this field. -->
<fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0" />
<fieldType name="standard" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.StandardFilterFactory" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
<fieldType name="autocomplete" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
<fieldType name="fulltext" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<!-- For more precise, but less flexible matching, set generateWordParts="0" and generateNumberParts="0". -->
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" />
<filter class="solr.ReversedWildcardFilterFactory" withOriginal="true" maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.TrimFilterFactory" />
<filter class="solr.SnowballPorterFilterFactory" language="German" protected="protwords.txt" />
<!-- <filter class="solr.GermanStemFilterFactory" /> -->
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
<!-- <filter class="solr.PatternReplaceFilterFactory" pattern="([^a-z])" replacement="" replace="all" /> -->
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<!-- For more precise, but less flexible matching, set generateWordParts="0" and generateNumberParts="0". -->
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.TrimFilterFactory" />
<filter class="solr.SnowballPorterFilterFactory" language="German" protected="protwords.txt" />
<!-- <filter class="solr.GermanStemFilterFactory" /> -->
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
<!-- <filter class="solr.PatternReplaceFilterFactory" pattern="([^a-z])" replacement="" replace="all" /> -->
</analyzer>
</fieldType>
</types>
<fields>
<!--
Valid attributes for fields:
name: mandatory - the name for the field
type: mandatory - the name of a previously defined type from the
<types> section
indexed: true if this field should be indexed (searchable or sortable)
stored: true if this field should be retrievable
multiValued: true if this field may contain multiple values per document
omitNorms: (expert) set to true to omit the norms associated with
this field (this disables length normalization and index-time
boosting for the field, and saves some memory). Only full-text
fields or fields that need an index-time boost need norms.
omitNorms defaults to true for primitive field types since Solr 1.2.
termVectors: [false] set to true to store the term vector for a given field.
When using MoreLikeThis, fields used for similarity should be
stored for best performance.
termPositions: Store position information with the term vector.
This will increase storage costs.
termOffsets: Store offset information with the term vector. This
will increase storage costs.
default: a value that should be used if no value is specified
when adding a document.
required: true if this field is mandatory
-->
<!-- The mandatory and special fields are defined here, all other fields are dynamic fields. -->
<!-- Unique identifier for the document in the index. -->
<field name="id" type="string" indexed="true" stored="true" required="true" />
<!-- Unique identifier for the document (or its top-level parent) in the TYPO3 database. -->
<field name="uid" type="int" indexed="true" stored="true" required="true" default="0" />
<!-- PageID for the document (or its top-level parent) in the TYPO3 database. -->
<field name="pid" type="int" indexed="true" stored="false" required="true" default="0" />
<!-- Image number where this document starts. -->
<field name="page" type="int" indexed="false" stored="true" required="true" default="0" />
<!-- Unique identifier for the parent document in the TYPO3 database. Only if this is a multi-volume work! -->
<field name="partof" type="int" indexed="true" stored="true" required="true" default="0" />
<!-- XML ID of this document in the METS file. This is only unique within the METS file! -->
<field name="sid" type="string" indexed="false" stored="true" required="true" default="" />
<!-- If it is a top-level document, leave this as default "true". -->
<field name="toplevel" type="boolean" indexed="true" stored="true" required="true" default="true" />
<!-- Type of document (eg. monograph, chapter, etc.) -->
<field name="type" type="string" indexed="true" stored="true" required="true" default="" />
<!-- Next two fields are mandatory for identifying documents. -->
<field name="title" type="standard" indexed="true" stored="true" default="" multiValued="false" />
<field name="volume" type="standard" indexed="true" stored="true" multiValued="false" />
<!-- URL of thumbnail image for the document. -->
<field name="thumbnail" type="string" indexed="false" stored="true" default="" multiValued="false" />
<!-- CatchAll field. See <copyField> below. -->
<field name="default" type="standard" indexed="true" stored="false" required="true" default="" multiValued="true" />
<field name="timestamp" type="date" indexed="true" stored="true" required="true" default="NOW" multiValued="false" />
<!-- Autocomplete field for search form. -->
<field name="autocomplete" type="autocomplete" indexed="true" stored="false" multiValued="true" />
<!-- Fulltext field for OCR results. -->
<field name="fulltext" type="fulltext" indexed="true" stored="true" multiValued="false" />
<!--
The following dynamic fields define all possible field variants.
The mapping between metadata fields and index fields is defined in TYPO3.
-->
<!-- tokenized, stored, indexed -->
<dynamicField name="*_tsi" type="standard" stored="true" indexed="true" multiValued="true" />
<!-- tokenized, stored, unindexed -->
<dynamicField name="*_tsu" type="standard" stored="true" indexed="false" multiValued="true" />
<!-- tokenized, unstored, indexed -->
<dynamicField name="*_tui" type="standard" stored="false" indexed="true" multiValued="true" />
<!-- tokenized, unstored, unindexed (this is ignored by Lucene) -->
<dynamicField name="*_tuu" type="standard" stored="false" indexed="false" multiValued="true" />
<!-- untokenized, stored, indexed -->
<dynamicField name="*_usi" type="string" stored="true" indexed="true" multiValued="true" />
<!-- untokenized, stored, unindexed -->
<dynamicField name="*_usu" type="string" stored="true" indexed="false" multiValued="true" />
<!-- untokenized, unstored, indexed -->
<dynamicField name="*_uui" type="string" stored="false" indexed="true" multiValued="true" />
<!-- untokenized, unstored, unindexed (this is ignored by Lucene) -->
<dynamicField name="*_uuu" type="string" stored="false" indexed="false" multiValued="true" />
<!-- "*_faceting" and "*_sorting" should always be used in addition to one of the other fields. -->
<dynamicField name="*_faceting" type="string" stored="false" indexed="true" multiValued="true" />
<dynamicField name="*_sorting" type="standard" stored="true" indexed="true" multiValued="false" />
</fields>
<uniqueKey>id</uniqueKey>
<defaultSearchField>default</defaultSearchField>
<solrQueryParser defaultOperator="AND" />
<copyField source="*_tsi" dest="default" />
<copyField source="*_tui" dest="default" />
<copyField source="*_usi" dest="default" />
<copyField source="*_uui" dest="default" />
</schema>

View File

@ -0,0 +1,502 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!--
For more details about configurations options that may appear in this
file, see http://wiki.apache.org/solr/SolrConfigXml.
Specifically, the Solr Config can support XInclude, which may make it easier to manage
the configuration. See https://issues.apache.org/jira/browse/SOLR-1167
-->
<config>
<!--
Set this to "false" if you want Solr to continue working even if there
is an error in your configuration.
You may want to set this to "false" in a production environment, but to
"true" for testing purposes.
-->
<abortOnConfigurationError>${solr.abortOnConfigurationError:false}</abortOnConfigurationError>
<!--
Controls what version of Lucene various components of Solr
adhere to. Generally, you want to use the latest version to
get all bug fixes and improvements. It is highly recommended
that you fully re-index after changing this setting as it can
affect both how text is indexed and queried.
-->
<luceneMatchVersion>LUCENE_35</luceneMatchVersion>
<!--
Here you should mention all directories containing plugin files, which
are used in solrconfig.xml or schema.xml. Everything contained in the
optional "./lib" directory under the Solr home path is always included,
so the following is just an example which does not make any sense.
If you are using Solr only in conjunction with DLF you can leave this
unchanged because you will not need any other than the standard plugins.
-->
<!-- <lib dir="./lib" /> -->
<!--
Specify the directory where Lucene should save its index files. Please
notice that using a NFS mount here is possible but not recommended!
-->
<dataDir>${solr.core.dataDir}</dataDir>
<indexDefaults>
<!--
Set this to "false" if you want Lucene to split the index in multiple
files. Updating will be slightly faster, but searching a bit slower.
-->
<useCompoundFile>true</useCompoundFile>
<!--
Specify the allowed number of index segments before segments are merged
together. Higher values will result in faster indexing and less system
load, but slower searches.
-->
<mergeFactor>15</mergeFactor>
<!--
Specify how many documents or memory should be buffered before the data
is written to a segment file. Whatever limit is reached first will result
in a flush.
-->
<maxBufferedDocs>500</maxBufferedDocs>
<ramBufferSizeMB>64</ramBufferSizeMB>
<!--
Specify how many tokens may be in one field. The latter should not be too low
because excess tokens will be discarded.
-->
<maxFieldLength>10000</maxFieldLength>
<!-- Specify the timeouts for writing to the index and commiting changes. -->
<writeLockTimeout>1000</writeLockTimeout>
<commitLockTimeout>10000</commitLockTimeout>
<!--
Specify how Lucene should merge index segments. The given values are
Lucene's standard since version 3.3, so just leave this unchanged as long
as you do not need backwards compatibility for some reasons.
-->
<mergePolicy class="org.apache.lucene.index.TieredMergePolicy" />
<mergeScheduler class="org.apache.lucene.index.ConcurrentMergeScheduler" />
<!--
Specify which file locking mechanism Lucene should use. The options are:
single = use no file locking at all (not recommended!)
native = use the system's standard locking method
simple = use a plain file for locking
-->
<lockType>native</lockType>
</indexDefaults>
<!-- Here you can override some default settings from above for a specific index. -->
<mainIndex>
<!--
If true, unlock any held write or commit locks on startup.
This defeats the locking mechanism that allows multiple
processes to safely access a lucene index, and should be
used with care.
This is not needed if lock type is 'none' or 'single'
-->
<unlockOnStartup>false</unlockOnStartup>
<!--
If true, IndexReaders will be reopened (often more efficient) instead
of closed and then opened.
-->
<reopenReaders>true</reopenReaders>
<!-- Here you can change the deletion policy. This should be left unchanged! -->
<deletionPolicy class="solr.SolrDeletionPolicy">
<str name="maxCommitsToKeep">1</str>
<str name="maxOptimizedCommitsToKeep">0</str>
<!-- <str name="maxCommitAge">30MINUTES</str> -->
<!-- <str name="maxCommitAge">1DAY</str> -->
</deletionPolicy>
<!--
To aid in advanced debugging, you may turn on IndexWriter debug logging.
Setting to true will set the file that the underlying Lucene IndexWriter
will write its debug infostream to.
-->
<infoStream file="INFOSTREAM.txt">false</infoStream>
</mainIndex>
<!--
Enables JMX if and only if an existing MBeanServer is found, use this
if you want to configure JMX through JVM parameters. Remove this to disable
exposing Solr configuration and statistics to JMX.
If you want to connect to a particular server, specify the agentId
e.g. <jmx agentId="myAgent" />
If you want to start a new MBeanServer, specify the serviceUrl
e.g <jmx serviceUrl="service:jmx:rmi:///jndi/rmi://localhost:9999/solr"/>
For more details see http://wiki.apache.org/solr/SolrJmx
-->
<jmx />
<updateHandler class="solr.DirectUpdateHandler2">
<!--
Perform a <commit/> automatically under certain conditions:
maxDocs - number of updates since last commit is greater than this
maxTime - oldest uncommited update (in ms) is this long ago
Instead of enabling autoCommit, consider using "commitWithin"
when adding documents. http://wiki.apache.org/solr/UpdateXmlMessages
-->
<!-- <autoCommit>
<maxDocs>10000</maxDocs>
<maxTime>1000</maxTime>
</autoCommit> -->
<!--
The RunExecutableListener executes an external command from a
hook such as postCommit or postOptimize.
exe - the name of the executable to run
dir - dir to use as the current working directory. default="."
wait - the calling thread waits until the executable returns. default="true"
args - the arguments to pass to the program. default=nothing
env - environment variables to set. default=nothing
-->
<!-- A postCommit event is fired after every commit or optimize command. -->
<!-- <listener event="postCommit" class="solr.RunExecutableListener">
<str name="exe">solr/bin/snapshooter</str>
<str name="dir">.</str>
<bool name="wait">true</bool>
<arr name="args"><str>arg1</str><str>arg2</str></arr>
<arr name="env"><str>MYVAR=val1</str></arr>
</listener> -->
<!-- A postOptimize event is fired only after every optimize command. -->
<!-- <listener event="postOptimize" class="solr.RunExecutableListener">
<str name="exe">solr/bin/snapshooter</str>
<str name="dir">.</str>
<bool name="wait">true</bool>
</listener> -->
</updateHandler>
<query>
<!--
Maximum number of clauses in a boolean query... in the past, this affected
range or prefix queries that expanded to big boolean queries - built in Solr
query parsers no longer create queries with this limitation.
An exception is thrown if exceeded.
-->
<maxBooleanClauses>1024</maxBooleanClauses>
<!--
Cache used by SolrIndexSearcher for filters (DocSets),
unordered sets of *all* documents that match a query.
When a new searcher is opened, its caches may be prepopulated
or "autowarmed" using data from caches in the old searcher.
autowarmCount is the number of items to prepopulate. For LRUCache,
the autowarmed items will be the most recently accessed items.
Parameters:
class - the SolrCache implementation LRUCache or FastLRUCache
size - the maximum number of entries in the cache
initialSize - the initial capacity (number of entries) of the cache.
autowarmCount - the number of entries to prepopulate from and old cache.
-->
<filterCache class="solr.FastLRUCache" size="512" initialSize="512" autowarmCount="0" />
<!--
queryResultCache caches results of searches - ordered lists of
document ids (DocList) based on a query, a sort, and the range
of documents requested.
-->
<queryResultCache class="solr.LRUCache" size="512" initialSize="512" autowarmCount="0" />
<!--
documentCache caches Lucene Document objects (the stored fields for each document).
Since Lucene internal document ids are transient, this cache will not be autowarmed.
-->
<documentCache class="solr.LRUCache" size="512" initialSize="512" autowarmCount="0" />
<!--
If true, stored fields that are not requested will be loaded lazily.
This can result in a significant speed improvement if the usual case is to
not load all stored fields, especially if the skipped fields are large compressed text fields.
-->
<enableLazyFieldLoading>true</enableLazyFieldLoading>
<!--
An optimization that attempts to use a filter to satisfy a search.
If the requested sort does not include score, then the filterCache
will be checked for a filter matching the query. If found, the filter
will be used as the source of document ids, and then the sort will be
applied to that.
-->
<useFilterForSortedQuery>true</useFilterForSortedQuery>
<!--
An optimization for use with the queryResultCache. When a search
is requested, a superset of the requested number of document ids
are collected. For example, if a search for a particular query
requests matching documents 10 through 19, and queryWindowSize is 50,
then documents 0 through 49 will be collected and cached. Any further
requests in that range can be satisfied via the cache.
-->
<queryResultWindowSize>20</queryResultWindowSize>
<!--
Maximum number of documents to cache for any entry in the queryResultCache.
-->
<queryResultMaxDocsCached>500</queryResultMaxDocsCached>
<!--
QuerySenderListener takes an array of NamedList and executes a
local query request for each NamedList in sequence.
-->
<listener event="newSearcher" class="solr.QuerySenderListener">
<arr name="queries">
</arr>
</listener>
<listener event="firstSearcher" class="solr.QuerySenderListener">
<arr name="queries">
<lst><str name="q">static firstSearcher warming query from solrconfig.xml</str></lst>
</arr>
</listener>
<useColdSearcher>true</useColdSearcher>
<maxWarmingSearchers>10</maxWarmingSearchers>
</query>
<!--
Let the dispatch filter handler /select?qt=XXX
handleSelect=true will use consistent error handling for /select and /update
handleSelect=false will use solr1.1 style error formatting
-->
<requestDispatcher handleSelect="true" >
<!-- Make sure your system has some authentication before enabling remote streaming! -->
<requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048000" />
<httpCaching never304="true">
<cacheControl>max-age=30, public</cacheControl>
</httpCaching>
</requestDispatcher>
<!--
Request Handlers
Incoming queries will be dispatched to the correct handler
based on the path or the qt (query type) param.
Names starting with a '/' are accessed with the a path equal to
the registered name. Names without a leading '/' are accessed
with: http://host/app/[core/]select?qt=name
If a /select request is processed with out a qt param
specified, the requestHandler that declares default="true" will
be used.
If a Request Handler is declared with startup="lazy", then it will
not be initialized until the first request that uses it.
see http://wiki.apache.org/solr/SolrRequestHandler
and http://wiki.apache.org/solr/SearchHandler
-->
<requestHandler name="search" class="solr.SearchHandler" default="true">
<!-- default values for query parameters -->
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
</lst>
</requestHandler>
<!--
XML Update Request Handler.
The canonical Request Handler for Modifying the Index through
commands specified using XML.
Note: Since solr1.1 requestHandlers requires a valid content
type header if posted in the body. For example, curl now
requires: -H 'Content-type:text/xml; charset=utf-8'
see http://wiki.apache.org/solr/UpdateXmlMessages
-->
<requestHandler name="/update" class="solr.XmlUpdateRequestHandler" />
<!-- Binary Update Request Handler -->
<!-- <requestHandler name="/update/javabin" class="solr.BinaryUpdateRequestHandler" startup="lazy" /> -->
<!-- CSV Update Request Handler -->
<!-- <requestHandler name="/update/csv" class="solr.CSVRequestHandler" startup="lazy" /> -->
<!-- JSON Update Request Handler -->
<!-- <requestHandler name="/update/json" class="solr.JsonUpdateRequestHandler" startup="lazy" /> -->
<!-- XSLT Update Request Handler transforms incoming XML with stylesheet identified by tr= -->
<!-- <requestHandler name="/update/xslt" class="solr.XsltUpdateRequestHandler" startup="lazy" /> -->
<!--
Field Analysis Request Handler
RequestHandler that provides much the same functionality as
analysis.jsp. Provides the ability to specify multiple field
types and field names in the same request and outputs
index-time and query-time analysis for each of them.
Request parameters are:
analysis.fieldname - field name whose analyzers are to be used
analysis.fieldtype - field type whose analyzers are to be used
analysis.fieldvalue - text for index-time analysis
q (or analysis.q) - text for query time analysis
analysis.showmatch (true|false) - When set to true and when
query analysis is performed, the produced tokens of the
field value analysis will be marked as "matched" for every
token that is produces by the query analysis
-->
<requestHandler name="/analysis/field" class="solr.FieldAnalysisRequestHandler" startup="lazy" />
<!--
Document Analysis Handler
An analysis handler that provides a breakdown of the analysis
process of provided documents. This handler expects a (single)
content stream with the following format:
<docs>
<doc>
<field name="id">1</field>
<field name="name">The Name</field>
<field name="text">The Text Value</field>
</doc>
<doc>...</doc>
<doc>...</doc>
...
</docs>
Note: Each document must contain a field which serves as the
unique key. This key is used in the returned response to associate
an analysis breakdown to the analyzed document.
Like the FieldAnalysisRequestHandler, this handler also supports
query analysis by sending either an "analysis.query" or "q"
request parameter that holds the query text to be analyzed. It
also supports the "analysis.showmatch" parameter which when set to
true, all field tokens that match the query tokens will be marked
as a "match".
see http://wiki.apache.org/solr/AnalysisRequestHandler
-->
<requestHandler name="/analysis/document" class="solr.DocumentAnalysisRequestHandler" startup="lazy" />
<!--
Admin Handlers
Admin Handlers - This will register all the standard admin
RequestHandlers.
-->
<requestHandler name="/admin/" class="solr.admin.AdminHandlers" />
<!-- Ping/Healthcheck Handler -->
<requestHandler name="/admin/ping" class="solr.PingRequestHandler">
<lst name="invariants">
<str name="qt">search</str>
<str name="q">solrpingquery</str>
</lst>
<lst name="defaults">
<str name="echoParams">all</str>
</lst>
</requestHandler>
<!-- Echo the request contents back to the client -->
<!-- <requestHandler name="/debug/dump" class="solr.DumpRequestHandler" >
<lst name="defaults">
<str name="echoParams">explicit</str>
<str name="echoHandler">true</str>
</lst>
</requestHandler> -->
<!-- Autocomplete Handler -->
<requestHandler name="/suggest" class="org.apache.solr.handler.component.SearchHandler">
<lst name="defaults">
<str name="spellcheck">true</str>
<str name="spellcheck.dictionary">suggest</str>
<str name="spellcheck.count">10</str>
<str name="spellcheck.onlyMorePopular">true</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
<!--
Search Components
Search components are registered to SolrCore and used by
instances of SearchHandler (which can access them by name)
By default, the following components are available:
<searchComponent name="query" class="solr.QueryComponent" />
<searchComponent name="facet" class="solr.FacetComponent" />
<searchComponent name="mlt" class="solr.MoreLikeThisComponent" />
<searchComponent name="highlight" class="solr.HighlightComponent" />
<searchComponent name="stats" class="solr.StatsComponent" />
<searchComponent name="debug" class="solr.DebugComponent" />
Default configuration in a requestHandler would look like:
<arr name="components">
<str>query</str>
<str>facet</str>
<str>mlt</str>
<str>highlight</str>
<str>stats</str>
<str>debug</str>
</arr>
If you register a searchComponent to one of the standard names,
that will be used instead of the default.
To insert components before or after the 'standard' components, use:
<arr name="first-components">
<str>myFirstComponentName</str>
</arr>
<arr name="last-components">
<str>myLastComponentName</str>
</arr>
NOTE: The component registered with the name "debug" will
always be executed after the "last-components"
-->
<!-- Autocomplete Component -->
<searchComponent name="suggest" class="solr.SpellCheckComponent">
<lst name="spellchecker">
<str name="name">suggest</str>
<str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
<str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
<str name="buildOnCommit">true</str>
<str name="field">autocomplete</str>
<str name="queryAnalyzerFieldType">autocomplete</str>
</lst>
</searchComponent>
<!--
Update Processors
Chains of Update Processor Factories for dealing with Update
Requests can be declared, and then used by name in Update
Request Processors
see http://wiki.apache.org/solr/UpdateRequestProcessor
-->
<!--
Query Parsers
Multiple QParserPlugins can be registered by name, and then
used in either the "defType" param for the QueryComponent (used
by SearchHandler) or in LocalParams
see http://wiki.apache.org/solr/SolrQuerySyntax
-->
<!-- Legacy config for the admin interface -->
<admin>
<defaultQuery>*:*</defaultQuery>
</admin>
</config>

View File

@ -0,0 +1,282 @@
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#-----------------------------------------------------------------------
#Standard english stop words
a
an
and
are
as
at
be
but
by
for
if
in
into
is
it
no
not
of
on
or
s
such
t
that
the
their
then
there
these
they
this
to
was
will
with
#Standard german stop words
aber
alle
allem
allen
aller
alles
als
also
am
an
ander
andere
anderem
anderen
anderer
anderes
anderm
andern
anderr
anders
auch
auf
aus
bei
bin
bis
bist
da
damit
dann
der
den
des
dem
die
das
daß
derselbe
derselben
denselben
desselben
demselben
dieselbe
dieselben
dasselbe
dazu
dein
deine
deinem
deinen
deiner
deines
denn
derer
dessen
dich
dir
du
dies
diese
diesem
diesen
dieser
dieses
doch
dort
durch
ein
eine
einem
einen
einer
eines
einig
einige
einigem
einigen
einiger
einiges
einmal
er
ihn
ihm
es
etwas
euer
eure
eurem
euren
eurer
eures
für
gegen
gewesen
hab
habe
haben
hat
hatte
hatten
hier
hin
hinter
ich
mich
mir
ihr
ihre
ihrem
ihren
ihrer
ihres
euch
im
in
indem
ins
ist
jede
jedem
jeden
jeder
jedes
jene
jenem
jenen
jener
jenes
jetzt
kann
kein
keine
keinem
keinen
keiner
keines
können
könnte
machen
man
manche
manchem
manchen
mancher
manches
mein
meine
meinem
meinen
meiner
meines
mit
muss
musste
nach
nicht
nichts
noch
nun
nur
ob
oder
ohne
sehr
sein
seine
seinem
seinen
seiner
seines
selbst
sich
sie
ihnen
sind
so
solche
solchem
solchen
solcher
solches
soll
sollte
sondern
sonst
über
um
und
uns
unser
unses
unter
viel
vom
von
vor
während
war
waren
warst
was
weg
weil
weiter
welche
welchem
welchen
welcher
welches
wenn
werde
werden
wie
wieder
will
wir
wird
wirst
wo
wollen
wollte
würde
würden
zu
zum
zur
zwar
zwischen

View File

@ -0,0 +1,18 @@
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#-----------------------------------------------------------------------
# synonym mappings can be used for spelling correction too
# Syntax:
# "synonym1" => "synonym2"

View File

@ -0,0 +1,366 @@
<!-- Add the following lines before the closing "</web-app>" tag. -->
<web-app>
<!-- ... -->
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrAdmin (Cores)</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrAdmin (Core0)</web-resource-name>
<url-pattern>/dlfCore0/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrUpdate (Core0)</web-resource-name>
<url-pattern>/dlfCore0/update/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
<role-name>dlfSolrUpdate</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrAdmin (Core1)</web-resource-name>
<url-pattern>/dlfCore1/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrUpdate (Core1)</web-resource-name>
<url-pattern>/dlfCore1/update/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
<role-name>dlfSolrUpdate</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrAdmin (Core2)</web-resource-name>
<url-pattern>/dlfCore2/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrUpdate (Core2)</web-resource-name>
<url-pattern>/dlfCore2/update/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
<role-name>dlfSolrUpdate</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrAdmin (Core3)</web-resource-name>
<url-pattern>/dlfCore3/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrUpdate (Core3)</web-resource-name>
<url-pattern>/dlfCore3/update/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
<role-name>dlfSolrUpdate</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrAdmin (Core4)</web-resource-name>
<url-pattern>/dlfCore4/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrUpdate (Core4)</web-resource-name>
<url-pattern>/dlfCore4/update/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
<role-name>dlfSolrUpdate</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrAdmin (Core5)</web-resource-name>
<url-pattern>/dlfCore5/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrUpdate (Core5)</web-resource-name>
<url-pattern>/dlfCore5/update/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
<role-name>dlfSolrUpdate</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrAdmin (Core6)</web-resource-name>
<url-pattern>/dlfCore6/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrUpdate (Core6)</web-resource-name>
<url-pattern>/dlfCore6/update/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
<role-name>dlfSolrUpdate</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrAdmin (Core7)</web-resource-name>
<url-pattern>/dlfCore7/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrUpdate (Core7)</web-resource-name>
<url-pattern>/dlfCore7/update/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
<role-name>dlfSolrUpdate</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrAdmin (Core8)</web-resource-name>
<url-pattern>/dlfCore8/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrUpdate (Core8)</web-resource-name>
<url-pattern>/dlfCore8/update/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
<role-name>dlfSolrUpdate</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrAdmin (Core9)</web-resource-name>
<url-pattern>/dlfCore9/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrUpdate (Core9)</web-resource-name>
<url-pattern>/dlfCore9/update/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
<role-name>dlfSolrUpdate</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrAdmin (Core10)</web-resource-name>
<url-pattern>/dlfCore10/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrUpdate (Core10)</web-resource-name>
<url-pattern>/dlfCore10/update/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
<role-name>dlfSolrUpdate</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrAdmin (Core11)</web-resource-name>
<url-pattern>/dlfCore11/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrUpdate (Core11)</web-resource-name>
<url-pattern>/dlfCore11/update/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
<role-name>dlfSolrUpdate</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrAdmin (Core12)</web-resource-name>
<url-pattern>/dlfCore12/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrUpdate (Core12)</web-resource-name>
<url-pattern>/dlfCore12/update/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
<role-name>dlfSolrUpdate</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrAdmin (Core13)</web-resource-name>
<url-pattern>/dlfCore13/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrUpdate (Core13)</web-resource-name>
<url-pattern>/dlfCore13/update/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
<role-name>dlfSolrUpdate</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrAdmin (Core14)</web-resource-name>
<url-pattern>/dlfCore14/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrUpdate (Core14)</web-resource-name>
<url-pattern>/dlfCore14/update/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
<role-name>dlfSolrUpdate</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrAdmin (Core15)</web-resource-name>
<url-pattern>/dlfCore15/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>SolrUpdate (Core15)</web-resource-name>
<url-pattern>/dlfCore15/update/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>dlfSolrAdmin</role-name>
<role-name>dlfSolrUpdate</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Goobi.Presentation Solr Backend</realm-name>
</login-config>
<security-role>
<description>Goobi.Presentation Solr Administrator</description>
<role-name>dlfSolrAdmin</role-name>
</security-role>
<security-role>
<description>Goobi.Presentation Solr Updater</description>
<role-name>dlfSolrUpdate</role-name>
</security-role>
</web-app>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="true">
<cores adminPath="/admin/cores" defaultCoreName="dlfCore0" shareSchema="true">
<core name="dlfCore0" instanceDir="." dataDir="dlfCore0" />
<core name="dlfCore0_txtcoords" instanceDir="." dataDir="dlfCore0_txtcoords" schema="schema_txtcoords.xml" />
</cores>
</solr>