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