123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- #!/bin/bash
- if [[ "${SKIP_SOLR}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
- echo "SKIP_SOLR=y, skipping Solr..."
- sleep 365d
- exit 0
- fi
- set -e
- # allow easier debugging with `docker run -e VERBOSE=yes`
- if [[ "$VERBOSE" = "yes" ]]; then
- set -x
- fi
- # run the optional initdb
- . /opt/docker-solr/scripts/run-initdb
- function solr_config() {
- curl -XPOST http://localhost:8983/solr/dovecot/schema -H 'Content-type:application/json' -d '{
- "add-field-type":{
- "name":"long",
- "class":"solr.TrieLongField"
- },
- "add-field-type":{
- "name":"text",
- "class":"solr.TextField",
- "positionIncrementGap":100,
- "indexAnalyser":{
- "tokenizer":{
- "class":"solr.StandardTokenizerFactory"
- },
- "filter":{
- "class":"solr.WordDelimiterFilterFactory",
- "generateWordParts":1,
- "generateNumberParts":1,
- "catenateWorks":1,
- "catenateNumbers":1,
- "catenateAll":0
- },
- "filter":{
- "class":"solr.LowerCaseFilterFactory"
- },
- "filter":{
- "class":"solr.KeywordMarkerFilterFactory",
- "protected":"protwords.txt"
- }
- },
- "queryAnalyzer":{
- "tokenizer":{
- "class":"solr.StandardTokenizerFactory"
- },
- "filter":{
- "synonyms":"synonyms.txt",
- "ignoreCase":true,
- "expand":true
- },
- "filter":{
- "class":"solr.LowerCaseFilterFactory"
- },
- "filter":{
- "class":"solr.WordDelimiterFilterFactory",
- "generateWordParts":1,
- "generateNumberParts":1,
- "catenateWords":0,
- "catenateNumbers":0,
- "catenateAll":0,
- "splitOnCaseChange":1
- }
- }
- },
- "add-field":{
- "name":"uid",
- "type":"long",
- "indexed":true,
- "stored":true,
- "required":true
- },
- "add-field":{
- "name":"box",
- "type":"string",
- "indexed":true,
- "stored":true,
- "required":true
- },
- "add-field":{
- "name":"user",
- "type":"string",
- "indexed":true,
- "stored":true,
- "required":true
- },
- "add-field":{
- "name":"hdr",
- "type":"text",
- "indexed":true,
- "stored":false
- },
- "add-field":{
- "name":"body",
- "type":"text",
- "indexed":true,
- "stored":false
- },
- "add-field":{
- "name":"from",
- "type":"text",
- "indexed":true,
- "stored":false
- },
- "add-field":{
- "name":"to",
- "type":"text",
- "indexed":true,
- "stored":false
- },
- "add-field":{
- "name":"cc",
- "type":"text",
- "indexed":true,
- "stored":false
- },
- "add-field":{
- "name":"bcc",
- "type":"text",
- "indexed":true,
- "stored":false
- },
- "add-field":{
- "name":"subject",
- "type":"text",
- "indexed":true,
- "stored":false
- }
- }'
- curl -XPOST http://localhost:8983/solr/dovecot/config -H 'Content-type:application/json' -d '{
- "update-requesthandler":{
- "name":"/select",
- "class":"solr.SearchHandler",
- "defaults":{
- "wt":"xml"
- }
- }
- }'
- curl -XPOST http://localhost:8983/solr/dovecot/config/updateHandler -d '{
- "set-property": {
- "updateHandler.autoSoftCommit.maxDocs":500,
- "updateHandler.autoSoftCommit.maxTime":120000,
- "updateHandler.autoCommit.maxDocs":200,
- "updateHandler.autoCommit.maxTime":1800000,
- "updateHandler.autoCommit.openSearcher":false
- }
- }'
- }
- # fixing volume permission
- [[ -d /opt/solr/server/solr/dovecot/data ]] && chown -R solr:solr /opt/solr/server/solr/dovecot/data
- sed -i 's/#SOLR_HEAP="512m"/SOLR_HEAP="'${SOLR_HEAP:-1024}'m"/g' /opt/solr/bin/solr.in.sh
- # start a Solr so we can use the Schema API, but only on localhost,
- # so that clients don't see Solr until we have configured it.
- echo "Starting local Solr instance to setup configuration"
- su-exec solr start-local-solr
- # keep a sentinel file so we don't try to create the core a second time
- # for example when we restart a container.
- SENTINEL=/opt/docker-solr/core_created
- if [[ -f ${SENTINEL} ]]; then
- echo "skipping core creation"
- else
- echo "Creating core \"dovecot\""
- su-exec solr /opt/solr/bin/solr create -c "dovecot"
- # See https://github.com/docker-solr/docker-solr/issues/27
- echo "Checking core"
- while ! wget -O - 'http://localhost:8983/solr/admin/cores?action=STATUS' | grep -q instanceDir; do
- echo "Could not find any cores, waiting..."
- sleep 5
- done
- echo "Created core \"dovecot\""
- touch ${SENTINEL}
- fi
- echo "Starting configuration"
- solr_config
- echo "Stopping local Solr"
- su-exec solr stop-local-solr
- if [[ "${1}" == "--bootstrap" ]]; then
- exit 0
- else
- exec su-exec solr solr-foreground
- fi
|