root/trunk/config/bwbuild/.defaults/schema.xml

Revision 3570 (checked in by douglm, 1 year ago)

MUST define x-props as string bacause of their encoding.

Line 
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 Bedework notes:
21
22 Some of the fields defined below are indexed or stored versions of x-properties.
23 These are stored by separating the parameters and value with a tab character.
24
25 These fields MUST be stored as string values - even if the value is numeric.
26
27 If you wish to store/index a numeric x-property as a numeric value you will
28 need to treat that x-property specially in the implementation of the
29 bedework indexer.
30
31 We could generalize that by adding more flags to the list of interesting
32 x-props.
33 -->
34
35 <!-- 
36  This is the Solr schema file. This file should be named "schema.xml" and
37  should be in the conf directory under the solr home
38  (i.e. ./solr/conf/schema.xml by default)
39  or located where the classloader for the Solr webapp can find it.
40
41  This example schema is the recommended starting point for users.
42  It should be kept correct and concise, usable out-of-the-box.
43
44  For more information, on how to customize this file, please see
45  http://wiki.apache.org/solr/SchemaXml
46
47  PERFORMANCE NOTE: this schema includes many optional features and should not
48  be used for benchmarking.  To improve performance one could
49   - set stored="false" for all fields possible (esp large fields) when you
50     only need to search on the field but don't need to return the original
51     value.
52   - set indexed="false" if you don't need to search on the field, but only
53     return the field as a result of searching on other indexed fields.
54   - remove all unneeded copyField statements
55   - for best index size and searching performance, set "index" to false
56     for all general text fields, use copyField to copy them to the
57     catchall "text" field, and use that for searching.
58   - For maximum indexing performance, use the StreamingUpdateSolrServer
59     java client.
60   - Remember to run the JVM in server mode, and use a higher logging level
61     that avoids logging every request
62 -->
63
64 <schema name="bwpublic" version="1.5">
65   <!-- attribute "name" is the name of this schema and is only used for display purposes.
66        Applications should change this to reflect the nature of the search collection.
67        version="x.y" is Solr's version number for the schema syntax and semantics.  It should
68        not normally be changed by applications.
69        1.0: multiValued attribute did not exist, all fields are multiValued by nature
70        1.1: multiValued attribute introduced, false by default
71        1.2: omitTermFreqAndPositions attribute introduced, true by default except for text fields.
72        1.3: removed optional field compress feature
73        1.4: default auto-phrase (QueryParser feature) to off
74        1.5: omitNorms defaults to true for primitive field types (int, float, boolean, string...)
75      -->
76
77   <types>
78     <!-- field type definitions. The "name" attribute is
79        just a label to be used by field definitions.  The "class"
80        attribute and any other attributes determine the real
81        behavior of the fieldType.
82          Class names starting with "solr" refer to java classes in the
83        org.apache.solr.analysis package.
84     -->
85
86     <!-- The StrField type is not analyzed, but indexed/stored verbatim. -->
87     <fieldType name="string" class="solr.StrField" sortMissingLast="true" />
88
89     <!-- boolean type: "true" or "false" -->
90     <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
91     <!--Binary data type. The data should be sent/retrieved in as Base64 encoded Strings -->
92     <fieldtype name="binary" class="solr.BinaryField"/>
93
94     <!-- The optional sortMissingLast and sortMissingFirst attributes are
95          currently supported on types that are sorted internally as strings
96          and on numeric types.
97                This includes "string","boolean", and, as of 3.5 (and 4.x),
98                int, float, long, date, double, including the "Trie" variants.
99        - If sortMissingLast="true", then a sort on this field will cause documents
100          without the field to come after documents with the field,
101          regardless of the requested sort order (asc or desc).
102        - If sortMissingFirst="true", then a sort on this field will cause documents
103          without the field to come before documents with the field,
104          regardless of the requested sort order.
105        - If sortMissingLast="false" and sortMissingFirst="false" (the default),
106          then default lucene sorting will be used which places docs without the
107          field first in an ascending sort and last in a descending sort.
108     -->   
109
110     <!--
111       Default numeric field types. For faster range queries, consider the tint/tfloat/tlong/tdouble types.
112     -->
113     <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
114     <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
115     <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
116     <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
117
118     <!--
119      Numeric field types that index each value at various levels of precision
120      to accelerate range queries when the number of values between the range
121      endpoints is large. See the javadoc for NumericRangeQuery for internal
122      implementation details.
123
124      Smaller precisionStep values (specified in bits) will lead to more tokens
125      indexed per value, slightly larger index size, and faster range queries.
126      A precisionStep of 0 disables indexing at different precision levels.
127     -->
128     <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
129     <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
130     <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
131     <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>
132
133     <!-- The format for this date field is of the form 1995-12-31T23:59:59Z, and
134          is a more restricted form of the canonical representation of dateTime
135          http://www.w3.org/TR/xmlschema-2/#dateTime   
136          The trailing "Z" designates UTC time and is mandatory.
137          Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
138          All other components are mandatory.
139
140          Expressions can also be used to denote calculations that should be
141          performed relative to "NOW" to determine the value, ie...
142
143                NOW/HOUR
144                   ... Round to the start of the current hour
145                NOW-1DAY
146                   ... Exactly 1 day prior to now
147                NOW/DAY+6MONTHS+3DAYS
148                   ... 6 months and 3 days in the future from the start of
149                       the current day
150                      
151          Consult the DateField javadocs for more information.
152
153          Note: For faster range queries, consider the tdate type
154       -->
155     <fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
156
157     <!-- A Trie based date field for faster date range queries and date faceting. -->
158     <fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/>
159
160
161     <!--
162       Note:
163       These should only be used for compatibility with existing indexes (created with older Solr versions)
164       or if "sortMissingFirst" or "sortMissingLast" functionality is needed. Use Trie based fields instead.
165
166       Plain numeric field types that store and index the text
167       value verbatim (and hence don't support range queries, since the
168       lexicographic ordering isn't equal to the numeric ordering)
169     <fieldType name="pint" class="solr.IntField"/>
170     <fieldType name="plong" class="solr.LongField"/>
171     <fieldType name="pfloat" class="solr.FloatField"/>
172     <fieldType name="pdouble" class="solr.DoubleField"/>
173     <fieldType name="pdate" class="solr.DateField" sortMissingLast="true"/>
174     -->
175
176
177     <!--
178       Note:
179       These should only be used for compatibility with existing indexes (created with older Solr versions).
180       Use Trie based fields instead. As of Solr 3.5 and 4.x, Trie based fields support sortMissingFirst/Last
181
182       Numeric field types that manipulate the value into
183       a string value that isn't human-readable in its internal form,
184       but with a lexicographic ordering the same as the numeric ordering,
185       so that range queries work correctly.
186     <fieldType name="sint" class="solr.SortableIntField" sortMissingLast="true" omitNorms="true"/>
187     <fieldType name="slong" class="solr.SortableLongField" sortMissingLast="true" omitNorms="true"/>
188     <fieldType name="sfloat" class="solr.SortableFloatField" sortMissingLast="true" omitNorms="true"/>
189     <fieldType name="sdouble" class="solr.SortableDoubleField" sortMissingLast="true" omitNorms="true"/>
190     -->
191
192
193     <!-- The "RandomSortField" is not used to store or search any
194          data.  You can declare fields of this type it in your schema
195          to generate pseudo-random orderings of your docs for sorting
196          purposes.  The ordering is generated based on the field name
197          and the version of the index, As long as the index version
198          remains unchanged, and the same field name is reused,
199          the ordering of the docs will be consistent. 
200          If you want different psuedo-random orderings of documents,
201          for the same version of the index, use a dynamicField and
202          change the name
203      -->
204     <fieldType name="random" class="solr.RandomSortField" indexed="true" />
205
206     <!-- solr.TextField allows the specification of custom text analyzers
207          specified as a tokenizer and a list of token filters. Different
208          analyzers may be specified for indexing and querying.
209
210          The optional positionIncrementGap puts space between multiple fields of
211          this type on the same document, with the purpose of preventing false phrase
212          matching across fields.
213
214          For more info on customizing your analyzer chain, please see
215          http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters
216      -->
217
218     <!-- One can also specify an existing Analyzer class that has a
219          default constructor via the class attribute on the analyzer element
220     <fieldType name="text_greek" class="solr.TextField">
221       <analyzer class="org.apache.lucene.analysis.el.GreekAnalyzer"/>
222     </fieldType>
223     -->
224
225     <!-- A text field that only splits on whitespace for exact matching of words -->
226     <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
227       <analyzer>
228         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
229       </analyzer>
230     </fieldType>
231
232     <!-- A general text field that has reasonable, generic
233          cross-language defaults: it tokenizes with StandardTokenizer,
234          removes stop words from case-insensitive "stopwords.txt"
235          (empty by default), and down cases.  At query time only, it
236          also applies synonyms. -->
237     <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
238       <analyzer type="index">
239         <tokenizer class="solr.StandardTokenizerFactory"/>
240         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
241         <!-- in this example, we will only use synonyms at query time
242         <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
243         -->
244         <filter class="solr.LowerCaseFilterFactory"/>
245       </analyzer>
246       <analyzer type="query">
247         <tokenizer class="solr.StandardTokenizerFactory"/>
248         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
249         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
250         <filter class="solr.LowerCaseFilterFactory"/>
251       </analyzer>
252     </fieldType>
253
254     <!-- A text field with defaults appropriate for English: it
255          tokenizes with StandardTokenizer, removes English stop words
256          (lang/stopwords_en.txt), down cases, protects words from protwords.txt, and
257          finally applies Porter's stemming.  The query time analyzer
258          also applies synonyms from synonyms.txt. -->
259     <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
260       <analyzer type="index">
261         <tokenizer class="solr.StandardTokenizerFactory"/>
262         <!-- in this example, we will only use synonyms at query time
263         <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
264         -->
265         <!-- Case insensitive stop word removal.
266           add enablePositionIncrements=true in both the index and query
267           analyzers to leave a 'gap' for more accurate phrase queries.
268         -->
269         <filter class="solr.StopFilterFactory"
270                 ignoreCase="true"
271                 words="lang/stopwords_en.txt"
272                 enablePositionIncrements="true"
273                 />
274         <filter class="solr.LowerCaseFilterFactory"/>
275         <filter class="solr.EnglishPossessiveFilterFactory"/>
276         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
277         <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
278         <filter class="solr.EnglishMinimalStemFilterFactory"/>
279         -->
280         <filter class="solr.PorterStemFilterFactory"/>
281       </analyzer>
282       <analyzer type="query">
283         <tokenizer class="solr.StandardTokenizerFactory"/>
284         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
285         <filter class="solr.StopFilterFactory"
286                 ignoreCase="true"
287                 words="lang/stopwords_en.txt"
288                 enablePositionIncrements="true"
289                 />
290         <filter class="solr.LowerCaseFilterFactory"/>
291         <filter class="solr.EnglishPossessiveFilterFactory"/>
292         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
293         <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
294         <filter class="solr.EnglishMinimalStemFilterFactory"/>
295         -->
296         <filter class="solr.PorterStemFilterFactory"/>
297       </analyzer>
298     </fieldType>
299
300     <!-- A text field with defaults appropriate for English, plus
301          aggressive word-splitting and autophrase features enabled.
302          This field is just like text_en, except it adds
303          WordDelimiterFilter to enable splitting and matching of
304          words on case-change, alpha numeric boundaries, and
305          non-alphanumeric chars.  This means certain compound word
306          cases will work, for example query "wi fi" will match
307          document "WiFi" or "wi-fi".  However, other cases will still
308          not match, for example if the query is "wifi" and the
309          document is "wi fi" or if the query is "wi-fi" and the
310          document is "wifi".
311         -->
312     <fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
313       <analyzer type="index">
314         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
315         <!-- in this example, we will only use synonyms at query time
316         <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
317         -->
318         <!-- Case insensitive stop word removal.
319           add enablePositionIncrements=true in both the index and query
320           analyzers to leave a 'gap' for more accurate phrase queries.
321         -->
322         <filter class="solr.StopFilterFactory"
323                 ignoreCase="true"
324                 words="lang/stopwords_en.txt"
325                 enablePositionIncrements="true"
326                 />
327         <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
328         <filter class="solr.LowerCaseFilterFactory"/>
329         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
330         <filter class="solr.PorterStemFilterFactory"/>
331       </analyzer>
332       <analyzer type="query">
333         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
334         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
335         <filter class="solr.StopFilterFactory"
336                 ignoreCase="true"
337                 words="lang/stopwords_en.txt"
338                 enablePositionIncrements="true"
339                 />
340         <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
341         <filter class="solr.LowerCaseFilterFactory"/>
342         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
343         <filter class="solr.PorterStemFilterFactory"/>
344       </analyzer>
345     </fieldType>
346
347     <!-- Less flexible matching, but less false matches.  Probably not ideal for product names,
348          but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->
349     <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
350       <analyzer>
351         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
352         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
353         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
354         <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
355         <filter class="solr.LowerCaseFilterFactory"/>
356         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
357         <filter class="solr.EnglishMinimalStemFilterFactory"/>
358         <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
359              possible with WordDelimiterFilter in conjuncton with stemming. -->
360         <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
361       </analyzer>
362     </fieldType>
363
364     <!-- Just like text_general except it reverses the characters of
365          each token, to enable more efficient leading wildcard queries. -->
366     <fieldType name="text_general_rev" class="solr.TextField" positionIncrementGap="100">
367       <analyzer type="index">
368         <tokenizer class="solr.StandardTokenizerFactory"/>
369         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
370         <filter class="solr.LowerCaseFilterFactory"/>
371         <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true"
372            maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
373       </analyzer>
374       <analyzer type="query">
375         <tokenizer class="solr.StandardTokenizerFactory"/>
376         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
377         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
378         <filter class="solr.LowerCaseFilterFactory"/>
379       </analyzer>
380     </fieldType>
381
382     <!-- charFilter + WhitespaceTokenizer  -->
383     <!--
384     <fieldType name="text_char_norm" class="solr.TextField" positionIncrementGap="100" >
385       <analyzer>
386         <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
387         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
388       </analyzer>
389     </fieldType>
390     -->
391
392     <!-- This is an example of using the KeywordTokenizer along
393          With various TokenFilterFactories to produce a sortable field
394          that does not include some properties of the source text
395       -->
396     <fieldType name="alphaOnlySort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
397       <analyzer>
398         <!-- KeywordTokenizer does no actual tokenizing, so the entire
399              input string is preserved as a single token
400           -->
401         <tokenizer class="solr.KeywordTokenizerFactory"/>
402         <!-- The LowerCase TokenFilter does what you expect, which can be
403              when you want your sorting to be case insensitive
404           -->
405         <filter class="solr.LowerCaseFilterFactory" />
406         <!-- The TrimFilter removes any leading or trailing whitespace -->
407         <filter class="solr.TrimFilterFactory" />
408         <!-- The PatternReplaceFilter gives you the flexibility to use
409              Java Regular expression to replace any sequence of characters
410              matching a pattern with an arbitrary replacement string,
411              which may include back references to portions of the original
412              string matched by the pattern.
413              
414              See the Java Regular Expression documentation for more
415              information on pattern and replacement string syntax.
416              
417              http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/package-summary.html
418           -->
419         <filter class="solr.PatternReplaceFilterFactory"
420                 pattern="([^a-z])" replacement="" replace="all"
421         />
422       </analyzer>
423     </fieldType>
424    
425     <fieldtype name="phonetic" stored="false" indexed="true" class="solr.TextField" >
426       <analyzer>
427         <tokenizer class="solr.StandardTokenizerFactory"/>
428         <filter class="solr.DoubleMetaphoneFilterFactory" inject="false"/>
429       </analyzer>
430     </fieldtype>
431
432     <fieldtype name="payloads" stored="false" indexed="true" class="solr.TextField" >
433       <analyzer>
434         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
435         <!--
436         The DelimitedPayloadTokenFilter can put payloads on tokens... for example,
437         a token of "foo|1.4"  would be indexed as "foo" with a payload of 1.4f
438         Attributes of the DelimitedPayloadTokenFilterFactory :
439          "delimiter" - a one character delimiter. Default is | (pipe)
440          "encoder" - how to encode the following value into a playload
441             float -> org.apache.lucene.analysis.payloads.FloatEncoder,
442             integer -> o.a.l.a.p.IntegerEncoder
443             identity -> o.a.l.a.p.IdentityEncoder
444             Fully Qualified class name implementing PayloadEncoder, Encoder must have a no arg constructor.
445          -->
446         <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float"/>
447       </analyzer>
448     </fieldtype>
449
450     <!-- lowercases the entire field value, keeping it as a single token.  -->
451     <fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
452       <analyzer>
453         <tokenizer class="solr.KeywordTokenizerFactory"/>
454         <filter class="solr.LowerCaseFilterFactory" />
455       </analyzer>
456     </fieldType>
457
458     <fieldType name="text_path" class="solr.TextField" positionIncrementGap="100">
459       <analyzer>
460         <tokenizer class="solr.PathHierarchyTokenizerFactory"/>
461       </analyzer>
462     </fieldType>
463    
464
465     <!-- since fields of this type are by default not stored or indexed,
466          any data added to them will be ignored outright.  -->
467     <fieldtype name="ignored" stored="false" indexed="false" multiValued="true" class="solr.StrField" />
468
469     <!-- This point type indexes the coordinates as separate fields (subFields)
470       If subFieldType is defined, it references a type, and a dynamic field
471       definition is created matching *___<typename>.  Alternately, if
472       subFieldSuffix is defined, that is used to create the subFields.
473       Example: if subFieldType="double", then the coordinates would be
474         indexed in fields myloc_0___double,myloc_1___double.
475       Example: if subFieldSuffix="_d" then the coordinates would be indexed
476         in fields myloc_0_d,myloc_1_d
477       The subFields are an implementation detail of the fieldType, and end
478       users normally should not need to know about them.
479      -->
480     <fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>
481
482     <!-- A specialized field for geospatial search. If indexed, this fieldType must not be multivalued. -->
483     <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
484
485    <!--
486     A Geohash is a compact representation of a latitude longitude pair in a single field.
487     See http://wiki.apache.org/solr/SpatialSearch
488    -->
489     <fieldtype name="geohash" class="solr.GeoHashField"/>
490    <!-- Money/currency field type. See http://wiki.apache.org/solr/MoneyFieldType
491         Parameters:
492           defaultCurrency: Specifies the default currency if none specified. Defaults to "USD"
493           precisionStep:   Specifies the precisionStep for the TrieLong field used for the amount
494           providerClass:   Lets you plug in other exchange provider backend:
495                            solr.FileExchangeRateProvider is the default and takes one parameter:
496                              currencyConfig: name of an xml file holding exhange rates
497    -->
498     <fieldType name="currency" class="solr.CurrencyField" precisionStep="8" defaultCurrency="USD" currencyConfig="currency.xml" />
499              
500    <!-- some examples for different languages (generally ordered by ISO code) -->
501
502     <!-- Arabic -->
503     <fieldType name="text_ar" class="solr.TextField" positionIncrementGap="100">
504       <analyzer>
505         <tokenizer class="solr.StandardTokenizerFactory"/>
506         <!-- for any non-arabic -->
507         <filter class="solr.LowerCaseFilterFactory"/>
508         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ar.txt" enablePositionIncrements="true"/>
509         <!-- normalizes ﻯ to ﻱ, etc -->
510         <filter class="solr.ArabicNormalizationFilterFactory"/>
511         <filter class="solr.ArabicStemFilterFactory"/>
512       </analyzer>
513     </fieldType>
514
515     <!-- Bulgarian -->
516     <fieldType name="text_bg" class="solr.TextField" positionIncrementGap="100">
517       <analyzer>
518         <tokenizer class="solr.StandardTokenizerFactory"/>
519         <filter class="solr.LowerCaseFilterFactory"/>
520         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_bg.txt" enablePositionIncrements="true"/>
521         <filter class="solr.BulgarianStemFilterFactory"/>       
522       </analyzer>
523     </fieldType>
524    
525     <!-- Catalan -->
526     <fieldType name="text_ca" class="solr.TextField" positionIncrementGap="100">
527       <analyzer>
528         <tokenizer class="solr.StandardTokenizerFactory"/>
529         <!-- removes l', etc -->
530         <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_ca.txt"/>
531         <filter class="solr.LowerCaseFilterFactory"/>
532         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ca.txt" enablePositionIncrements="true"/>
533         <filter class="solr.SnowballPorterFilterFactory" language="Catalan"/>       
534       </analyzer>
535     </fieldType>
536    
537     <!-- CJK bigram (see text_ja for a Japanese configuration using morphological analysis) -->
538     <fieldType name="text_cjk" class="solr.TextField" positionIncrementGap="100">
539       <analyzer>
540         <tokenizer class="solr.StandardTokenizerFactory"/>
541         <!-- normalize width before bigram, as e.g. half-width dakuten combine  -->
542         <filter class="solr.CJKWidthFilterFactory"/>
543         <!-- for any non-CJK -->
544         <filter class="solr.LowerCaseFilterFactory"/>
545         <filter class="solr.CJKBigramFilterFactory"/>
546       </analyzer>
547     </fieldType>
548
549     <!-- Czech -->
550     <fieldType name="text_cz" class="solr.TextField" positionIncrementGap="100">
551       <analyzer>
552         <tokenizer class="solr.StandardTokenizerFactory"/>
553         <filter class="solr.LowerCaseFilterFactory"/>
554         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_cz.txt" enablePositionIncrements="true"/>
555         <filter class="solr.CzechStemFilterFactory"/>       
556       </analyzer>
557     </fieldType>
558    
559     <!-- Danish -->
560     <fieldType name="text_da" class="solr.TextField" positionIncrementGap="100">
561       <analyzer>
562         <tokenizer class="solr.StandardTokenizerFactory"/>
563         <filter class="solr.LowerCaseFilterFactory"/>
564         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_da.txt" format="snowball" enablePositionIncrements="true"/>
565         <filter class="solr.SnowballPorterFilterFactory" language="Danish"/>       
566       </analyzer>
567     </fieldType>
568    
569     <!-- German -->
570     <fieldType name="text_de" class="solr.TextField" positionIncrementGap="100">
571       <analyzer>
572         <tokenizer class="solr.StandardTokenizerFactory"/>
573         <filter class="solr.LowerCaseFilterFactory"/>
574         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_de.txt" format="snowball" enablePositionIncrements="true"/>
575         <filter class="solr.GermanNormalizationFilterFactory"/>
576         <filter class="solr.GermanLightStemFilterFactory"/>
577         <!-- less aggressive: <filter class="solr.GermanMinimalStemFilterFactory"/> -->
578         <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="German2"/> -->
579       </analyzer>
580     </fieldType>
581    
582     <!-- Greek -->
583     <fieldType name="text_el" class="solr.TextField" positionIncrementGap="100">
584       <analyzer>
585         <tokenizer class="solr.StandardTokenizerFactory"/>
586         <!-- greek specific lowercase for sigma -->
587         <filter class="solr.GreekLowerCaseFilterFactory"/>
588         <filter class="solr.StopFilterFactory" ignoreCase="false" words="lang/stopwords_el.txt" enablePositionIncrements="true"/>
589         <filter class="solr.GreekStemFilterFactory"/>
590       </analyzer>
591     </fieldType>
592    
593     <!-- Spanish -->
594     <fieldType name="text_es" class="solr.TextField" positionIncrementGap="100">
595       <analyzer>
596         <tokenizer class="solr.StandardTokenizerFactory"/>
597         <filter class="solr.LowerCaseFilterFactory"/>
598         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_es.txt" format="snowball" enablePositionIncrements="true"/>
599         <filter class="solr.SpanishLightStemFilterFactory"/>
600         <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="Spanish"/> -->
601       </analyzer>
602     </fieldType>
603    
604     <!-- Basque -->
605     <fieldType name="text_eu" class="solr.TextField" positionIncrementGap="100">
606       <analyzer>
607         <tokenizer class="solr.StandardTokenizerFactory"/>
608         <filter class="solr.LowerCaseFilterFactory"/>
609         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_eu.txt" enablePositionIncrements="true"/>
610         <filter class="solr.SnowballPorterFilterFactory" language="Basque"/>
611       </analyzer>
612     </fieldType>
613    
614     <!-- Persian -->
615     <fieldType name="text_fa" class="solr.TextField" positionIncrementGap="100">
616       <analyzer>
617         <!-- for ZWNJ -->
618         <charFilter class="solr.PersianCharFilterFactory"/>
619         <tokenizer class="solr.StandardTokenizerFactory"/>
620         <filter class="solr.LowerCaseFilterFactory"/>
621         <filter class="solr.ArabicNormalizationFilterFactory"/>
622         <filter class="solr.PersianNormalizationFilterFactory"/>
623         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fa.txt" enablePositionIncrements="true"/>
624       </analyzer>
625     </fieldType>
626    
627     <!-- Finnish -->
628     <fieldType name="text_fi" class="solr.TextField" positionIncrementGap="100">
629       <analyzer>
630         <tokenizer class="solr.StandardTokenizerFactory"/>
631         <filter class="solr.LowerCaseFilterFactory"/>
632         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fi.txt" format="snowball" enablePositionIncrements="true"/>
633         <filter class="solr.SnowballPorterFilterFactory" language="Finnish"/>
634         <!-- less aggressive: <filter class="solr.FinnishLightStemFilterFactory"/> -->
635       </analyzer>
636     </fieldType>
637    
638     <!-- French -->
639     <fieldType name="text_fr" class="solr.TextField" positionIncrementGap="100">
640       <analyzer>
641         <tokenizer class="solr.StandardTokenizerFactory"/>
642         <!-- removes l', etc -->
643         <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_fr.txt"/>
644         <filter class="solr.LowerCaseFilterFactory"/>
645         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_fr.txt" format="snowball" enablePositionIncrements="true"/>
646         <filter class="solr.FrenchLightStemFilterFactory"/>
647         <!-- less aggressive: <filter class="solr.FrenchMinimalStemFilterFactory"/> -->
648         <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="French"/> -->
649       </analyzer>
650     </fieldType>
651    
652     <!-- Irish -->
653     <fieldType name="text_ga" class="solr.TextField" positionIncrementGap="100">
654       <analyzer>
655         <tokenizer class="solr.StandardTokenizerFactory"/>
656         <!-- removes d', etc -->
657         <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_ga.txt"/>
658         <!-- removes n-, etc. position increments is intentionally false! -->
659         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/hyphenations_ga.txt" enablePositionIncrements="false"/>
660         <filter class="solr.IrishLowerCaseFilterFactory"/>
661         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ga.txt" enablePositionIncrements="true"/>
662         <filter class="solr.SnowballPorterFilterFactory" language="Irish"/>
663       </analyzer>
664     </fieldType>
665    
666     <!-- Galician -->
667     <fieldType name="text_gl" class="solr.TextField" positionIncrementGap="100">
668       <analyzer>
669         <tokenizer class="solr.StandardTokenizerFactory"/>
670         <filter class="solr.LowerCaseFilterFactory"/>
671         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_gl.txt" enablePositionIncrements="true"/>
672         <filter class="solr.GalicianStemFilterFactory"/>
673         <!-- less aggressive: <filter class="solr.GalicianMinimalStemFilterFactory"/> -->
674       </analyzer>
675     </fieldType>
676    
677     <!-- Hindi -->
678     <fieldType name="text_hi" class="solr.TextField" positionIncrementGap="100">
679       <analyzer>
680         <tokenizer class="solr.StandardTokenizerFactory"/>
681         <filter class="solr.LowerCaseFilterFactory"/>
682         <!-- normalizes unicode representation -->
683         <filter class="solr.IndicNormalizationFilterFactory"/>
684         <!-- normalizes variation in spelling -->
685         <filter class="solr.HindiNormalizationFilterFactory"/>
686         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hi.txt" enablePositionIncrements="true"/>
687         <filter class="solr.HindiStemFilterFactory"/>
688       </analyzer>
689     </fieldType>
690    
691     <!-- Hungarian -->
692     <fieldType name="text_hu" class="solr.TextField" positionIncrementGap="100">
693       <analyzer>
694         <tokenizer class="solr.StandardTokenizerFactory"/>
695         <filter class="solr.LowerCaseFilterFactory"/>
696         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hu.txt" format="snowball" enablePositionIncrements="true"/>
697         <filter class="solr.SnowballPorterFilterFactory" language="Hungarian"/>
698         <!-- less aggressive: <filter class="solr.HungarianLightStemFilterFactory"/> -->   
699       </analyzer>
700     </fieldType>
701    
702     <!-- Armenian -->
703     <fieldType name="text_hy" class="solr.TextField" positionIncrementGap="100">
704       <analyzer>
705         <tokenizer class="solr.StandardTokenizerFactory"/>
706         <filter class="solr.LowerCaseFilterFactory"/>
707         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hy.txt" enablePositionIncrements="true"/>
708         <filter class="solr.SnowballPorterFilterFactory" language="Armenian"/>
709       </analyzer>
710     </fieldType>
711    
712     <!-- Indonesian -->
713     <fieldType name="text_id" class="solr.TextField" positionIncrementGap="100">
714       <analyzer>
715         <tokenizer class="solr.StandardTokenizerFactory"/>
716         <filter class="solr.LowerCaseFilterFactory"/>
717         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_id.txt" enablePositionIncrements="true"/>
718         <!-- for a less aggressive approach (only inflectional suffixes), set stemDerivational to false -->
719         <filter class="solr.IndonesianStemFilterFactory" stemDerivational="true"/>
720       </analyzer>
721     </fieldType>
722    
723     <!-- Italian -->
724     <fieldType name="text_it" class="solr.TextField" positionIncrementGap="100">
725       <analyzer>
726         <tokenizer class="solr.StandardTokenizerFactory"/>
727         <!-- removes l', etc -->
728         <filter class="solr.ElisionFilterFactory" ignoreCase="true" articles="lang/contractions_it.txt"/>
729         <filter class="solr.LowerCaseFilterFactory"/>
730         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_it.txt" format="snowball" enablePositionIncrements="true"/>
731         <filter class="solr.ItalianLightStemFilterFactory"/>
732         <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="Italian"/> -->
733       </analyzer>
734     </fieldType>
735    
736     <!-- Japanese using morphological analysis (see text_cjk for a configuration using bigramming)
737
738          NOTE: If you want to optimize search for precision, use default operator AND in your query
739          parser config with <solrQueryParser defaultOperator="AND"/> further down in this file.  Use
740          OR if you would like to optimize for recall (default).
741     -->
742     <fieldType name="text_ja" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="false">
743       <analyzer>
744       <!-- Kuromoji Japanese morphological analyzer/tokenizer (JapaneseTokenizer)
745
746            Kuromoji has a search mode (default) that does segmentation useful for search.  A heuristic
747            is used to segment compounds into its parts and the compound itself is kept as synonym.
748
749            Valid values for attribute mode are:
750               normal: regular segmentation
751               search: segmentation useful for search with synonyms compounds (default)
752             extended: same as search mode, but unigrams unknown words (experimental)
753
754            For some applications it might be good to use search mode for indexing and normal mode for
755            queries to reduce recall and prevent parts of compounds from being matched and highlighted.
756            Use <analyzer type="index"> and <analyzer type="query"> for this and mode normal in query.
757
758            Kuromoji also has a convenient user dictionary feature that allows overriding the statistical
759            model with your own entries for segmentation, part-of-speech tags and readings without a need
760            to specify weights.  Notice that user dictionaries have not been subject to extensive testing.
761
762            User dictionary attributes are:
763                      userDictionary: user dictionary filename
764              userDictionaryEncoding: user dictionary encoding (default is UTF-8)
765
766            See lang/userdict_ja.txt for a sample user dictionary file.
767
768            See http://wiki.apache.org/solr/JapaneseLanguageSupport for more on Japanese language support.
769         -->
770         <tokenizer class="solr.JapaneseTokenizerFactory" mode="search"/>
771         <!--<tokenizer class="solr.JapaneseTokenizerFactory" mode="search" userDictionary="lang/userdict_ja.txt"/>-->
772         <!-- Reduces inflected verbs and adjectives to their base/dictionary forms (辞書形) -->
773         <filter class="solr.JapaneseBaseFormFilterFactory"/>
774         <!-- Removes tokens with certain part-of-speech tags -->
775         <filter class="solr.JapanesePartOfSpeechStopFilterFactory" tags="lang/stoptags_ja.txt" enablePositionIncrements="true"/>
776         <!-- Normalizes full-width romaji to half-width and half-width kana to full-width (Unicode NFKC subset) -->
777         <filter class="solr.CJKWidthFilterFactory"/>
778         <!-- Removes common tokens typically not useful for search, but have a negative effect on ranking -->
779         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ja.txt" enablePositionIncrements="true" />
780         <!-- Normalizes common katakana spelling variations by removing any last long sound character (U+30FC) -->
781         <filter class="solr.JapaneseKatakanaStemFilterFactory" minimumLength="4"/>
782         <!-- Lower-cases romaji characters -->
783         <filter class="solr.LowerCaseFilterFactory"/>
784       </analyzer>
785     </fieldType>
786    
787     <!-- Latvian -->
788     <fieldType name="text_lv" class="solr.TextField" positionIncrementGap="100">
789       <analyzer>
790         <tokenizer class="solr.StandardTokenizerFactory"/>
791         <filter class="solr.LowerCaseFilterFactory"/>
792         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_lv.txt" enablePositionIncrements="true"/>
793         <filter class="solr.LatvianStemFilterFactory"/>
794       </analyzer>
795     </fieldType>
796    
797     <!-- Dutch -->
798     <fieldType name="text_nl" class="solr.TextField" positionIncrementGap="100">
799       <analyzer>
800         <tokenizer class="solr.StandardTokenizerFactory"/>
801         <filter class="solr.LowerCaseFilterFactory"/>
802         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_nl.txt" format="snowball" enablePositionIncrements="true"/>
803         <filter class="solr.StemmerOverrideFilterFactory" dictionary="lang/stemdict_nl.txt" ignoreCase="false"/>
804         <filter class="solr.SnowballPorterFilterFactory" language="Dutch"/>
805       </analyzer>
806     </fieldType>
807    
808     <!-- Norwegian -->
809     <fieldType name="text_no" class="solr.TextField" positionIncrementGap="100">
810       <analyzer>
811         <tokenizer class="solr.StandardTokenizerFactory"/>
812         <filter class="solr.LowerCaseFilterFactory"/>
813         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_no.txt" format="snowball" enablePositionIncrements="true"/>
814         <filter class="solr.SnowballPorterFilterFactory" language="Norwegian"/>
815         <!-- less aggressive: <filter class="solr.NorwegianLightStemFilterFactory"/> -->
816         <!-- singular/plural: <filter class="solr.NorwegianMinimalStemFilterFactory"/> -->
817       </analyzer>
818     </fieldType>
819    
820     <!-- Portuguese -->
821     <fieldType name="text_pt" class="solr.TextField" positionIncrementGap="100">
822       <analyzer>
823         <tokenizer class="solr.StandardTokenizerFactory"/>
824         <filter class="solr.LowerCaseFilterFactory"/>
825         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_pt.txt" format="snowball" enablePositionIncrements="true"/>
826         <filter class="solr.PortugueseLightStemFilterFactory"/>
827         <!-- less aggressive: <filter class="solr.PortugueseMinimalStemFilterFactory"/> -->
828         <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="Portuguese"/> -->
829         <!-- most aggressive: <filter class="solr.PortugueseStemFilterFactory"/> -->
830       </analyzer>
831     </fieldType>
832    
833     <!-- Romanian -->
834     <fieldType name="text_ro" class="solr.TextField" positionIncrementGap="100">
835       <analyzer>
836         <tokenizer class="solr.StandardTokenizerFactory"/>
837         <filter class="solr.LowerCaseFilterFactory"/>
838         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ro.txt" enablePositionIncrements="true"/>
839         <filter class="solr.SnowballPorterFilterFactory" language="Romanian"/>
840       </analyzer>
841     </fieldType>
842    
843     <!-- Russian -->
844     <fieldType name="text_ru" class="solr.TextField" positionIncrementGap="100">
845       <analyzer>
846         <tokenizer class="solr.StandardTokenizerFactory"/>
847         <filter class="solr.LowerCaseFilterFactory"/>
848         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ru.txt" format="snowball" enablePositionIncrements="true"/>
849         <filter class="solr.SnowballPorterFilterFactory" language="Russian"/>
850         <!-- less aggressive: <filter class="solr.RussianLightStemFilterFactory"/> -->
851       </analyzer>
852     </fieldType>
853    
854     <!-- Swedish -->
855     <fieldType name="text_sv" class="solr.TextField" positionIncrementGap="100">
856       <analyzer>
857         <tokenizer class="solr.StandardTokenizerFactory"/>
858         <filter class="solr.LowerCaseFilterFactory"/>
859         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_sv.txt" format="snowball" enablePositionIncrements="true"/>
860         <filter class="solr.SnowballPorterFilterFactory" language="Swedish"/>
861         <!-- less aggressive: <filter class="solr.SwedishLightStemFilterFactory"/> -->
862       </analyzer>
863     </fieldType>
864    
865     <!-- Thai -->
866     <fieldType name="text_th" class="solr.TextField" positionIncrementGap="100">
867       <analyzer>
868         <tokenizer class="solr.StandardTokenizerFactory"/>
869         <filter class="solr.LowerCaseFilterFactory"/>
870         <filter class="solr.ThaiWordFilterFactory"/>
871         <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_th.txt" enablePositionIncrements="true"/>
872       </analyzer>
873     </fieldType>
874    
875     <!-- Turkish -->
876     <fieldType name="text_tr" class="solr.TextField" positionIncrementGap="100">
877       <analyzer>
878         <tokenizer class="solr.StandardTokenizerFactory"/>
879         <filter class="solr.TurkishLowerCaseFilterFactory"/>
880         <filter class="solr.StopFilterFactory" ignoreCase="false" words="lang/stopwords_tr.txt" enablePositionIncrements="true"/>
881         <filter class="solr.SnowballPorterFilterFactory" language="Turkish"/>
882       </analyzer>
883     </fieldType>
884  </types>
885
886
887  <fields>
888    <!-- Valid attributes for fields:
889      name: mandatory - the name for the field
890      type: mandatory - the name of a previously defined type from the
891        <types> section
892      indexed: true if this field should be indexed (searchable or sortable)
893      stored: true if this field should be retrievable
894      multiValued: true if this field may contain multiple values per document
895      omitNorms: (expert) set to true to omit the norms associated with
896        this field (this disables length normalization and index-time
897        boosting for the field, and saves some memory).  Only full-text
898        fields or fields that need an index-time boost need norms.
899        Norms are omitted for primitive (non-analyzed) types by default.
900      termVectors: [false] set to true to store the term vector for a
901        given field.
902        When using MoreLikeThis, fields used for similarity should be
903        stored for best performance.
904      termPositions: Store position information with the term vector. 
905        This will increase storage costs.
906      termOffsets: Store offset information with the term vector. This
907        will increase storage costs.
908      default: a value that should be used if no value is specified
909        when adding a document.
910    -->
911
912    <!-- key is a manufactured multi-part string - will be unique -->
913    <field name="key" type="string" indexed="true" stored="true" required="true" />
914
915    <!-- type of the indexed entity - related to class of object calendar/event etc-->
916    <field name="itemType" type="string" indexed="true" stored="true" required="true" />
917
918    <!-- type of an indexed event class - may be task/event etc-->
919    <field name="eventType" type="string" indexed="true" stored="true" />
920
921    <!-- name of the indexed entity -->
922    <field name="name" type="string" indexed="true" stored="true" required="true" />
923
924    <!-- path to the indexed entity -->
925    <field name="path" type="string" indexed="true" stored="true" required="true" />
926
927    <!--  Event/todo/journal fields  -->
928
929    <field name="uid" type="string" stored="true" />
930
931    <!-- start_utc and end_utc define the range
932         start_local is the local time in the entity - may be null
933         start_tzid is the timezone - may also be null
934         start_floating is the float flag
935      -->
936    <field name="start_utc" type="date" indexed="true" stored="true" />
937    <field name="start_local" type="string" stored="true" />
938    <field name="start_tzid" type="string" stored="true" />
939    <field name="start_floating" type="boolean" stored="true" />
940
941    <field name="end_utc" type="date" indexed="true" stored="true" />
942    <field name="end_local" type="string" stored="true" />
943    <field name="end_tzid" type="string" stored="true" />
944    <field name="end_floating" type="boolean" stored="true" />
945
946    <field name="start_present" type="boolean" stored="true" />
947    <field name="end_type" type="string" stored="true" />
948
949    <field name="recurrenceid" type="string" stored="true" />
950
951    <field name="comment" type="text_general" indexed="true" stored="true"/>
952    <field name="contact" type="text_general" indexed="true" stored="true"/>
953
954    <field name="status" type="string" stored="true" />
955    <field name="cost" type="string" stored="true"/>
956    <field name="image_url" type="string" stored="true"/>
957    <field name="thumb_image_url" type="string" stored="true"/>
958
959    <field name="location_str" type="text_general" indexed="true" stored="true"/>
960    <field name="location_uid" type="string" indexed="true" stored="true"/>
961    <field name="location" type="location" indexed="true" stored="true"/>
962
963    <field name="resources" type="text_general" indexed="true" stored="true" multiValued="true"/>
964    <field name="topical_area" type="string" indexed="true" stored="true" multiValued="true"/>
965
966    <!-- Event reg fields -->
967    
968    <field name="eventreg_max_tickets" type="string" stored="true"/>
969    <field name="eventreg_max_tickets_per_user" type="string" stored="true"/>
970    <field name="eventreg_start" type="string" stored="true"/>
971    <field name="eventreg_end" type="string" stored="true"/>
972    
973    <!--  Common fields  -->
974
975    <field name="summary" type="text_general" indexed="true" stored="true"/>
976    <field name="description" type="text_general" indexed="true" stored="true"/>
977
978    <field name="created" type="date" indexed="true" stored="true"/>
979    <field name="last_modified" type="date" indexed="true" stored="true"/>
980    <field name="category" type="text_general" indexed="true" stored="true" multiValued="true"/>
981    <field name="category_uid" type="string" indexed="true" multiValued="true"/>
982
983    <field name="creator" type="string" indexed="true" stored="true" required="true" />
984    <field name="owner" type="string" indexed="true" stored="true" required="true" />
985
986    <!-- catchall field, containing all other searchable text fields (implemented
987         via copyField further on in this schema  -->
988    <field name="default" type="text_general" indexed="true" stored="false" multiValued="true"/>
989
990    <!-- catchall text field that indexes tokens both normally and in reverse for efficient
991         leading wildcard queries. -->
992    <field name="default_rev" type="text_general_rev" indexed="true" stored="false" multiValued="true"/>
993
994    <!-- non-tokenized version of manufacturer to make it easier to sort or group
995         results by manufacturer.  copied from "manu" via copyField
996    <field name="manu_exact" type="string" indexed="true" stored="false"/>
997     -->
998  
999    <!-- A "timestamp" field using
1000         a default value of "NOW" to indicate when each document was indexed.
1001      -->
1002    <field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>
1003
1004    <!-- Dynamic field definitions.  If a field name is not found, dynamicFields
1005         will be used if the name matches any of the patterns.
1006         RESTRICTION: the glob-like pattern in the name attribute must have
1007         a "*" only at the start or the end.
1008         EXAMPLE:  name="*_i" will match any field ending in _i (like myid_i, z_i)
1009         Longer patterns will be matched first.  if equal size patterns
1010         both match, the first appearing in the schema will be used.  -->
1011    <dynamicField name="*_i"  type="int"    indexed="true"  stored="true"/>
1012    <dynamicField name="*_s"  type="string"  indexed="true"  stored="true"/>
1013    <dynamicField name="*_l"  type="long"   indexed="true"  stored="true"/>
1014    <dynamicField name="*_t"  type="text_general"    indexed="true"  stored="true"/>
1015    <dynamicField name="*_txt" type="text_general"    indexed="true"  stored="true" multiValued="true"/>
1016    <dynamicField name="*_en"  type="text_en"    indexed="true"  stored="true" multiValued="true" />
1017    <dynamicField name="*_b"  type="boolean" indexed="true"  stored="true"/>
1018    <dynamicField name="*_f"  type="float"  indexed="true"  stored="true"/>
1019    <dynamicField name="*_d"  type="double" indexed="true"  stored="true"/>
1020
1021    <!-- Type used to index the lat and lon components for the "location" FieldType -->
1022    <dynamicField name="*_coordinate"  type="tdouble" indexed="true"  stored="false"/>
1023
1024    <dynamicField name="*_dt" type="date"    indexed="true"  stored="true"/>
1025    <dynamicField name="*_p"  type="location" indexed="true" stored="true"/>
1026
1027    <!-- some trie-coded dynamic fields for faster range queries -->
1028    <dynamicField name="*_ti" type="tint"    indexed="true"  stored="true"/>
1029    <dynamicField name="*_tl" type="tlong"   indexed="true"  stored="true"/>
1030    <dynamicField name="*_tf" type="tfloat"  indexed="true"  stored="true"/>
1031    <dynamicField name="*_td" type="tdouble" indexed="true"  stored="true"/>
1032    <dynamicField name="*_tdt" type="tdate"  indexed="true"  stored="true"/>
1033    
1034    <!-- <dynamicField name="*_pi"  type="pint"    indexed="true"  stored="true"/> -->
1035    <dynamicField name="*_c"   type="currency" indexed="true"  stored="true"/>
1036
1037    <dynamicField name="ignored_*" type="ignored" multiValued="true"/>
1038    <dynamicField name="attr_*" type="text_general" indexed="true" stored="true" multiValued="true"/>
1039
1040    <dynamicField name="random_*" type="random" />
1041
1042    <!-- uncomment the following to ignore any fields that don't already match an existing
1043         field name or dynamic field, rather than reporting them as an error.
1044         alternately, change the type="ignored" to some other type e.g. "text" if you want
1045         unknown fields indexed and/or stored by default -->
1046    <!--dynamicField name="*" type="ignored" multiValued="true" /-->
1047    
1048  </fields>
1049
1050  <!-- Field to use to determine and enforce document uniqueness.
1051       Unless this field is marked with required="false", it will be a required field
1052    -->
1053  <uniqueKey>key</uniqueKey>
1054
1055   <!-- field for the QueryParser to use when an explicit fieldname is absent
1056  DEPRECATED: specify "df" in your request handler instead.
1057  <defaultSearchField>text</defaultSearchField> -->
1058
1059   <!-- SolrQueryParser configuration: defaultOperator="AND|OR"
1060  DEPRECATED: specify "q.op" in your request handler to switch from the default of OR.
1061  <solrQueryParser defaultOperator="OR"/> -->
1062
1063   <!-- copyField commands copy one field to another at the time a document
1064         is added to the index.  It's used either to index the same field differently,
1065         or to add multiple fields to the same field for easier/faster searching.  -->
1066
1067    <copyField source="comment" dest="default"/>
1068    <copyField source="contact" dest="default"/>
1069    <copyField source="location_str" dest="default"/>
1070    <copyField source="resources" dest="default"/>
1071    <copyField source="summary" dest="default"/>
1072    <copyField source="description" dest="default"/>
1073
1074    <!-- Above, multiple source fields are copied to the [text] field.
1075           Another way to map multiple source fields to the same
1076           destination field is to use the dynamic field syntax.
1077           copyField also supports a maxChars to copy setting.  -->
1078            
1079    <!-- <copyField source="*_t" dest="text" maxChars="3000"/> -->
1080
1081    <!-- copy name to alphaNameSort, a field designed for sorting by name -->
1082    <!-- <copyField source="name" dest="alphaNameSort"/> -->
1083  
1084
1085  <!-- Similarity is the scoring routine for each document vs. a query.
1086       A custom similarity may be specified here, but the default is fine
1087       for most applications.  -->
1088  <!-- <similarity class="org.apache.lucene.search.DefaultSimilarity"/> -->
1089  <!-- ... OR ...
1090       Specify a SimilarityFactory class name implementation
1091       allowing parameters to be used.
1092  -->
1093  <!--
1094  <similarity class="com.example.solr.CustomSimilarityFactory">
1095    <str name="paramkey">param value</str>
1096  </similarity>
1097  -->
1098
1099
1100 </schema>
Note: See TracBrowser for help on using the browser.