Skip to content

Instantly share code, notes, and snippets.

@joshuaadickerson
Created April 27, 2013 05:49
Show Gist options
  • Select an option

  • Save joshuaadickerson/5472035 to your computer and use it in GitHub Desktop.

Select an option

Save joshuaadickerson/5472035 to your computer and use it in GitHub Desktop.
Solr Places Schema
<?xml version="1.0" encoding="UTF-8"?>
<!--
This is the schema for places (to be used for autocomplete)
Here are some more reference links:
https://github.com/wikimedia/mediawiki-extensions-WikibaseSolr/blob/master/schema.solr4.xml
-->
<schema name="places.solr.schema" version="1.5">
<types>
<!-- Plain text -->
<fieldType name="string" class="solr.StrField" sortMissingLast="true" positionIncrementGap="100" />
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="100" />
<fieldType name="long" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0" />
<fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0" />
<!-- States and countries have a lot of synonyms and act a little different -->
<fieldtype name="text_edge" class="solr.TextField" positionIncrementGap="100">
<!-- Analyzer to use when indexing a field of this type -->
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="25" />
</analyzer>
<!-- Analyzer to use when matching against field of this type -->
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldtype>
<!-- Text, like paragraphs and posts -->
<fieldtype name="text" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="false" omitTermFreqAndPositions="false" omitPositions="false">
<!-- Analyzer to use when indexing a field of this type -->
<analyzer type="index">
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" enablePositionIncrements="true"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="true"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" enablePositionIncrements="true"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="true"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldtype>
<!--
Only available in Solr 4
@link http://wiki.apache.org/solr/SpatialSearch
-->
<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
</types>
<fields>
<!-- The document version (only used for Solr) -->
<field name="_version_" type="long" indexed="true" stored="true" multiValued="false" />
<field name="doc_id" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<!-- Location -->
<!-- facility.PointLocation -->
<field name="location" type="location" indexed="true" stored="true" required="false" multiValued="false" />
<dynamicField name="*_coordinate" type="double" indexed="true" stored="false"/>
<!-- facility.PostalCode -->
<field name="postal_code" type="string" indexed="true" stored="true" required="false" multiValued="false" />
<!-- town.TownId -->
<field name="town_id" type="int" indexed="true" stored="true" required="false" multiValued="false" />
<!-- town.ItemName -->
<field name="town" type="text_edge" indexed="true" stored="true" required="false" multiValued="false" omitTermFreqAndPositions="true" />
<!-- state.StateId -->
<field name="state_id" type="int" indexed="true" stored="true" required="false" multiValued="false" />
<!-- state.ItemName -->
<field name="state" type="text_edge" indexed="true" stored="true" required="false" multiValued="false" omitNorms="true" omitTermFreqAndPositions="true" />
<!-- state.StateCode -->
<field name="state_code" type="string" indexed="true" stored="true" required="false" multiValued="false" />
<!-- country.CountryId -->
<field name="country_id" type="int" indexed="true" stored="true" required="false" multiValued="false" />
<!-- country.ItemName -->
<field name="country" type="text_edge" indexed="true" stored="true" required="false" multiValued="false" omitTermFreqAndPositions="true" />
<!-- country.StateeCode -->
<field name="country_code" type="string" indexed="true" stored="true" required="false" multiValued="false" />
<!-- End Location -->
<!-- Catch All -->
<!-- Contains all of the text fields -->
<field name="catchall" type="text" indexed="true" stored="true" required="false" multiValued="true" />
<!-- End Catch All -->
</fields>
<uniqueKey>doc_id</uniqueKey>
<!-- Catch all of the fields in to one for searching -->
<copyField source="*" dest="catchall" />
<solrQueryParser defaultOperator="OR" />
</schema>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment