active-fedora 5.0.0.rc2 → 5.0.0.rc3

Sign up to get free protection for your applications and to get access to all the features.
@@ -238,14 +238,6 @@ describe ActiveFedora::Base do
238
238
  end
239
239
  end
240
240
 
241
- describe "#load_instance" do
242
- it "should return an object loaded from fedora" do
243
- ActiveSupport::Deprecation.expects(:warn).with("load_instance is deprecated. Use find instead")
244
- result = ActiveFedora::Base.load_instance(@test_object.pid)
245
- result.should be_instance_of(ActiveFedora::Base)
246
- end
247
- end
248
-
249
241
  describe ".datastreams" do
250
242
  it "should return a Hash of datastreams from fedora" do
251
243
  datastreams = @test_object.datastreams
@@ -47,16 +47,6 @@ describe ActiveFedora::Model do
47
47
  end
48
48
  end
49
49
 
50
-
51
- describe '#load_instance' do
52
- it "should return an object of the given Model whose inner object is nil" do
53
- ActiveSupport::Deprecation.expects(:warn).with("load_instance is deprecated. Use find instead")
54
- result = ModelIntegrationSpec::Basic.load_instance(@test_instance.pid)
55
- result.class.should == ModelIntegrationSpec::Basic
56
- result.inner_object.new?.should be_false
57
- end
58
- end
59
-
60
50
  describe "#load_instance_from_solr" do
61
51
  describe "with a valid pid" do
62
52
  subject { ActiveFedora::Base.load_instance_from_solr('hydrangea:fixture_mods_article1') }
@@ -1,6 +1,6 @@
1
1
  require "active-fedora"
2
- require 'samples/hydra-mods_article_datastream.rb'
3
- require 'samples/hydra-rights_metadata_datastream.rb'
2
+ require_relative '../hydra-mods_article_datastream.rb'
3
+ require_relative '../hydra-rights_metadata_datastream.rb'
4
4
 
5
5
  # This Model is used to load & index the hydrangea:fixture_mods_article1 fixture for use in tests.
6
6
  #
@@ -741,23 +741,6 @@ pending "This is broken, and deprecated. I don't want to fix it - jcoyne"
741
741
  end
742
742
  end
743
743
 
744
- it "should expose solr for real." do
745
- sinmock = mock('solr instance')
746
- conmock = mock("solr conn")
747
- sinmock.expects(:conn).returns(conmock)
748
- conmock.expects(:query).with('pid: foobar', {}).returns({:baz=>:bif})
749
- ActiveFedora::SolrService.expects(:instance).returns(sinmock)
750
- FooHistory.solr_search("pid: foobar").should == {:baz=>:bif}
751
- end
752
- it "should expose solr for real. and pass args through" do
753
- sinmock = mock('solr instance')
754
- conmock = mock("solr conn")
755
- sinmock.expects(:conn).returns(conmock)
756
- conmock.expects(:query).with('pid: foobar', {:ding => :dang}).returns({:baz=>:bif})
757
- ActiveFedora::SolrService.expects(:instance).returns(sinmock)
758
- FooHistory.solr_search("pid: foobar", {:ding=>:dang}).should == {:baz=>:bif}
759
- end
760
-
761
744
  describe '#relationships_by_name' do
762
745
 
763
746
  before do
@@ -18,14 +18,19 @@ describe ActiveFedora::Base do
18
18
  before_update :b_update
19
19
  after_update :a_update
20
20
  after_find :a_find
21
-
21
+
22
+ before_destroy :do_stuff
23
+
24
+ def do_stuff
25
+ :noop
26
+ end
22
27
  end
23
28
  end
24
29
  after :all do
25
30
  Object.send(:remove_const, :CallbackStub)
26
31
  end
27
32
 
28
- it "Should have after_initialize, before_save,after_save, before_create, after_create, after_update, before_update" do
33
+ it "Should have after_initialize, before_save,after_save, before_create, after_create, after_update, before_update, before_destroy" do
29
34
  CallbackStub.any_instance.expects(:a_init).twice
30
35
  CallbackStub.any_instance.expects :b_create
31
36
  CallbackStub.any_instance.expects :a_create
