[Solr] Use fixed, recommended schema but add EdgeNGramFilterFactory
This commit is contained in:
@@ -26,395 +26,51 @@ 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":"dovecot_text",
|
||||
"class":"solr.TextField",
|
||||
"autoGeneratePhraseQueries":true,
|
||||
"positionIncrementGap":100,
|
||||
"indexAnalyser":{
|
||||
"charFilter":{
|
||||
"class":"solr.MappingCharFilterFactory",
|
||||
"mapping":"mapping-FoldToASCII.txt"
|
||||
},
|
||||
"charFilter":{
|
||||
"class":"solr.MappingCharFilterFactory",
|
||||
"mapping":"mapping-ISOLatin1Accent.txt"
|
||||
},
|
||||
"charFilter":{
|
||||
"class":"solr.HTMLStripCharFilterFactory"
|
||||
},
|
||||
"tokenizer":{
|
||||
"class":"solr.StandardTokenizerFactory"
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.StopFilterFactory",
|
||||
"words":"stopwords.txt",
|
||||
"ignoreCase":true
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.WordDelimiterGraphFilterFactory",
|
||||
"generateWordParts":1,
|
||||
"generateNumberParts":1,
|
||||
"splitOnCaseChange":1,
|
||||
"splitOnNumerics":1,
|
||||
"catenateWords":1,
|
||||
"catenateNumbers":1,
|
||||
"catenateAll":1
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.FlattenGraphFilterFactory"
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.LowerCaseFilterFactory"
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.KeywordMarkerFilterFactory",
|
||||
"protected":"protwords.txt"
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.PorterStemFilterFactory"
|
||||
}
|
||||
},
|
||||
"queryAnalyzer":{
|
||||
"tokenizer":{
|
||||
"class":"solr.StandardTokenizerFactory"
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.SynonymGraphFilterFactory",
|
||||
"expand":true,
|
||||
"ignoreCase":true,
|
||||
"synonyms":synonyms.txt
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.FlattenGraphFilterFactory"
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.StopFilterFactory",
|
||||
"words":"stopwords.txt",
|
||||
"ignoreCase":true
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.WordDelimiterGraphFilterFactory",
|
||||
"generateWordParts":1,
|
||||
"generateNumberParts":1,
|
||||
"splitOnCaseChange":1,
|
||||
"splitOnNumerics":1,
|
||||
"catenateWords":1,
|
||||
"catenateNumbers":1,
|
||||
"catenateAll":1
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.LowerCaseFilterFactory"
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.KeywordMarkerFilterFactory",
|
||||
"protected":"protwords.txt"
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.PorterStemFilterFactory"
|
||||
}
|
||||
}
|
||||
},
|
||||
"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":"dovecot_text",
|
||||
"indexed":true,
|
||||
"stored":false
|
||||
|
||||
},
|
||||
"add-field":{
|
||||
"name":"body",
|
||||
"type":"dovecot_text",
|
||||
"indexed":true,
|
||||
"stored":false
|
||||
},
|
||||
"add-field":{
|
||||
"name":"from",
|
||||
"type":"dovecot_text",
|
||||
"indexed":true,
|
||||
"stored":false
|
||||
},
|
||||
"add-field":{
|
||||
"name":"to",
|
||||
"type":"dovecot_text",
|
||||
"indexed":true,
|
||||
"stored":false
|
||||
},
|
||||
"add-field":{
|
||||
"name":"cc",
|
||||
"type":"dovecot_text",
|
||||
"indexed":true,
|
||||
"stored":false
|
||||
},
|
||||
"add-field":{
|
||||
"name":"bcc",
|
||||
"type":"dovecot_text",
|
||||
"indexed":true,
|
||||
"stored":false
|
||||
},
|
||||
"add-field":{
|
||||
"name":"subject",
|
||||
"type":"dovecot_text",
|
||||
"indexed":true,
|
||||
"stored":false
|
||||
}
|
||||
}'
|
||||
|
||||
curl -XPOST http://localhost:8983/solr/dovecot/schema -H 'Content-type:application/json' -d '{
|
||||
"replace-field-type":{
|
||||
"name":"long",
|
||||
"class":"solr.TrieLongField"
|
||||
},
|
||||
"replace-field-type":{
|
||||
"name":"dovecot_text",
|
||||
"class":"solr.TextField",
|
||||
"autoGeneratePhraseQueries":true,
|
||||
"positionIncrementGap":100,
|
||||
"indexAnalyser":{
|
||||
"charFilter":{
|
||||
"class":"solr.MappingCharFilterFactory",
|
||||
"mapping":"mapping-FoldToASCII.txt"
|
||||
},
|
||||
"charFilter":{
|
||||
"class":"solr.MappingCharFilterFactory",
|
||||
"mapping":"mapping-ISOLatin1Accent.txt"
|
||||
},
|
||||
"charFilter":{
|
||||
"class":"solr.HTMLStripCharFilterFactory"
|
||||
},
|
||||
"tokenizer":{
|
||||
"class":"solr.StandardTokenizerFactory"
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.StopFilterFactory",
|
||||
"words":"stopwords.txt",
|
||||
"ignoreCase":true
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.WordDelimiterGraphFilterFactory",
|
||||
"generateWordParts":1,
|
||||
"generateNumberParts":1,
|
||||
"splitOnCaseChange":1,
|
||||
"splitOnNumerics":1,
|
||||
"catenateWords":1,
|
||||
"catenateNumbers":1,
|
||||
"catenateAll":1
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.FlattenGraphFilterFactory"
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.LowerCaseFilterFactory"
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.KeywordMarkerFilterFactory",
|
||||
"protected":"protwords.txt"
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.PorterStemFilterFactory"
|
||||
}
|
||||
},
|
||||
"queryAnalyzer":{
|
||||
"tokenizer":{
|
||||
"class":"solr.StandardTokenizerFactory"
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.SynonymGraphFilterFactory",
|
||||
"expand":true,
|
||||
"ignoreCase":true,
|
||||
"synonyms":synonyms.txt
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.FlattenGraphFilterFactory"
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.StopFilterFactory",
|
||||
"words":"stopwords.txt",
|
||||
"ignoreCase":true
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.WordDelimiterGraphFilterFactory",
|
||||
"generateWordParts":1,
|
||||
"generateNumberParts":1,
|
||||
"splitOnCaseChange":1,
|
||||
"splitOnNumerics":1,
|
||||
"catenateWords":1,
|
||||
"catenateNumbers":1,
|
||||
"catenateAll":1
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.LowerCaseFilterFactory"
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.KeywordMarkerFilterFactory",
|
||||
"protected":"protwords.txt"
|
||||
},
|
||||
"filter":{
|
||||
"class":"solr.PorterStemFilterFactory"
|
||||
}
|
||||
}
|
||||
},
|
||||
"replace-field":{
|
||||
"name":"uid",
|
||||
"type":"long",
|
||||
"indexed":true,
|
||||
"stored":true,
|
||||
"required":true
|
||||
},
|
||||
"replace-field":{
|
||||
"name":"box",
|
||||
"type":"string",
|
||||
"indexed":true,
|
||||
"stored":true,
|
||||
"required":true
|
||||
},
|
||||
"replace-field":{
|
||||
"name":"user",
|
||||
"type":"string",
|
||||
"indexed":true,
|
||||
"stored":true,
|
||||
"required":true
|
||||
},
|
||||
"replace-field":{
|
||||
"name":"hdr",
|
||||
"type":"dovecot_text",
|
||||
"indexed":true,
|
||||
"stored":false
|
||||
|
||||
},
|
||||
"replace-field":{
|
||||
"name":"body",
|
||||
"type":"dovecot_text",
|
||||
"indexed":true,
|
||||
"stored":false
|
||||
},
|
||||
"replace-field":{
|
||||
"name":"from",
|
||||
"type":"dovecot_text",
|
||||
"indexed":true,
|
||||
"stored":false
|
||||
},
|
||||
"replace-field":{
|
||||
"name":"to",
|
||||
"type":"dovecot_text",
|
||||
"indexed":true,
|
||||
"stored":false
|
||||
},
|
||||
"replace-field":{
|
||||
"name":"cc",
|
||||
"type":"dovecot_text",
|
||||
"indexed":true,
|
||||
"stored":false
|
||||
},
|
||||
"replace-field":{
|
||||
"name":"bcc",
|
||||
"type":"dovecot_text",
|
||||
"indexed":true,
|
||||
"stored":false
|
||||
},
|
||||
"replace-field":{
|
||||
"name":"subject",
|
||||
"type":"dovecot_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
|
||||
[[ -d /opt/solr/server/solr/dovecot-fts/data ]] && chown -R solr:solr /opt/solr/server/solr/dovecot-fts/data
|
||||
if [[ "${1}" != "--bootstrap" ]]; then
|
||||
sed -i '/SOLR_HEAP=/c\SOLR_HEAP="'${SOLR_HEAP:-1024}'m"' /opt/solr/bin/solr.in.sh
|
||||
else
|
||||
sed -i '/SOLR_HEAP=/c\SOLR_HEAP="256m"' /opt/solr/bin/solr.in.sh
|
||||
fi
|
||||
|
||||
# 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.
|
||||
# todo: check if a core exists without sentinel file
|
||||
|
||||
SENTINEL=/opt/docker-solr/core_created
|
||||
SENTINEL=/opt/docker-solr/fts_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"
|
||||
echo "Starting local Solr instance to setup configuration"
|
||||
su-exec solr start-local-solr
|
||||
|
||||
echo "Creating core \"dovecot-fts\""
|
||||
su-exec solr /opt/solr/bin/solr create -c "dovecot-fts"
|
||||
|
||||
# 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
|
||||
sleep 3
|
||||
done
|
||||
echo "Created core \"dovecot\""
|
||||
|
||||
echo "Created core \"dovecot-fts\""
|
||||
touch ${SENTINEL}
|
||||
|
||||
echo "Stopping local Solr"
|
||||
su-exec solr stop-local-solr
|
||||
fi
|
||||
|
||||
echo "Starting configuration"
|
||||
while ! wget -O - 'http://localhost:8983/solr/admin/cores?action=STATUS' | grep -q instanceDir; do
|
||||
echo "Waiting for Solr..."
|
||||
sleep 5
|
||||
done
|
||||
solr_config
|
||||
echo "Stopping local Solr"
|
||||
su-exec solr stop-local-solr
|
||||
rm -f /opt/solr/server/solr/dovecot-fts/conf/schema.xml
|
||||
rm -f /opt/solr/server/solr/dovecot-fts/conf/managed-schema
|
||||
rm -f /opt/solr/server/solr/dovecot-fts/conf/solrconfig.xml
|
||||
|
||||
if [[ "${1}" == "--bootstrap" ]]; then
|
||||
exit 0
|
||||
else
|
||||
exec su-exec solr solr-foreground
|
||||
fi
|
||||
cp /etc/solr/solr-config-7.7.0.xml /opt/solr/server/solr/dovecot-fts/conf/solrconfig.xml
|
||||
cp /etc/solr/solr-schema-7.7.0.xml /opt/solr/server/solr/dovecot-fts/conf/schema.xml
|
||||
|
||||
chown -R solr:solr /opt/solr/server/solr/dovecot-fts/conf/{schema.xml,solrconfig.xml}
|
||||
|
||||
exec su-exec solr solr-foreground
|
||||
|
Reference in New Issue
Block a user