rsolr 1.0.8 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,530 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <!--
3
+ Licensed to the Apache Software Foundation (ASF) under one or more
4
+ contributor license agreements. See the NOTICE file distributed with
5
+ this work for additional information regarding copyright ownership.
6
+ The ASF licenses this file to You under the Apache License, Version 2.0
7
+ (the "License"); you may not use this file except in compliance with
8
+ the License. You may obtain a copy of the License at
9
+
10
+ http://www.apache.org/licenses/LICENSE-2.0
11
+
12
+ Unless required by applicable law or agreed to in writing, software
13
+ distributed under the License is distributed on an "AS IS" BASIS,
14
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ See the License for the specific language governing permissions and
16
+ limitations under the License.
17
+ -->
18
+
19
+ <!--
20
+ This is the Solr schema file. This file should be named "schema.xml" and
21
+ should be in the conf directory under the solr home
22
+ (i.e. ./solr/conf/schema.xml by default)
23
+ or located where the classloader for the Solr webapp can find it.
24
+
25
+ This example schema is the recommended starting point for users.
26
+ It should be kept correct and concise, usable out-of-the-box.
27
+
28
+ For more information, on how to customize this file, please see
29
+ http://wiki.apache.org/solr/SchemaXml
30
+ -->
31
+
32
+ <schema name="example" version="1.5">
33
+ <!-- attribute "name" is the name of this schema and is only used for display purposes.
34
+ version="x.y" is Solr's version number for the schema syntax and
35
+ semantics. It should not normally be changed by applications.
36
+
37
+ 1.0: multiValued attribute did not exist, all fields are multiValued
38
+ by nature
39
+ 1.1: multiValued attribute introduced, false by default
40
+ 1.2: omitTermFreqAndPositions attribute introduced, true by default
41
+ except for text fields.
42
+ 1.3: removed optional field compress feature
43
+ 1.4: autoGeneratePhraseQueries attribute introduced to drive QueryParser
44
+ behavior when a single string produces multiple tokens. Defaults
45
+ to off for version >= 1.4
46
+ 1.5: omitNorms defaults to true for primitive field types
47
+ (int, float, boolean, string...)
48
+ -->
49
+
50
+
51
+ <!-- Valid attributes for fields:
52
+ name: mandatory - the name for the field
53
+ type: mandatory - the name of a field type from the
54
+ <types> fieldType section
55
+ indexed: true if this field should be indexed (searchable or sortable)
56
+ stored: true if this field should be retrievable
57
+ docValues: true if this field should have doc values. Doc values are
58
+ useful for faceting, grouping, sorting and function queries. Although not
59
+ required, doc values will make the index faster to load, more
60
+ NRT-friendly and more memory-efficient. They however come with some
61
+ limitations: they are currently only supported by StrField, UUIDField
62
+ and all Trie*Fields, and depending on the field type, they might
63
+ require the field to be single-valued, be required or have a default
64
+ value (check the documentation of the field type you're interested in
65
+ for more information)
66
+ multiValued: true if this field may contain multiple values per document
67
+ omitNorms: (expert) set to true to omit the norms associated with
68
+ this field (this disables length normalization and index-time
69
+ boosting for the field, and saves some memory). Only full-text
70
+ fields or fields that need an index-time boost need norms.
71
+ Norms are omitted for primitive (non-analyzed) types by default.
72
+ termVectors: [false] set to true to store the term vector for a
73
+ given field.
74
+ When using MoreLikeThis, fields used for similarity should be
75
+ stored for best performance.
76
+ termPositions: Store position information with the term vector.
77
+ This will increase storage costs.
78
+ termOffsets: Store offset information with the term vector. This
79
+ will increase storage costs.
80
+ required: The field is required. It will throw an error if the
81
+ value does not exist
82
+ default: a value that should be used if no value is specified
83
+ when adding a document.
84
+ -->
85
+
86
+ <!-- field names should consist of alphanumeric or underscore characters only and
87
+ not start with a digit. This is not currently strictly enforced,
88
+ but other field names will not have first class support from all components
89
+ and back compatibility is not guaranteed. Names with both leading and
90
+ trailing underscores (e.g. _version_) are reserved.
91
+ -->
92
+
93
+ <!-- If you remove this field, you must _also_ disable the update log in solrconfig.xml
94
+ or Solr won't start. _version_ and update log are required for SolrCloud
95
+ -->
96
+ <field name="_version_" type="long" indexed="true" stored="true"/>
97
+
98
+ <!-- points to the root document of a block of nested documents. Required for nested
99
+ document support, may be removed otherwise
100
+ -->
101
+ <field name="_root_" type="string" indexed="true" stored="false"/>
102
+
103
+ <!-- Only remove the "id" field if you have a very good reason to. While not strictly
104
+ required, it is highly recommended. A <uniqueKey> is present in almost all Solr
105
+ installations. See the <uniqueKey> declaration below where <uniqueKey> is set to "id".
106
+ -->
107
+ <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
108
+ <field name="text" type="text_general" indexed="true" stored="true" multiValued="true" />
109
+
110
+ <!-- Dynamic field definitions allow using convention over configuration
111
+ for fields via the specification of patterns to match field names.
112
+ EXAMPLE: name="*_i" will match any field ending in _i (like myid_i, z_i)
113
+ RESTRICTION: the glob-like pattern in the name attribute must have
114
+ a "*" only at the start or the end. -->
115
+
116
+ <dynamicField name="*_i" type="int" indexed="true" stored="true"/>
117
+ <dynamicField name="*_is" type="int" indexed="true" stored="true" multiValued="true"/>
118
+ <dynamicField name="*_s" type="string" indexed="true" stored="true" />
119
+ <dynamicField name="*_ss" type="string" indexed="true" stored="true" multiValued="true"/>
120
+ <dynamicField name="*_l" type="long" indexed="true" stored="true"/>
121
+ <dynamicField name="*_ls" type="long" indexed="true" stored="true" multiValued="true"/>
122
+ <dynamicField name="*_t" type="text_general" indexed="true" stored="true"/>
123
+ <dynamicField name="*_txt" type="text_general" indexed="true" stored="true" multiValued="true"/>
124
+ <dynamicField name="*_en" type="text_en" indexed="true" stored="true" multiValued="true"/>
125
+ <dynamicField name="*_b" type="boolean" indexed="true" stored="true"/>
126
+ <dynamicField name="*_bs" type="boolean" indexed="true" stored="true" multiValued="true"/>
127
+ <dynamicField name="*_f" type="float" indexed="true" stored="true"/>
128
+ <dynamicField name="*_fs" type="float" indexed="true" stored="true" multiValued="true"/>
129
+ <dynamicField name="*_d" type="double" indexed="true" stored="true"/>
130
+ <dynamicField name="*_ds" type="double" indexed="true" stored="true" multiValued="true"/>
131
+
132
+ <!-- Type used to index the lat and lon components for the "location" FieldType -->
133
+ <dynamicField name="*_coordinate" type="tdouble" indexed="true" stored="false" />
134
+
135
+ <dynamicField name="*_dt" type="date" indexed="true" stored="true"/>
136
+ <dynamicField name="*_dts" type="date" indexed="true" stored="true" multiValued="true"/>
137
+ <dynamicField name="*_p" type="location" indexed="true" stored="true"/>
138
+
139
+ <!-- some trie-coded dynamic fields for faster range queries -->
140
+ <dynamicField name="*_ti" type="tint" indexed="true" stored="true"/>
141
+ <dynamicField name="*_tl" type="tlong" indexed="true" stored="true"/>
142
+ <dynamicField name="*_tf" type="tfloat" indexed="true" stored="true"/>
143
+ <dynamicField name="*_td" type="tdouble" indexed="true" stored="true"/>
144
+ <dynamicField name="*_tdt" type="tdate" indexed="true" stored="true"/>
145
+
146
+ <dynamicField name="*_c" type="currency" indexed="true" stored="true"/>
147
+
148
+ <dynamicField name="ignored_*" type="ignored" multiValued="true"/>
149
+ <dynamicField name="attr_*" type="text_general" indexed="true" stored="true" multiValued="true"/>
150
+
151
+ <dynamicField name="random_*" type="random" />
152
+
153
+ <!-- uncomment the following to ignore any fields that don't already match an existing
154
+ field name or dynamic field, rather than reporting them as an error.
155
+ alternately, change the type="ignored" to some other type e.g. "text" if you want
156
+ unknown fields indexed and/or stored by default -->
157
+ <!--dynamicField name="*" type="ignored" multiValued="true" /-->
158
+
159
+ <!-- Field to use to determine and enforce document uniqueness.
160
+ Unless this field is marked with required="false", it will be a required field
161
+ -->
162
+ <uniqueKey>id</uniqueKey>
163
+
164
+ <!-- copyField commands copy one field to another at the time a document
165
+ is added to the index. It's used either to index the same field differently,
166
+ or to add multiple fields to the same field for easier/faster searching. -->
167
+
168
+ <!--
169
+ <copyField source="title" dest="text"/>
170
+ <copyField source="body" dest="text"/>
171
+ -->
172
+
173
+ <!-- field type definitions. The "name" attribute is
174
+ just a label to be used by field definitions. The "class"
175
+ attribute and any other attributes determine the real
176
+ behavior of the fieldType.
177
+ Class names starting with "solr" refer to java classes in a
178
+ standard package such as org.apache.solr.analysis
179
+ -->
180
+
181
+ <!-- The StrField type is not analyzed, but indexed/stored verbatim.
182
+ It supports doc values but in that case the field needs to be
183
+ single-valued and either required or have a default value.
184
+ -->
185
+ <fieldType name="string" class="solr.StrField" sortMissingLast="true" />
186
+
187
+ <!-- boolean type: "true" or "false" -->
188
+ <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
189
+
190
+ <!-- sortMissingLast and sortMissingFirst attributes are optional attributes are
191
+ currently supported on types that are sorted internally as strings
192
+ and on numeric types.
193
+ This includes "string","boolean", and, as of 3.5 (and 4.x),
194
+ int, float, long, date, double, including the "Trie" variants.
195
+ - If sortMissingLast="true", then a sort on this field will cause documents
196
+ without the field to come after documents with the field,
197
+ regardless of the requested sort order (asc or desc).
198
+ - If sortMissingFirst="true", then a sort on this field will cause documents
199
+ without the field to come before documents with the field,
200
+ regardless of the requested sort order.
201
+ - If sortMissingLast="false" and sortMissingFirst="false" (the default),
202
+ then default lucene sorting will be used which places docs without the
203
+ field first in an ascending sort and last in a descending sort.
204
+ -->
205
+
206
+ <!--
207
+ Default numeric field types. For faster range queries, consider the tint/tfloat/tlong/tdouble types.
208
+
209
+ These fields support doc values, but they require the field to be
210
+ single-valued and either be required or have a default value.
211
+ -->
212
+ <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
213
+ <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
214
+ <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
215
+ <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
216
+
217
+ <!--
218
+ Numeric field types that index each value at various levels of precision
219
+ to accelerate range queries when the number of values between the range
220
+ endpoints is large. See the javadoc for NumericRangeQuery for internal
221
+ implementation details.
222
+
223
+ Smaller precisionStep values (specified in bits) will lead to more tokens
224
+ indexed per value, slightly larger index size, and faster range queries.
225
+ A precisionStep of 0 disables indexing at different precision levels.
226
+ -->
227
+ <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
228
+ <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
229
+ <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
230
+ <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>
231
+
232
+ <!-- The format for this date field is of the form 1995-12-31T23:59:59Z, and
233
+ is a more restricted form of the canonical representation of dateTime
234
+ http://www.w3.org/TR/xmlschema-2/#dateTime
235
+ The trailing "Z" designates UTC time and is mandatory.
236
+ Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
237
+ All other components are mandatory.
238
+
239
+ Expressions can also be used to denote calculations that should be
240
+ performed relative to "NOW" to determine the value, ie...
241
+
242
+ NOW/HOUR
243
+ ... Round to the start of the current hour
244
+ NOW-1DAY
245
+ ... Exactly 1 day prior to now
246
+ NOW/DAY+6MONTHS+3DAYS
247
+ ... 6 months and 3 days in the future from the start of
248
+ the current day
249
+
250
+ Consult the TrieDateField javadocs for more information.
251
+
252
+ Note: For faster range queries, consider the tdate type
253
+ -->
254
+ <fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
255
+
256
+ <!-- A Trie based date field for faster date range queries and date faceting. -->
257
+ <fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/>
258
+
259
+
260
+ <!--Binary data type. The data should be sent/retrieved in as Base64 encoded Strings -->
261
+ <fieldType name="binary" class="solr.BinaryField"/>
262
+
263
+ <!-- The "RandomSortField" is not used to store or search any
264
+ data. You can declare fields of this type it in your schema
265
+ to generate pseudo-random orderings of your docs for sorting
266
+ or function purposes. The ordering is generated based on the field
267
+ name and the version of the index. As long as the index version
268
+ remains unchanged, and the same field name is reused,
269
+ the ordering of the docs will be consistent.
270
+ If you want different psuedo-random orderings of documents,
271
+ for the same version of the index, use a dynamicField and
272
+ change the field name in the request.
273
+ -->
274
+ <fieldType name="random" class="solr.RandomSortField" indexed="true" />
275
+
276
+ <!-- solr.TextField allows the specification of custom text analyzers
277
+ specified as a tokenizer and a list of token filters. Different
278
+ analyzers may be specified for indexing and querying.
279
+
280
+ The optional positionIncrementGap puts space between multiple fields of
281
+ this type on the same document, with the purpose of preventing false phrase
282
+ matching across fields.
283
+
284
+ For more info on customizing your analyzer chain, please see
285
+ http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters
286
+ -->
287
+
288
+ <!-- One can also specify an existing Analyzer class that has a
289
+ default constructor via the class attribute on the analyzer element.
290
+ Example:
291
+ <fieldType name="text_greek" class="solr.TextField">
292
+ <analyzer class="org.apache.lucene.analysis.el.GreekAnalyzer"/>
293
+ </fieldType>
294
+ -->
295
+
296
+ <!-- A text field that only splits on whitespace for exact matching of words -->
297
+ <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
298
+ <analyzer>
299
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
300
+ </analyzer>
301
+ </fieldType>
302
+
303
+ <!-- A general text field that has reasonable, generic
304
+ cross-language defaults: it tokenizes with StandardTokenizer,
305
+ removes stop words from case-insensitive "stopwords.txt"
306
+ (empty by default), and down cases. At query time only, it
307
+ also applies synonyms. -->
308
+ <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
309
+ <analyzer type="index">
310
+ <tokenizer class="solr.StandardTokenizerFactory"/>
311
+ <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
312
+ <!-- in this example, we will only use synonyms at query time
313
+ <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
314
+ -->
315
+ <filter class="solr.LowerCaseFilterFactory"/>
316
+ </analyzer>
317
+ <analyzer type="query">
318
+ <tokenizer class="solr.StandardTokenizerFactory"/>
319
+ <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
320
+ <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
321
+ <filter class="solr.LowerCaseFilterFactory"/>
322
+ </analyzer>
323
+ </fieldType>
324
+
325
+ <!-- A text field with defaults appropriate for English: it
326
+ tokenizes with StandardTokenizer, removes English stop words
327
+ (lang/stopwords_en.txt), down cases, protects words from protwords.txt, and
328
+ finally applies Porter's stemming. The query time analyzer
329
+ also applies synonyms from synonyms.txt. -->
330
+ <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
331
+ <analyzer type="index">
332
+ <tokenizer class="solr.StandardTokenizerFactory"/>
333
+ <!-- in this example, we will only use synonyms at query time
334
+ <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
335
+ -->
336
+ <!-- Case insensitive stop word removal.
337
+ -->
338
+ <filter class="solr.StopFilterFactory"
339
+ ignoreCase="true"
340
+ words="lang/stopwords_en.txt"
341
+ />
342
+ <filter class="solr.LowerCaseFilterFactory"/>
343
+ <filter class="solr.EnglishPossessiveFilterFactory"/>
344
+ <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
345
+ <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
346
+ <filter class="solr.EnglishMinimalStemFilterFactory"/>
347
+ -->
348
+ <filter class="solr.PorterStemFilterFactory"/>
349
+ </analyzer>
350
+ <analyzer type="query">
351
+ <tokenizer class="solr.StandardTokenizerFactory"/>
352
+ <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
353
+ <filter class="solr.StopFilterFactory"
354
+ ignoreCase="true"
355
+ words="lang/stopwords_en.txt"
356
+ />
357
+ <filter class="solr.LowerCaseFilterFactory"/>
358
+ <filter class="solr.EnglishPossessiveFilterFactory"/>
359
+ <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
360
+ <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
361
+ <filter class="solr.EnglishMinimalStemFilterFactory"/>
362
+ -->
363
+ <filter class="solr.PorterStemFilterFactory"/>
364
+ </analyzer>
365
+ </fieldType>
366
+
367
+ <!-- A text field with defaults appropriate for English, plus
368
+ aggressive word-splitting and autophrase features enabled.
369
+ This field is just like text_en, except it adds
370
+ WordDelimiterFilter to enable splitting and matching of
371
+ words on case-change, alpha numeric boundaries, and
372
+ non-alphanumeric chars. This means certain compound word
373
+ cases will work, for example query "wi fi" will match
374
+ document "WiFi" or "wi-fi".
375
+ -->
376
+ <fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
377
+ <analyzer type="index">
378
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
379
+ <!-- in this example, we will only use synonyms at query time
380
+ <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
381
+ -->
382
+ <!-- Case insensitive stop word removal.
383
+ -->
384
+ <filter class="solr.StopFilterFactory"
385
+ ignoreCase="true"
386
+ words="lang/stopwords_en.txt"
387
+ />
388
+ <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
389
+ <filter class="solr.LowerCaseFilterFactory"/>
390
+ <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
391
+ <filter class="solr.PorterStemFilterFactory"/>
392
+ </analyzer>
393
+ <analyzer type="query">
394
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
395
+ <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
396
+ <filter class="solr.StopFilterFactory"
397
+ ignoreCase="true"
398
+ words="lang/stopwords_en.txt"
399
+ />
400
+ <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
401
+ <filter class="solr.LowerCaseFilterFactory"/>
402
+ <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
403
+ <filter class="solr.PorterStemFilterFactory"/>
404
+ </analyzer>
405
+ </fieldType>
406
+
407
+ <!-- Less flexible matching, but less false matches. Probably not ideal for product names,
408
+ but may be good for SKUs. Can insert dashes in the wrong place and still match. -->
409
+ <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
410
+ <analyzer>
411
+ <tokenizer class="solr.WhitespaceTokenizerFactory"/>
412
+ <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
413
+ <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
414
+ <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
415
+ <filter class="solr.LowerCaseFilterFactory"/>
416
+ <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
417
+ <filter class="solr.EnglishMinimalStemFilterFactory"/>
418
+ <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
419
+ possible with WordDelimiterFilter in conjuncton with stemming. -->
420
+ <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
421
+ </analyzer>
422
+ </fieldType>
423
+
424
+ <!-- Just like text_general except it reverses the characters of
425
+ each token, to enable more efficient leading wildcard queries. -->
426
+ <fieldType name="text_general_rev" class="solr.TextField" positionIncrementGap="100">
427
+ <analyzer type="index">
428
+ <tokenizer class="solr.StandardTokenizerFactory"/>
429
+ <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
430
+ <filter class="solr.LowerCaseFilterFactory"/>
431
+ <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true"
432
+ maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
433
+ </analyzer>
434
+ <analyzer type="query">
435
+ <tokenizer class="solr.StandardTokenizerFactory"/>
436
+ <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
437
+ <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
438
+ <filter class="solr.LowerCaseFilterFactory"/>
439
+ </analyzer>
440
+ </fieldType>
441
+
442
+ <!-- This is an example of using the KeywordTokenizer along
443
+ With various TokenFilterFactories to produce a sortable field
444
+ that does not include some properties of the source text
445
+ -->
446
+ <fieldType name="alphaOnlySort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
447
+ <analyzer>
448
+ <!-- KeywordTokenizer does no actual tokenizing, so the entire
449
+ input string is preserved as a single token
450
+ -->
451
+ <tokenizer class="solr.KeywordTokenizerFactory"/>
452
+ <!-- The LowerCase TokenFilter does what you expect, which can be
453
+ when you want your sorting to be case insensitive
454
+ -->
455
+ <filter class="solr.LowerCaseFilterFactory" />
456
+ <!-- The TrimFilter removes any leading or trailing whitespace -->
457
+ <filter class="solr.TrimFilterFactory" />
458
+ <!-- The PatternReplaceFilter gives you the flexibility to use
459
+ Java Regular expression to replace any sequence of characters
460
+ matching a pattern with an arbitrary replacement string,
461
+ which may include back references to portions of the original
462
+ string matched by the pattern.
463
+
464
+ See the Java Regular Expression documentation for more
465
+ information on pattern and replacement string syntax.
466
+
467
+ http://docs.oracle.com/javase/7/docs/api/java/util/regex/package-summary.html
468
+ -->
469
+ <filter class="solr.PatternReplaceFilterFactory"
470
+ pattern="([^a-z])" replacement="" replace="all"
471
+ />
472
+ </analyzer>
473
+ </fieldType>
474
+
475
+ <!-- lowercases the entire field value, keeping it as a single token. -->
476
+ <fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
477
+ <analyzer>
478
+ <tokenizer class="solr.KeywordTokenizerFactory"/>
479
+ <filter class="solr.LowerCaseFilterFactory" />
480
+ </analyzer>
481
+ </fieldType>
482
+
483
+ <!-- since fields of this type are by default not stored or indexed,
484
+ any data added to them will be ignored outright. -->
485
+ <fieldType name="ignored" stored="false" indexed="false" multiValued="true" class="solr.StrField" />
486
+
487
+ <!-- This point type indexes the coordinates as separate fields (subFields)
488
+ If subFieldType is defined, it references a type, and a dynamic field
489
+ definition is created matching *___<typename>. Alternately, if
490
+ subFieldSuffix is defined, that is used to create the subFields.
491
+ Example: if subFieldType="double", then the coordinates would be
492
+ indexed in fields myloc_0___double,myloc_1___double.
493
+ Example: if subFieldSuffix="_d" then the coordinates would be indexed
494
+ in fields myloc_0_d,myloc_1_d
495
+ The subFields are an implementation detail of the fieldType, and end
496
+ users normally should not need to know about them.
497
+ -->
498
+ <fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>
499
+
500
+ <!-- A specialized field for geospatial search. If indexed, this fieldType must not be multivalued. -->
501
+ <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
502
+
503
+ <!-- An alternative geospatial field type new to Solr 4. It supports multiValued and polygon shapes.
504
+ For more information about this and other Spatial fields new to Solr 4, see:
505
+ http://wiki.apache.org/solr/SolrAdaptersForLuceneSpatial4
506
+ -->
507
+ <fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
508
+ geo="true" distErrPct="0.025" maxDistErr="0.001" distanceUnits="kilometers" />
509
+
510
+ <!-- Spatial rectangle (bounding box) field. It supports most spatial predicates, and has
511
+ special relevancy modes: score=overlapRatio|area|area2D (local-param to the query). DocValues is recommended for
512
+ relevancy. -->
513
+ <fieldType name="bbox" class="solr.BBoxField"
514
+ geo="true" distanceUnits="kilometers" numberType="_bbox_coord" />
515
+ <fieldType name="_bbox_coord" class="solr.TrieDoubleField" precisionStep="8" docValues="true" stored="false"/>
516
+
517
+ <!-- Money/currency field type. See http://wiki.apache.org/solr/MoneyFieldType
518
+ Parameters:
519
+ defaultCurrency: Specifies the default currency if none specified. Defaults to "USD"
520
+ precisionStep: Specifies the precisionStep for the TrieLong field used for the amount
521
+ providerClass: Lets you plug in other exchange provider backend:
522
+ solr.FileExchangeRateProvider is the default and takes one parameter:
523
+ currencyConfig: name of an xml file holding exchange rates
524
+ solr.OpenExchangeRatesOrgProvider uses rates from openexchangerates.org:
525
+ ratesFileLocation: URL or path to rates JSON file (default latest.json on the web)
526
+ refreshInterval: Number of minutes between each rates fetch (default: 1440, min: 60)
527
+ -->
528
+ <fieldType name="currency" class="solr.CurrencyField" precisionStep="8" defaultCurrency="USD" currencyConfig="currency.xml" />
529
+
530
+ </schema>