@@ -34,11 +39,13 @@ describe ActiveFedora::Base do
34
39
  CallbackStub.any_instance.expects(:a_find)
35
40
  CallbackStub.any_instance.expects(:b_update)
36
41
  CallbackStub.any_instance.expects(:a_update)
42
+ CallbackStub.any_instance.expects(:do_stuff)
37
43
  cb = CallbackStub.new
38
44
  cb.save
39
45
 
40
46
  cb2 = CallbackStub.find(cb.pid)
41
47
  cb2.save
42
- end
43
48
 
49
+ cb2.destroy
50
+ end
44
51
  end
@@ -194,21 +194,6 @@ describe ActiveFedora::Model do
194
194
  end
195
195
  end
196
196
 
197
- describe '#find_by_solr' do
198
- it "(:all) should query solr for all objects with :active_fedora_model_s of self.class and return a Solr result" do
199
- mock_response = mock("SolrResponse")
200
- ActiveFedora::SolrService.expects(:query).with('active_fedora_model_s:SpecModel\:\:Basic', {}).returns(mock_response)
201
-
202
- SpecModel::Basic.find_by_solr(:all).should equal(mock_response)
203
- end
204
- it "(String) should query solr for an object with the given id and return the Solr Result" do
205
- mock_response = mock("SolrResponse")
206
- ActiveFedora::SolrService.expects(:query).with('id:changeme\:30', {}).returns(mock_response)
207
-
208
- SpecModel::Basic.find_by_solr("changeme:30").should equal(mock_response)
209
- end
210
- end
211
-
212
197
  describe '#find_with_conditions' do
213
198
  it "should make a query to solr and return the results" do
214
199
  mock_result = stub('Result')
@@ -249,14 +234,6 @@ describe ActiveFedora::Model do
249
234
  end
250
235
  end
251
236
 
252
- describe "load_instance" do
253
- it "should use SpecModel::Basic.allocate.init_with to instantiate an object" do
254
- ActiveSupport::Deprecation.expects(:warn).with("load_instance is deprecated. Use find instead")
255
- SpecModel::Basic.expects(:find).with("_PID_")
256
- SpecModel::Basic.load_instance("_PID_")
257
- end
258
- end
259
-
260
237
  describe "URI translation" do
261
238
  before :all do
262
239
  module SpecModel
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active-fedora
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0.rc2
4
+ version: 5.0.0.rc3
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-11-12 00:00:00.000000000 Z
14
+ date: 2012-11-15 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rsolr
@@ -125,22 +125,6 @@ dependencies:
125
125
  - - ! '>='
126
126
  - !ruby/object:Gem::Version
127
127
  version: '0'
128
- - !ruby/object:Gem::Dependency
129
- name: equivalent-xml
130
- requirement: !ruby/object:Gem::Requirement
131
- none: false
132
- requirements:
133
- - - ! '>='
134
- - !ruby/object:Gem::Version
135
- version: '0'
136
- type: :runtime
137
- prerelease: false
138
- version_requirements: !ruby/object:Gem::Requirement
139
- none: false
140
- requirements:
141
- - - ! '>='
142
- - !ruby/object:Gem::Version
143
- version: '0'
144
128
  - !ruby/object:Gem::Dependency
145
129
  name: rubydora
146
130
  requirement: !ruby/object:Gem::Requirement
@@ -285,6 +269,22 @@ dependencies:
285
269
  - - ! '>='
286
270
  - !ruby/object:Gem::Version
287
271
  version: 2.9.0
272
+ - !ruby/object:Gem::Dependency
273
+ name: equivalent-xml
274
+ requirement: !ruby/object:Gem::Requirement
275
+ none: false
276
+ requirements:
277
+ - - ! '>='
278
+ - !ruby/object:Gem::Version
279
+ version: '0'
280
+ type: :development
281
+ prerelease: false
282
+ version_requirements: !ruby/object:Gem::Requirement
283
+ none: false
284
+ requirements:
285
+ - - ! '>='
286
+ - !ruby/object:Gem::Version
287
+ version: '0'
288
288
  - !ruby/object:Gem::Dependency
289
289
  name: mocha
290
290
  requirement: !ruby/object:Gem::Requirement
@@ -396,9 +396,6 @@ files:
396
396
  - script/generate
397
397
  - solr/conf/schema.xml
398
398
  - solr/conf/solrconfig.xml
399
- - solr/config/schema-1.5.xml
400
- - solr/config/schema.xml
401
- - solr/config/solrconfig-1.5.xml
402
399
  - spec/config_helper.rb
403
400
  - spec/fixtures/changeme155.xml
404
401
  - spec/fixtures/dino.jpg
@@ -421,7 +418,6 @@ files:
421
418
  - spec/hydrangea_fixture_mods_article1.foxml.xml
422
419
  - spec/integration/associations_spec.rb
423
420
  - spec/integration/base_file_management_spec.rb
424
- - spec/integration/base_find_by_fields_spec.rb
425
421
  - spec/integration/base_spec.rb
426
422
  - spec/integration/bug_spec.rb
427
423
  - spec/integration/datastream_collections_spec.rb
@@ -575,7 +571,6 @@ test_files:
575
571
  - spec/hydrangea_fixture_mods_article1.foxml.xml
576
572
  - spec/integration/associations_spec.rb
577
573
  - spec/integration/base_file_management_spec.rb
578
- - spec/integration/base_find_by_fields_spec.rb
579
574
  - spec/integration/base_spec.rb
580
575
  - spec/integration/bug_spec.rb
581
576
  - spec/integration/datastream_collections_spec.rb
@@ -1,468 +0,0 @@
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
- PERFORMANCE NOTE: this schema includes many optional features and should not
32
- be used for benchmarking. To improve performance one could
33
- - set stored="false" for all fields possible (esp large fields) when you
34
- only need to search on the field but don't need to return the original
35
- value.
36
- - set indexed="false" if you don't need to search on the field, but only
37
- return the field as a result of searching on other indexed fields.
38
- - remove all unneeded copyField statements
39
- - for best index size and searching performance, set "index" to false
40
- for all general text fields, use copyField to copy them to the
41
- catchall "text" field, and use that for searching.
42
- - For maximum indexing performance, use the StreamingUpdateSolrServer
43
- java client.
44
- - Remember to run the JVM in server mode, and use a higher logging level
45
- that avoids logging every request
46
- -->
47
-
48
- <schema name="active-fedora" version="1.9">
49
- <!-- attribute "name" is the name of this schema and is only used for display purposes.
50
- Applications should change this to reflect the nature of the search collection.
51
- version="1.2" is Solr's version number for the schema syntax and semantics. It should
52
- not normally be changed by applications.
53
- 1.0: multiValued attribute did not exist, all fields are multiValued by nature
54
- 1.1: multiValued attribute introduced, false by default
55
- 1.2: omitTermFreqAndPositions attribute introduced, true by default except for text fields.
56
- -->
57
-
58
- <types>
59
- <!-- field type definitions. The "name" attribute is
60
- just a label to be used by field definitions. The "class"
61
- attribute and any other attributes determine the real
62
- behavior of the fieldType.
63
- Class names starting with "solr" refer to java classes in the
64
- org.apache.solr.analysis package.
65
- -->
66
-
67
- <!-- The StrField type is not analyzed, but indexed/stored verbatim.
68
- - StrField and TextField support an optional compressThreshold which
69
- limits compression (if enabled in the derived fields) to values which
70
- exceed a certain size (in characters).
71
- -->
72
- <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
73
-
74
- <!-- boolean type: "true" or "false" -->
75
- <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/>
76
- <!--Binary data type. The data should be sent/retrieved in as Base64 encoded Strings -->
77
- <fieldtype name="binary" class="solr.BinaryField"/>
78
-
79
- <!-- The optional sortMissingLast and sortMissingFirst attributes are
80
- currently supported on types that are sorted internally as strings.
81
- This includes "string","boolean","sint","slong","sfloat","sdouble","pdate"
82
- - If sortMissingLast="true", then a sort on this field will cause documents
83
- without the field to come after documents with the field,
84
- regardless of the requested sort order (asc or desc).
85
- - If sortMissingFirst="true", then a sort on this field will cause documents
86
- without the field to come before documents with the field,
87
- regardless of the requested sort order.
88
- - If sortMissingLast="false" and sortMissingFirst="false" (the default),
89
- then default lucene sorting will be used which places docs without the
90
- field first in an ascending sort and last in a descending sort.
91
- -->
92
-
93
- <!--
94
- Default numeric field types. For faster range queries, consider the tint/tfloat/tlong/tdouble types.
95
- -->
96
- <fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
97
- <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
98
- <fieldType name="long" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
99
- <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
100
-
101
- <!--
102
- Numeric field types that index each value at various levels of precision
103
- to accelerate range queries when the number of values between the range
104
- endpoints is large. See the javadoc for NumericRangeQuery for internal
105
- implementation details.
106
-
107
- Smaller precisionStep values (specified in bits) will lead to more tokens
108
- indexed per value, slightly larger index size, and faster range queries.
109
- A precisionStep of 0 disables indexing at different precision levels.
110
- -->
111
- <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
112
- <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
113
- <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
114
- <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
115
-
116
- <!-- The format for this date field is of the form 1995-12-31T23:59:59Z, and
117
- is a more restricted form of the canonical representation of dateTime
118
- http://www.w3.org/TR/xmlschema-2/#dateTime
119
- The trailing "Z" designates UTC time and is mandatory.
120
- Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
121
- All other components are mandatory.
122
-
123
- Expressions can also be used to denote calculations that should be
124
- performed relative to "NOW" to determine the value, ie...
125
-
126
- NOW/HOUR
127
- ... Round to the start of the current hour
128
- NOW-1DAY
129
- ... Exactly 1 day prior to now
130
- NOW/DAY+6MONTHS+3DAYS
131
- ... 6 months and 3 days in the future from the start of
132
- the current day
133
-
134
- Consult the DateField javadocs for more information.
135
-
136
- Note: For faster range queries, consider the tdate type
137
- -->
138
- <fieldType name="date" class="solr.TrieDateField" omitNorms="true" precisionStep="0" positionIncrementGap="0"/>
139
-
140
- <!-- A Trie based date field for faster date range queries and date faceting. -->
141
- <fieldType name="tdate" class="solr.TrieDateField" omitNorms="true" precisionStep="6" positionIncrementGap="0"/>
142
-
143
-
144
- <!--
145
- Note:
146
- These should only be used for compatibility with existing indexes (created with older Solr versions)
147
- or if "sortMissingFirst" or "sortMissingLast" functionality is needed. Use Trie based fields instead.
148
-
149
- Plain numeric field types that store and index the text
150
- value verbatim (and hence don't support range queries, since the
151
- lexicographic ordering isn't equal to the numeric ordering)
152
- -->
153
- <fieldType name="pint" class="solr.IntField" omitNorms="true"/>
154
- <fieldType name="plong" class="solr.LongField" omitNorms="true"/>
155
- <fieldType name="pfloat" class="solr.FloatField" omitNorms="true"/>
156
- <fieldType name="pdouble" class="solr.DoubleField" omitNorms="true"/>
157
- <fieldType name="pdate" class="solr.DateField" sortMissingLast="true" omitNorms="true"/>
158
-
159
-
160
- <!--
161
- Note:
162
- These should only be used for compatibility with existing indexes (created with older Solr versions)
163
- or if "sortMissingFirst" or "sortMissingLast" functionality is needed. Use Trie based fields instead.
164
-
165
- Numeric field types that manipulate the value into
166
- a string value that isn't human-readable in its internal form,
167
- but with a lexicographic ordering the same as the numeric ordering,
168
- so that range queries work correctly.
169
- -->
170
- <fieldType name="sint" class="solr.SortableIntField" sortMissingLast="true" omitNorms="true"/>
171
- <fieldType name="slong" class="solr.SortableLongField" sortMissingLast="true" omitNorms="true"/>
172
- <fieldType name="sfloat" class="solr.SortableFloatField" sortMissingLast="true" omitNorms="true"/>
173
- <fieldType name="sdouble" class="solr.SortableDoubleField" sortMissingLast="true" omitNorms="true"/>
174
-
175
-
176
- <!-- The "RandomSortField" is not used to store or search any
177
- data. You can declare fields of this type it in your schema
178
- to generate pseudo-random orderings of your docs for sorting
179
- purposes. The ordering is generated based on the field name
180
- and the version of the index, As long as the index version
181
- remains unchanged, and the same field name is reused,
182
- the ordering of the docs will be consistent.
183
- If you want different psuedo-random orderings of documents,
184
- for the same version of the index, use a dynamicField and
185
- change the name
186
- -->
187
- <fieldType name="random" class="solr.RandomSortField" indexed="true" />
188
-
189
- <!-- solr.TextField allows the specification of custom text analyzers
190
- specified as a tokenizer and a list of token filters. Different
191
- analyzers may be specified for indexing and querying.
192
-
193
- The optional positionIncrementGap puts space between multiple fields of
194
- this type on the same document, with the purpose of preventing false phrase
195
- matching across fields.
196
-
197
- For more info on customizing your analyzer chain, please see
198
- http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters
199
- -->
200
-
201
- <!-- One can also specify an existing Analyzer class that has a
202
- default constructor via the class attribute on the analyzer element
203
- <fieldType name="text_greek" class="solr.TextField">
204
- <analyzer class="org.apache.lucene.analysis.el.GreekAnalyzer"/>
205
- </fieldType>
206
- -->
207
-
208
- <!-- A text field that only splits on whitespace for exact matching of words -->
209
- <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
210
- <analyzer>
211
- <tokenizer class="solr.WhitespaceTokenizerFactory"/>
212
- </analyzer>
213
- </fieldType>
214
-
215
- <!-- A text field that uses WordDelimiterFilter to enable splitting and matching of
216
- words on case-change, alpha numeric boundaries, and non-alphanumeric chars,
217
- so that a query of "wifi" or "wi fi" could match a document containing "Wi-Fi".
218
- Synonyms and stopwords are customized by external files, and stemming is enabled.
219
- -->
220
- <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
221
- <analyzer type="index">
222
- <tokenizer class="solr.WhitespaceTokenizerFactory"/>
223
- <!-- in this example, we will only use synonyms at query time
224
- <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
225
- -->
226
- <!-- Case insensitive stop word removal.
227
- add enablePositionIncrements=true in both the index and query
228
- analyzers to leave a 'gap' for more accurate phrase queries.
229
- -->
230
- <filter class="solr.StopFilterFactory"
231
- ignoreCase="true"
232
- words="stopwords.txt"
233
- enablePositionIncrements="true"
234
- />
235
- <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
236
- <filter class="solr.LowerCaseFilterFactory"/>
237
- <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
238
- </analyzer>
239
- <analyzer type="query">
240
- <tokenizer class="solr.WhitespaceTokenizerFactory"/>
241
- <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
242
- <filter class="solr.StopFilterFactory"
243
- ignoreCase="true"
244
- words="stopwords.txt"
245
- enablePositionIncrements="true"
246
- />
247
- <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
248
- <filter class="solr.LowerCaseFilterFactory"/>
249
- <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
250
- </analyzer>
251
- </fieldType>
252
-
253
-
254
- <!-- Less flexible matching, but less false matches. Probably not ideal for product names,
255
- but may be good for SKUs. Can insert dashes in the wrong place and still match. -->
256
- <fieldType name="textTight" class="solr.TextField" positionIncrementGap="100" >
257
- <analyzer>
258
- <tokenizer class="solr.WhitespaceTokenizerFactory"/>
259
- <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
260
- <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
261
- <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
262
- <filter class="solr.LowerCaseFilterFactory"/>
263
- <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
264
- <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
265
- possible with WordDelimiterFilter in conjuncton with stemming. -->
266
- <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
267
- </analyzer>
268
- </fieldType>
269
-
270
-
271
- <!-- A general unstemmed text field - good if one does not know the language of the field -->
272
- <fieldType name="textgen" class="solr.TextField" positionIncrementGap="100">
273
- <analyzer type="index">
274
- <tokenizer class="solr.WhitespaceTokenizerFactory"/>
275
- <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
276
- <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
277
- <filter class="solr.LowerCaseFilterFactory"/>
278
- </analyzer>
279
- <analyzer type="query">
280
- <tokenizer class="solr.WhitespaceTokenizerFactory"/>
281
- <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
282
- <filter class="solr.StopFilterFactory"
283
- ignoreCase="true"
284
- words="stopwords.txt"
285
- enablePositionIncrements="true"
286
- />
287
- <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
288
- <filter class="solr.LowerCaseFilterFactory"/>
289
- </analyzer>
290
- </fieldType>
291
-
292
-
293
- <!-- A general unstemmed text field that indexes tokens normally and also
294
- reversed (via ReversedWildcardFilterFactory), to enable more efficient
295
- leading wildcard queries. -->
296
- <fieldType name="text_rev" class="solr.TextField" positionIncrementGap="100">
297
- <analyzer type="index">
298
- <tokenizer class="solr.WhitespaceTokenizerFactory"/>
299
- <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
300
- <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
301
- <filter class="solr.LowerCaseFilterFactory"/>
302
- <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true"
303
- maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
304
- </analyzer>
305
- <analyzer type="query">
306
- <tokenizer class="solr.WhitespaceTokenizerFactory"/>
307
- <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
308
- <filter class="solr.StopFilterFactory"
309
- ignoreCase="true"
310
- words="stopwords.txt"
311
- enablePositionIncrements="true"
312
- />
313
- <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
314
- <filter class="solr.LowerCaseFilterFactory"/>
315
- </analyzer>
316
- </fieldType>
317
-
318
- <!-- charFilter + WhitespaceTokenizer -->
319
- <!--
320
- <fieldType name="textCharNorm" class="solr.TextField" positionIncrementGap="100" >
321
- <analyzer>
322
- <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
323
- <tokenizer class="solr.WhitespaceTokenizerFactory"/>
324
- </analyzer>
325
- </fieldType>
326
- -->
327
-
328
- <!-- This is an example of using the KeywordTokenizer along
329
- With various TokenFilterFactories to produce a sortable field
330
- that does not include some properties of the source text
331
- -->
332
- <fieldType name="alphaOnlySort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
333
- <analyzer>
334
- <!-- KeywordTokenizer does no actual tokenizing, so the entire
335
- input string is preserved as a single token
336
- -->
337
- <tokenizer class="solr.KeywordTokenizerFactory"/>
338
- <!-- The LowerCase TokenFilter does what you expect, which can be
339
- when you want your sorting to be case insensitive
340
- -->
341
- <filter class="solr.LowerCaseFilterFactory" />
342
- <!-- The TrimFilter removes any leading or trailing whitespace -->
343
- <filter class="solr.TrimFilterFactory" />
344
- <!-- The PatternReplaceFilter gives you the flexibility to use
345
- Java Regular expression to replace any sequence of characters
346
- matching a pattern with an arbitrary replacement string,
347
- which may include back references to portions of the original
348
- string matched by the pattern.
349
-
350
- See the Java Regular Expression documentation for more
351
- information on pattern and replacement string syntax.
352
-
353
- http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/package-summary.html
354
- -->
355
- <filter class="solr.PatternReplaceFilterFactory"
356
- pattern="([^a-z])" replacement="" replace="all"
357
- />
358
- </analyzer>
359
- </fieldType>
360
-
361
- <fieldtype name="phonetic" stored="false" indexed="true" class="solr.TextField" >
362
- <analyzer>
363
- <tokenizer class="solr.StandardTokenizerFactory"/>
364
- <filter class="solr.DoubleMetaphoneFilterFactory" inject="false"/>
365
- </analyzer>
366
- </fieldtype>
367
-
368
- <fieldtype name="payloads" stored="false" indexed="true" class="solr.TextField" >
369
- <analyzer>
370
- <tokenizer class="solr.WhitespaceTokenizerFactory"/>
371
- <!--
372
- The DelimitedPayloadTokenFilter can put payloads on tokens... for example,
373
- a token of "foo|1.4" would be indexed as "foo" with a payload of 1.4f
374
- Attributes of the DelimitedPayloadTokenFilterFactory :
375
- "delimiter" - a one character delimiter. Default is | (pipe)
376
- "encoder" - how to encode the following value into a playload
377
- float -> org.apache.lucene.analysis.payloads.FloatEncoder,
378
- integer -> o.a.l.a.p.IntegerEncoder
379
- identity -> o.a.l.a.p.IdentityEncoder
380
- Fully Qualified class name implementing PayloadEncoder, Encoder must have a no arg constructor.
381
- -->
382
- <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float"/>
383
- </analyzer>
384
- </fieldtype>
385
-
386
- <!-- lowercases the entire field value, keeping it as a single token. -->
387
- <fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
388
- <analyzer>
389
- <tokenizer class="solr.KeywordTokenizerFactory"/>
390
- <filter class="solr.LowerCaseFilterFactory" />
391
- </analyzer>
392
- </fieldType>
393
-
394
-
395
- <!-- since fields of this type are by default not stored or indexed,
396
- any data added to them will be ignored outright. -->
397
- <fieldtype name="ignored" stored="false" indexed="false" multiValued="true" class="solr.StrField" />
398
-
399
- <!-- This point type indexes the coordinates as separate fields (subFields)
400
- If subFieldType is defined, it references a type, and a dynamic field
401
- definition is created matching *___<typename>. Alternately, if
402
- subFieldSuffix is defined, that is used to create the subFields.
403
- Example: if subFieldType="double", then the coordinates would be
404
- indexed in fields myloc_0___double,myloc_1___double.
405
- Example: if subFieldSuffix="_d" then the coordinates would be indexed
406
- in fields myloc_0_d,myloc_1_d
407
- The subFields are an implementation detail of the fieldType, and end
408
- users normally should not need to know about them.
409
- -->
410
- <fieldType name="location" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>
411
-
412
- <!--
413
- A Geohash is a compact representation of a latitude longitude pair in a single field.
414
-
415
- See http://wiki.apache.org/solr/SpatialSearch
416
- -->
417
- <fieldtype name="geohash" class="solr.GeoHashField"/>
418
-
419
- <!--
420
- A SpatialTileField is like a set of zoom levels on an interactive map (i.e. Google Maps or MapQuest). It takes a lat/lon
421
- field and indexes it into (end - start) different fields, each representing a different zoom level.
422
- This can then be leveraged to quickly narrow the search space by creating a filter, at an appropriate tier level,
423
- that only has to enumerate a minimum number of terms.
424
-
425
- See http://wiki.apache.org/solr/SpatialSearch
426
- -->
427
- <fieldType name="tile" class="solr.SpatialTileField" start="4" end="15" subFieldSuffix="_tiled"/>
428
-
429
- <fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100" >
430
- <analyzer>
431
- <tokenizer class="solr.StandardTokenizerFactory"/>
432
- <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
433
- <filter class="solr.StandardFilterFactory"/>
434
- <filter class="solr.LowerCaseFilterFactory"/>
435
- <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
436
- </analyzer>
437
- </fieldType>
438
-
439
- </types>
440
-
441
-
442
- <fields>
443
- <field name="id" type="string" indexed="true" stored="true" required="true" />
444
- <field name="text" type="text" indexed="true" stored="false" multiValued="true"/>
445
- <field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>
446
- <field name="spell" type="textSpell" indexed="true" stored="true" multiValued="true"/>
447
- <dynamicField name="*_i" type="sint" indexed="true" stored="true"/>
448
- <dynamicField name="*_s" type="string" indexed="true" stored="true" multiValued="true"/>
449
- <dynamicField name="*_l" type="slong" indexed="true" stored="true"/>
450
- <dynamicField name="*_t" type="text" indexed="true" stored="true" multiValued="true"/>
451
- <dynamicField name="*_b" type="boolean" indexed="true" stored="true"/>
452
- <dynamicField name="*_f" type="sfloat" indexed="true" stored="true"/>
453
- <dynamicField name="*_d" type="sdouble" indexed="true" stored="true"/>
454
- <dynamicField name="*_dt" type="date" indexed="true" stored="true"/>
455
- <dynamicField name="random*" type="random" />
456
- <dynamicField name="*_facet" type="string" indexed="true" stored="true" multiValued="true" />
457
- <dynamicField name="*_display" type="string" indexed="false" stored="true" />
458
- </fields>
459
-
460
-
461
- <uniqueKey>id</uniqueKey>
462
- <defaultSearchField>text</defaultSearchField>
463
- <solrQueryParser defaultOperator="OR"/>
464
- <copyField source="*_facet" dest="text"/>
465
-
466
-
467
-
468
- </schema>