Created
November 1, 2016 16:32
-
-
Save codesnik/be412c6ab3469d74971d3e38496012c9 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: example-DIH-db | |
version: 1.6 | |
uniqueKey: id | |
fieldTypes: | |
- name: alphaOnlySort | |
class: solr.TextField | |
omitNorms: true | |
sortMissingLast: true | |
analyzer: | |
tokenizer: | |
class: solr.KeywordTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.TrimFilterFactory | |
- class: solr.PatternReplaceFilterFactory | |
pattern: "([^a-z])" | |
replace: all | |
replacement: '' | |
- name: ancestor_path | |
class: solr.TextField | |
indexAnalyzer: | |
tokenizer: | |
class: solr.KeywordTokenizerFactory | |
queryAnalyzer: | |
tokenizer: | |
class: solr.PathHierarchyTokenizerFactory | |
delimiter: "/" | |
- name: binary | |
class: solr.BinaryField | |
- name: boolean | |
class: solr.BoolField | |
sortMissingLast: true | |
- name: currency | |
class: solr.CurrencyField | |
currencyConfig: currency.xml | |
defaultCurrency: USD | |
precisionStep: '8' | |
- name: date | |
class: solr.TrieDateField | |
positionIncrementGap: '0' | |
precisionStep: '0' | |
- name: descendent_path | |
class: solr.TextField | |
indexAnalyzer: | |
tokenizer: | |
class: solr.PathHierarchyTokenizerFactory | |
delimiter: "/" | |
queryAnalyzer: | |
tokenizer: | |
class: solr.KeywordTokenizerFactory | |
- name: double | |
class: solr.TrieDoubleField | |
positionIncrementGap: '0' | |
precisionStep: '0' | |
- name: float | |
class: solr.TrieFloatField | |
positionIncrementGap: '0' | |
precisionStep: '0' | |
- name: ignored | |
class: solr.StrField | |
indexed: false | |
stored: false | |
multiValued: true | |
- name: int | |
class: solr.TrieIntField | |
positionIncrementGap: '0' | |
precisionStep: '0' | |
- name: location | |
class: solr.LatLonType | |
subFieldSuffix: _coordinate | |
- name: location_rpt | |
class: solr.SpatialRecursivePrefixTreeFieldType | |
geo: 'true' | |
maxDistErr: '0.001' | |
distErrPct: '0.025' | |
distanceUnits: kilometers | |
- name: long | |
class: solr.TrieLongField | |
positionIncrementGap: '0' | |
precisionStep: '0' | |
- name: lowercase | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.KeywordTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- name: payloads | |
class: solr.TextField | |
indexed: true | |
stored: false | |
analyzer: | |
tokenizer: | |
class: solr.WhitespaceTokenizerFactory | |
filters: | |
- class: solr.DelimitedPayloadTokenFilterFactory | |
encoder: float | |
- name: phonetic | |
class: solr.TextField | |
indexed: true | |
stored: false | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.DoubleMetaphoneFilterFactory | |
inject: 'false' | |
- name: point | |
class: solr.PointType | |
subFieldSuffix: _d | |
dimension: '2' | |
- name: random | |
class: solr.RandomSortField | |
indexed: true | |
- name: string | |
class: solr.StrField | |
sortMissingLast: true | |
- name: tdate | |
class: solr.TrieDateField | |
positionIncrementGap: '0' | |
precisionStep: '6' | |
- name: tdouble | |
class: solr.TrieDoubleField | |
positionIncrementGap: '0' | |
precisionStep: '8' | |
- name: text_ar | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_ar.txt | |
ignoreCase: 'true' | |
- class: solr.ArabicNormalizationFilterFactory | |
- class: solr.ArabicStemFilterFactory | |
- name: text_bg | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_bg.txt | |
ignoreCase: 'true' | |
- class: solr.BulgarianStemFilterFactory | |
- name: text_ca | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.ElisionFilterFactory | |
articles: lang/contractions_ca.txt | |
ignoreCase: 'true' | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_ca.txt | |
ignoreCase: 'true' | |
- class: solr.SnowballPorterFilterFactory | |
language: Catalan | |
- name: text_cjk | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.CJKWidthFilterFactory | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.CJKBigramFilterFactory | |
- name: text_ckb | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.SoraniNormalizationFilterFactory | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_ckb.txt | |
ignoreCase: 'true' | |
- class: solr.SoraniStemFilterFactory | |
- name: text_cz | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_cz.txt | |
ignoreCase: 'true' | |
- class: solr.CzechStemFilterFactory | |
- name: text_da | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
format: snowball | |
words: lang/stopwords_da.txt | |
ignoreCase: 'true' | |
- class: solr.SnowballPorterFilterFactory | |
language: Danish | |
- name: text_de | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
format: snowball | |
words: lang/stopwords_de.txt | |
ignoreCase: 'true' | |
- class: solr.GermanNormalizationFilterFactory | |
- class: solr.GermanLightStemFilterFactory | |
- name: text_el | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.GreekLowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_el.txt | |
ignoreCase: 'false' | |
- class: solr.GreekStemFilterFactory | |
- name: text_en | |
class: solr.TextField | |
positionIncrementGap: '100' | |
indexAnalyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_en.txt | |
ignoreCase: 'true' | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.EnglishPossessiveFilterFactory | |
- class: solr.KeywordMarkerFilterFactory | |
protected: protwords.txt | |
- class: solr.PorterStemFilterFactory | |
queryAnalyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.SynonymFilterFactory | |
expand: 'true' | |
ignoreCase: 'true' | |
synonyms: synonyms.txt | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_en.txt | |
ignoreCase: 'true' | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.EnglishPossessiveFilterFactory | |
- class: solr.KeywordMarkerFilterFactory | |
protected: protwords.txt | |
- class: solr.PorterStemFilterFactory | |
- name: text_en_splitting | |
class: solr.TextField | |
autoGeneratePhraseQueries: 'true' | |
positionIncrementGap: '100' | |
indexAnalyzer: | |
tokenizer: | |
class: solr.WhitespaceTokenizerFactory | |
filters: | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_en.txt | |
ignoreCase: 'true' | |
- class: solr.WordDelimiterFilterFactory | |
catenateNumbers: '1' | |
generateNumberParts: '1' | |
splitOnCaseChange: '1' | |
generateWordParts: '1' | |
catenateAll: '0' | |
catenateWords: '1' | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.KeywordMarkerFilterFactory | |
protected: protwords.txt | |
- class: solr.PorterStemFilterFactory | |
queryAnalyzer: | |
tokenizer: | |
class: solr.WhitespaceTokenizerFactory | |
filters: | |
- class: solr.SynonymFilterFactory | |
expand: 'true' | |
ignoreCase: 'true' | |
synonyms: synonyms.txt | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_en.txt | |
ignoreCase: 'true' | |
- class: solr.WordDelimiterFilterFactory | |
catenateNumbers: '0' | |
generateNumberParts: '1' | |
splitOnCaseChange: '1' | |
generateWordParts: '1' | |
catenateAll: '0' | |
catenateWords: '0' | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.KeywordMarkerFilterFactory | |
protected: protwords.txt | |
- class: solr.PorterStemFilterFactory | |
- name: text_en_splitting_tight | |
class: solr.TextField | |
autoGeneratePhraseQueries: 'true' | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.WhitespaceTokenizerFactory | |
filters: | |
- class: solr.SynonymFilterFactory | |
expand: 'false' | |
ignoreCase: 'true' | |
synonyms: synonyms.txt | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_en.txt | |
ignoreCase: 'true' | |
- class: solr.WordDelimiterFilterFactory | |
catenateNumbers: '1' | |
generateNumberParts: '0' | |
generateWordParts: '0' | |
catenateAll: '0' | |
catenateWords: '1' | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.KeywordMarkerFilterFactory | |
protected: protwords.txt | |
- class: solr.EnglishMinimalStemFilterFactory | |
- class: solr.RemoveDuplicatesTokenFilterFactory | |
- name: text_es | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
format: snowball | |
words: lang/stopwords_es.txt | |
ignoreCase: 'true' | |
- class: solr.SpanishLightStemFilterFactory | |
- name: text_eu | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_eu.txt | |
ignoreCase: 'true' | |
- class: solr.SnowballPorterFilterFactory | |
language: Basque | |
- name: text_fa | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
charFilters: | |
- class: solr.PersianCharFilterFactory | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.ArabicNormalizationFilterFactory | |
- class: solr.PersianNormalizationFilterFactory | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_fa.txt | |
ignoreCase: 'true' | |
- name: text_fi | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
format: snowball | |
words: lang/stopwords_fi.txt | |
ignoreCase: 'true' | |
- class: solr.SnowballPorterFilterFactory | |
language: Finnish | |
- name: text_fr | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.ElisionFilterFactory | |
articles: lang/contractions_fr.txt | |
ignoreCase: 'true' | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
format: snowball | |
words: lang/stopwords_fr.txt | |
ignoreCase: 'true' | |
- class: solr.FrenchLightStemFilterFactory | |
- name: text_ga | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.ElisionFilterFactory | |
articles: lang/contractions_ga.txt | |
ignoreCase: 'true' | |
- class: solr.StopFilterFactory | |
words: lang/hyphenations_ga.txt | |
ignoreCase: 'true' | |
- class: solr.IrishLowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_ga.txt | |
ignoreCase: 'true' | |
- class: solr.SnowballPorterFilterFactory | |
language: Irish | |
- name: text_general | |
class: solr.TextField | |
positionIncrementGap: '100' | |
indexAnalyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.StopFilterFactory | |
words: stopwords.txt | |
ignoreCase: 'true' | |
- class: solr.LowerCaseFilterFactory | |
queryAnalyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.StopFilterFactory | |
words: stopwords.txt | |
ignoreCase: 'true' | |
- class: solr.SynonymFilterFactory | |
expand: 'true' | |
ignoreCase: 'true' | |
synonyms: synonyms.txt | |
- class: solr.LowerCaseFilterFactory | |
- name: text_general_rev | |
class: solr.TextField | |
positionIncrementGap: '100' | |
indexAnalyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.StopFilterFactory | |
words: stopwords.txt | |
ignoreCase: 'true' | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.ReversedWildcardFilterFactory | |
maxPosQuestion: '2' | |
maxFractionAsterisk: '0.33' | |
maxPosAsterisk: '3' | |
withOriginal: 'true' | |
queryAnalyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.SynonymFilterFactory | |
expand: 'true' | |
ignoreCase: 'true' | |
synonyms: synonyms.txt | |
- class: solr.StopFilterFactory | |
words: stopwords.txt | |
ignoreCase: 'true' | |
- class: solr.LowerCaseFilterFactory | |
- name: text_gl | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_gl.txt | |
ignoreCase: 'true' | |
- class: solr.GalicianStemFilterFactory | |
- name: text_hi | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.IndicNormalizationFilterFactory | |
- class: solr.HindiNormalizationFilterFactory | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_hi.txt | |
ignoreCase: 'true' | |
- class: solr.HindiStemFilterFactory | |
- name: text_hu | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
format: snowball | |
words: lang/stopwords_hu.txt | |
ignoreCase: 'true' | |
- class: solr.SnowballPorterFilterFactory | |
language: Hungarian | |
- name: text_hy | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_hy.txt | |
ignoreCase: 'true' | |
- class: solr.SnowballPorterFilterFactory | |
language: Armenian | |
- name: text_id | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_id.txt | |
ignoreCase: 'true' | |
- class: solr.IndonesianStemFilterFactory | |
stemDerivational: 'true' | |
- name: text_it | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.ElisionFilterFactory | |
articles: lang/contractions_it.txt | |
ignoreCase: 'true' | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
format: snowball | |
words: lang/stopwords_it.txt | |
ignoreCase: 'true' | |
- class: solr.ItalianLightStemFilterFactory | |
- name: text_ja | |
class: solr.TextField | |
autoGeneratePhraseQueries: 'false' | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.JapaneseTokenizerFactory | |
mode: search | |
filters: | |
- class: solr.JapaneseBaseFormFilterFactory | |
- class: solr.JapanesePartOfSpeechStopFilterFactory | |
tags: lang/stoptags_ja.txt | |
- class: solr.CJKWidthFilterFactory | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_ja.txt | |
ignoreCase: 'true' | |
- class: solr.JapaneseKatakanaStemFilterFactory | |
minimumLength: '4' | |
- class: solr.LowerCaseFilterFactory | |
- name: text_lv | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_lv.txt | |
ignoreCase: 'true' | |
- class: solr.LatvianStemFilterFactory | |
- name: text_nl | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
format: snowball | |
words: lang/stopwords_nl.txt | |
ignoreCase: 'true' | |
- class: solr.StemmerOverrideFilterFactory | |
dictionary: lang/stemdict_nl.txt | |
ignoreCase: 'false' | |
- class: solr.SnowballPorterFilterFactory | |
language: Dutch | |
- name: text_no | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
format: snowball | |
words: lang/stopwords_no.txt | |
ignoreCase: 'true' | |
- class: solr.SnowballPorterFilterFactory | |
language: Norwegian | |
- name: text_pt | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
format: snowball | |
words: lang/stopwords_pt.txt | |
ignoreCase: 'true' | |
- class: solr.PortugueseLightStemFilterFactory | |
- name: text_ro | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_ro.txt | |
ignoreCase: 'true' | |
- class: solr.SnowballPorterFilterFactory | |
language: Romanian | |
- name: text_ru | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
format: snowball | |
words: lang/stopwords_ru.txt | |
ignoreCase: 'true' | |
- class: solr.SnowballPorterFilterFactory | |
language: Russian | |
- name: text_sv | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
format: snowball | |
words: lang/stopwords_sv.txt | |
ignoreCase: 'true' | |
- class: solr.SnowballPorterFilterFactory | |
language: Swedish | |
- name: text_th | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.ThaiTokenizerFactory | |
filters: | |
- class: solr.LowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_th.txt | |
ignoreCase: 'true' | |
- name: text_tr | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.StandardTokenizerFactory | |
filters: | |
- class: solr.ApostropheFilterFactory | |
- class: solr.TurkishLowerCaseFilterFactory | |
- class: solr.StopFilterFactory | |
words: lang/stopwords_tr.txt | |
ignoreCase: 'false' | |
- class: solr.SnowballPorterFilterFactory | |
language: Turkish | |
- name: text_ws | |
class: solr.TextField | |
positionIncrementGap: '100' | |
analyzer: | |
tokenizer: | |
class: solr.WhitespaceTokenizerFactory | |
- name: tfloat | |
class: solr.TrieFloatField | |
positionIncrementGap: '0' | |
precisionStep: '8' | |
- name: tint | |
class: solr.TrieIntField | |
positionIncrementGap: '0' | |
precisionStep: '8' | |
- name: tlong | |
class: solr.TrieLongField | |
positionIncrementGap: '0' | |
precisionStep: '8' | |
fields: | |
- name: _root_ | |
type: string | |
indexed: true | |
stored: false | |
- name: _version_ | |
type: long | |
indexed: true | |
stored: true | |
- name: author | |
type: text_general | |
indexed: true | |
stored: true | |
- name: cat | |
type: string | |
multiValued: true | |
indexed: true | |
stored: true | |
- name: category | |
type: text_general | |
indexed: true | |
stored: true | |
- name: comments | |
type: text_general | |
indexed: true | |
stored: true | |
- name: content | |
type: text_general | |
multiValued: true | |
indexed: false | |
stored: true | |
- name: content_type | |
type: string | |
multiValued: true | |
indexed: true | |
stored: true | |
- name: description | |
type: text_general | |
indexed: true | |
stored: true | |
- name: features | |
type: text_general | |
multiValued: true | |
indexed: true | |
stored: true | |
- name: id | |
type: string | |
multiValued: false | |
indexed: true | |
required: true | |
stored: true | |
- name: inStock | |
type: boolean | |
indexed: true | |
stored: true | |
- name: includes | |
type: text_general | |
termPositions: true | |
termVectors: true | |
indexed: true | |
termOffsets: true | |
stored: true | |
- name: keywords | |
type: text_general | |
indexed: true | |
stored: true | |
- name: last_modified | |
type: date | |
indexed: true | |
stored: true | |
- name: links | |
type: string | |
multiValued: true | |
indexed: true | |
stored: true | |
- name: manu | |
type: text_general | |
omitNorms: true | |
indexed: true | |
stored: true | |
- name: manu_exact | |
type: string | |
indexed: true | |
stored: false | |
- name: name | |
type: text_general | |
indexed: true | |
stored: true | |
- name: payloads | |
type: payloads | |
indexed: true | |
stored: true | |
- name: popularity | |
type: int | |
indexed: true | |
stored: true | |
- name: price | |
type: float | |
indexed: true | |
stored: true | |
- name: resourcename | |
type: text_general | |
indexed: true | |
stored: true | |
- name: sku | |
type: text_en_splitting_tight | |
omitNorms: true | |
indexed: true | |
stored: true | |
- name: store | |
type: location | |
indexed: true | |
stored: true | |
- name: subject | |
type: text_general | |
indexed: true | |
stored: true | |
- name: text | |
type: text_general | |
multiValued: true | |
indexed: true | |
stored: false | |
- name: text_rev | |
type: text_general_rev | |
multiValued: true | |
indexed: true | |
stored: false | |
- name: title | |
type: text_general | |
multiValued: true | |
indexed: true | |
stored: true | |
- name: url | |
type: text_general | |
indexed: true | |
stored: true | |
- name: weight | |
type: float | |
indexed: true | |
stored: true | |
dynamicFields: | |
- name: "*_coordinate" | |
type: tdouble | |
indexed: true | |
stored: false | |
- name: ignored_* | |
type: ignored | |
multiValued: true | |
- name: random_* | |
type: random | |
- name: attr_* | |
type: text_general | |
multiValued: true | |
indexed: true | |
stored: true | |
- name: "*_txt" | |
type: text_general | |
multiValued: true | |
indexed: true | |
stored: true | |
- name: "*_dts" | |
type: date | |
multiValued: true | |
indexed: true | |
stored: true | |
- name: "*_tdt" | |
type: tdate | |
indexed: true | |
stored: true | |
- name: "*_is" | |
type: int | |
multiValued: true | |
indexed: true | |
stored: true | |
- name: "*_ss" | |
type: string | |
multiValued: true | |
indexed: true | |
stored: true | |
- name: "*_ls" | |
type: long | |
multiValued: true | |
indexed: true | |
stored: true | |
- name: "*_en" | |
type: text_en | |
multiValued: true | |
indexed: true | |
stored: true | |
- name: "*_bs" | |
type: boolean | |
multiValued: true | |
indexed: true | |
stored: true | |
- name: "*_fs" | |
type: float | |
multiValued: true | |
indexed: true | |
stored: true | |
- name: "*_ds" | |
type: double | |
multiValued: true | |
indexed: true | |
stored: true | |
- name: "*_dt" | |
type: date | |
indexed: true | |
stored: true | |
- name: "*_ti" | |
type: tint | |
indexed: true | |
stored: true | |
- name: "*_tl" | |
type: tlong | |
indexed: true | |
stored: true | |
- name: "*_tf" | |
type: tfloat | |
indexed: true | |
stored: true | |
- name: "*_td" | |
type: tdouble | |
indexed: true | |
stored: true | |
- name: "*_i" | |
type: int | |
indexed: true | |
stored: true | |
- name: "*_s" | |
type: string | |
indexed: true | |
stored: true | |
- name: "*_l" | |
type: long | |
indexed: true | |
stored: true | |
- name: "*_t" | |
type: text_general | |
indexed: true | |
stored: true | |
- name: "*_b" | |
type: boolean | |
indexed: true | |
stored: true | |
- name: "*_f" | |
type: float | |
indexed: true | |
stored: true | |
- name: "*_d" | |
type: double | |
indexed: true | |
stored: true | |
- name: "*_p" | |
type: location | |
indexed: true | |
stored: true | |
- name: "*_c" | |
type: currency | |
indexed: true | |
stored: true | |
copyFields: | |
- source: author | |
dest: text | |
- source: cat | |
dest: text | |
- source: content | |
dest: text | |
- source: content_type | |
dest: text | |
- source: description | |
dest: text | |
- source: features | |
dest: text | |
- source: includes | |
dest: text | |
- source: keywords | |
dest: text | |
- source: manu | |
dest: manu_exact | |
- source: manu | |
dest: text | |
- source: name | |
dest: text | |
- source: resourcename | |
dest: text | |
- source: title | |
dest: text | |
- source: url | |
dest: text | |
- source: price | |
dest: price_c | |
- source: author | |
dest: author_s |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'rsolr' | |
class RSolr::SchemaUpdater | |
class Error < StandardError; end | |
OPS_ORDER = %W[ | |
add-field-type | |
replace-field-type | |
delete-copy-field | |
add-field | |
replace-field | |
delete-field | |
add-dynamic-field | |
replace-dynamic-field | |
delete-dynamic-field | |
add-copy-field | |
delete-field-type | |
] | |
def initialize(rsolr:, current_schema: nil) | |
@rsolr = rsolr | |
@current_schema = current_schema | |
end | |
attr_accessor :rsolr | |
attr_writer :current_schema | |
def update!( wanted_schema:, dry_run: false ) | |
sectioned_ops = { | |
'field-type' => add_replace_delete(current_schema, wanted_schema, "fieldTypes"), | |
'field' => add_replace_delete(current_schema, wanted_schema, "fields"), | |
'dynamic-field' => add_replace_delete(current_schema, wanted_schema,"dynamicFields"), | |
'copy-field' => add_delete_copies(current_schema, wanted_schema) | |
} | |
commands = {} | |
sectioned_ops.each do |postfix, ops| | |
ops.each do |op, fields| | |
commands["#{op}-#{postfix}"] = fields unless fields == [] | |
end | |
end | |
# json hashes should be unordered, but Solr has it's own ideas | |
commands = reorder_hash(commands, OPS_ORDER) | |
result = rsolr.post('schema', headers: {'Content-Type' => 'application/json'}, | |
data: commands.to_json) unless dry_run | |
fail Error, result["errors"] if !dry_run && result["errors"] | |
commands unless commands == {} | |
end | |
def current_schema | |
@current_schema ||= rsolr.get('schema')["schema"] | |
end | |
def reset_current_schema! | |
@current_schema = nil | |
end | |
private | |
def add_replace_delete(current, wanted, section) | |
current = current[section].map {|record| [record["name"], record] }.to_h | |
wanted = wanted[section].map {|record| [record["name"], record] }.to_h | |
add_keys = wanted.keys - current.keys | |
add = wanted.values_at(*add_keys) | |
replace_keys = (current.keys & wanted.keys).select {|key| current[key] != wanted[key] } | |
replace = wanted.values_at(*replace_keys) | |
delete_keys = current.keys - wanted.keys | |
delete = delete_keys.map {|key| {"name" => key} } | |
{add: add, replace: replace, delete: delete} | |
end | |
def add_delete_copies(current, wanted) | |
current = current["copyFields"] | |
wanted = wanted["copyFields"] | |
{add: wanted - current, delete: current - wanted} | |
end | |
def reorder_hash(hash, order) | |
order &= hash.keys | |
order.zip(hash.values_at(*order)).to_h | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment