hydra-works 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/.rubocop.yml +0 -1
- data/README.md +9 -9
- data/Rakefile +12 -12
- data/hydra-works.gemspec +3 -3
- data/lib/hydra/works/models/characterization/fits_datastream.rb +1 -1
- data/lib/hydra/works/models/work.rb +4 -1
- data/lib/hydra/works/services/add_file_to_file_set.rb +5 -5
- data/lib/hydra/works/services/characterization_service.rb +2 -2
- data/lib/hydra/works/version.rb +1 -1
- data/lib/hydra/works.rb +1 -1
- data/solr/config/_rest_managed.json +3 -0
- data/solr/config/admin-extra.html +31 -0
- data/solr/config/elevate.xml +36 -0
- data/solr/config/mapping-ISOLatin1Accent.txt +246 -0
- data/solr/config/protwords.txt +21 -0
- data/solr/config/schema.xml +372 -0
- data/solr/config/scripts.conf +24 -0
- data/solr/config/solrconfig.xml +419 -0
- data/solr/config/spellings.txt +2 -0
- data/solr/config/stopwords.txt +58 -0
- data/solr/config/stopwords_en.txt +58 -0
- data/solr/config/synonyms.txt +31 -0
- data/solr/config/xslt/example.xsl +132 -0
- data/solr/config/xslt/example_atom.xsl +67 -0
- data/solr/config/xslt/example_rss.xsl +66 -0
- data/solr/config/xslt/luke.xsl +337 -0
- data/spec/hydra/works/models/collection_spec.rb +17 -17
- data/spec/hydra/works/models/file_set_spec.rb +8 -8
- data/spec/hydra/works/models/{generic_work_spec.rb → work_spec.rb} +57 -57
- data/spec/hydra/works/services/add_file_to_file_set_spec.rb +23 -23
- data/spec/hydra/works/services/upload_file_spec.rb +22 -22
- data/spec/hydra/works_spec.rb +18 -18
- data/spec/spec_helper.rb +3 -2
- metadata +36 -24
- data/config/solrconfig.xml +0 -223
- data/lib/hydra/works/models/generic_work.rb +0 -9
- data/lib/tasks/hydra-works_tasks.rake +0 -89
- data/lib/tasks/jetty.rake +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 56fe0f1919fdd32fe127f5d3e0fc759eb781d74d
|
4
|
+
data.tar.gz: a6f9183d56fd7911150ca4ce152bb5280471135c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 98a261ed13442400b6f41cb607d4b32e0f9fe8297ddd463d919ee1b69e19cb5704c1d41659566ad0f77b2f521b3ec140f3990b7eddc8b78af203bafbfc562eff
|
7
|
+
data.tar.gz: 65a823283ea04b931451b685c8dc19bed6b666ea18199cc7a23c6140e463c243c2eb6b1afa5b47e8df18b2eea0d4839acb632eaf2df3d6ff812162d94169d3e3
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
data/README.md
CHANGED
@@ -11,9 +11,9 @@
|
|
11
11
|
|
12
12
|
The Hydra::Works gem provides a set of [Portland Common Data Model](https://github.com/duraspace/pcdm/wiki)-compliant ActiveFedora models and associated behaviors around the broad concept of multi-file "works", the need for which was expressed by a variety of [community use cases](https://github.com/projecthydra-labs/hydra-works/tree/master/use-cases). The Hydra::Works domain model includes:
|
13
13
|
|
14
|
-
* **FileSet**: a *Hydra::PCDM::Object* that encapsulates one or more directly related *Hydra::PCDM::
|
15
|
-
* **
|
16
|
-
* **Collection**: a *Hydra::PCDM::Collection* that indirectly contains zero or more **
|
14
|
+
* **FileSet**: a *Hydra::PCDM::Object* that encapsulates one or more directly related *Hydra::PCDM::Files*, such as a PDF document, its derivatives, and extracted full-text
|
15
|
+
* **Work**: a *Hydra::PCDM::Object* that holds zero or more **FileSets** and zero or more **Works** (often you won't use Work directly, but instead write your own class that mixes in `Hydra::Works::WorkBehavior`)
|
16
|
+
* **Collection**: a *Hydra::PCDM::Collection* that indirectly contains zero or more **Works** and zero or more **Collection**s
|
17
17
|
|
18
18
|
View [a diagram of the domain model](https://docs.google.com/drawings/d/1-NkkRPpGpZGoTimEpYTaGM1uUPRaT0SamuWDITvtG_8/edit).
|
19
19
|
|
@@ -51,12 +51,13 @@ class Page < ActiveFedora::Base
|
|
51
51
|
end
|
52
52
|
|
53
53
|
collection = Collection.create
|
54
|
-
book =
|
54
|
+
book = Book.create
|
55
55
|
page = Page.create
|
56
56
|
|
57
|
-
collection.
|
57
|
+
collection.members << book
|
58
58
|
collection.save
|
59
|
-
|
59
|
+
|
60
|
+
book.members << page
|
60
61
|
book.save
|
61
62
|
|
62
63
|
file = page.files.build
|
@@ -73,7 +74,7 @@ To turn on virus detection, install clamav on your system and add the `clamav` g
|
|
73
74
|
Then include the `VirusCheck` module in your `FileSet` class:
|
74
75
|
|
75
76
|
```ruby
|
76
|
-
class
|
77
|
+
class Page < ActiveFedora::Base
|
77
78
|
include Hydra::Works::FileSetBehavior
|
78
79
|
include Hydra::Works::VirusCheck
|
79
80
|
end
|
@@ -92,10 +93,9 @@ If you'd like to contribute to this effort, please check out the [contributing g
|
|
92
93
|
To set up for running the test suite, you need a copy of jetty
|
93
94
|
|
94
95
|
$ rake jetty:clean
|
95
|
-
$ rake jetty:config
|
96
|
+
$ rake hydra_works:jetty:config
|
96
97
|
|
97
98
|
To run the test suite, generate the test app (which goes into spec/internal) and start jetty (if it's not already running)
|
98
99
|
|
99
|
-
$ rails engine_cart:generate
|
100
100
|
$ rake jetty:start
|
101
101
|
$ rake spec
|
data/Rakefile
CHANGED
@@ -1,11 +1,9 @@
|
|
1
1
|
require 'bundler/gem_tasks'
|
2
|
-
require 'jettywrapper'
|
3
2
|
require 'rspec/core'
|
4
3
|
require 'rspec/core/rake_task'
|
5
|
-
require 'engine_cart/rake_task'
|
6
4
|
require 'rubocop/rake_task'
|
7
|
-
|
8
|
-
|
5
|
+
require 'solr_wrapper'
|
6
|
+
require 'fcrepo_wrapper'
|
9
7
|
|
10
8
|
desc 'Run style checker'
|
11
9
|
RuboCop::RakeTask.new(:rubocop) do |task|
|
@@ -19,15 +17,17 @@ task :spec do
|
|
19
17
|
RSpec::Core::RakeTask.new(:spec)
|
20
18
|
end
|
21
19
|
|
22
|
-
desc 'Spin up
|
23
|
-
task ci
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
20
|
+
desc 'Spin up Solr & Fedora and run the test suite'
|
21
|
+
task :ci do
|
22
|
+
solr_params = { port: 8983, verbose: true, managed: true }
|
23
|
+
fcrepo_params = { port: 8984, verbose: true, managed: true }
|
24
|
+
SolrWrapper.wrap(solr_params) do |solr|
|
25
|
+
solr.with_collection(name: 'hydra-test', dir: File.join(File.expand_path('.', File.dirname(__FILE__)), 'solr', 'config')) do
|
26
|
+
FcrepoWrapper.wrap(fcrepo_params) do
|
27
|
+
Rake::Task['spec'].invoke
|
28
|
+
end
|
29
|
+
end
|
29
30
|
end
|
30
|
-
fail "test failures: #{error}" if error
|
31
31
|
end
|
32
32
|
|
33
33
|
task default: :ci
|
data/hydra-works.gemspec
CHANGED
@@ -18,16 +18,16 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_dependency 'hydra-pcdm', '~> 0.
|
21
|
+
spec.add_dependency 'hydra-pcdm', '~> 0.4'
|
22
22
|
spec.add_dependency 'hydra-derivatives', '~> 3.0'
|
23
23
|
spec.add_dependency 'hydra-file_characterization', '~> 0.3', '>= 0.3.3'
|
24
24
|
|
25
25
|
spec.add_development_dependency 'bundler', '~> 1.7'
|
26
26
|
spec.add_development_dependency 'rake', '~> 10.0'
|
27
27
|
spec.add_development_dependency 'rspec-rails', '~> 3.1'
|
28
|
-
spec.add_development_dependency 'engine_cart', '~> 0'
|
29
28
|
spec.add_development_dependency 'sqlite3'
|
30
|
-
spec.add_development_dependency '
|
29
|
+
spec.add_development_dependency 'solr_wrapper', '~> 0.4'
|
30
|
+
spec.add_development_dependency 'fcrepo_wrapper', '~> 0.1'
|
31
31
|
spec.add_development_dependency 'coveralls'
|
32
32
|
spec.add_development_dependency 'rspec'
|
33
33
|
end
|
@@ -100,7 +100,7 @@ module Hydra::Works::Characterization
|
|
100
100
|
t.copyright_note(proxy: [:fileinfo, :copyright_note])
|
101
101
|
t.well_formed(proxy: [:filestatus, :well_formed])
|
102
102
|
t.valid(proxy: [:filestatus, :valid])
|
103
|
-
t.
|
103
|
+
t.filestatus_message(proxy: [:filestatus, :status_message])
|
104
104
|
t.file_title(proxy: [:metadata, :document, :file_title])
|
105
105
|
t.file_author(proxy: [:metadata, :document, :file_author])
|
106
106
|
t.page_count(proxy: [:metadata, :document, :page_count])
|
@@ -1,5 +1,8 @@
|
|
1
1
|
module Hydra::Works
|
2
|
-
#
|
2
|
+
# Typically used for very generic applications that don't differentiate
|
3
|
+
# between specific content types. If you want a specific type of work
|
4
|
+
# extend ActiveFedora::Base and include the following:
|
5
|
+
# include Hydra::Works::WorkBehavior
|
3
6
|
class Work < ActiveFedora::Base
|
4
7
|
include Hydra::Works::WorkBehavior
|
5
8
|
end
|
@@ -8,7 +8,7 @@ module Hydra::Works
|
|
8
8
|
# @param [Boolean] versioning whether to create new version entries (only applicable if +type+ corresponds to a versionable file)
|
9
9
|
|
10
10
|
def self.call(file_set, file, type, update_existing: true, versioning: true)
|
11
|
-
fail ArgumentError, 'supplied object must be a
|
11
|
+
fail ArgumentError, 'supplied object must be a file set' unless file_set.file_set?
|
12
12
|
fail ArgumentError, 'supplied file must respond to read' unless file.respond_to? :read
|
13
13
|
|
14
14
|
# TODO: required as a workaround for https://github.com/projecthydra/active_fedora/pull/858
|
@@ -71,13 +71,13 @@ module Hydra::Works
|
|
71
71
|
# @param object for original name to be determined. Attempts to use methods: :original_name, :original_filename, and :path.
|
72
72
|
def determine_original_name(file)
|
73
73
|
if file.respond_to? :original_name
|
74
|
-
|
74
|
+
file.original_name
|
75
75
|
elsif file.respond_to? :original_filename
|
76
|
-
|
76
|
+
file.original_filename
|
77
77
|
elsif file.respond_to? :path
|
78
|
-
|
78
|
+
::File.basename(file.path)
|
79
79
|
else
|
80
|
-
|
80
|
+
''
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
data/lib/hydra/works/version.rb
CHANGED
data/lib/hydra/works.rb
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
<!--
|
2
|
+
Licensed to the Apache Software Foundation (ASF) under one or more
|
3
|
+
contributor license agreements. See the NOTICE file distributed with
|
4
|
+
this work for additional information regarding copyright ownership.
|
5
|
+
The ASF licenses this file to You under the Apache License, Version 2.0
|
6
|
+
(the "License"); you may not use this file except in compliance with
|
7
|
+
the License. You may obtain a copy of the License at
|
8
|
+
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
See the License for the specific language governing permissions and
|
15
|
+
limitations under the License.
|
16
|
+
-->
|
17
|
+
|
18
|
+
<!-- The content of this page will be statically included into the top
|
19
|
+
of the admin page. Uncomment this as an example to see there the content
|
20
|
+
will show up.
|
21
|
+
|
22
|
+
<hr>
|
23
|
+
<i>This line will appear before the first table</i>
|
24
|
+
<tr>
|
25
|
+
<td colspan="2">
|
26
|
+
This row will be appended to the end of the first table
|
27
|
+
</td>
|
28
|
+
</tr>
|
29
|
+
<hr>
|
30
|
+
|
31
|
+
-->
|
@@ -0,0 +1,36 @@
|
|
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
|
+
<!-- If this file is found in the config directory, it will only be
|
20
|
+
loaded once at startup. If it is found in Solr's data
|
21
|
+
directory, it will be re-loaded every commit.
|
22
|
+
-->
|
23
|
+
|
24
|
+
<elevate>
|
25
|
+
<query text="foo bar">
|
26
|
+
<doc id="1" />
|
27
|
+
<doc id="2" />
|
28
|
+
<doc id="3" />
|
29
|
+
</query>
|
30
|
+
|
31
|
+
<query text="ipod">
|
32
|
+
<doc id="MA147LL/A" /> <!-- put the actual ipod at the top -->
|
33
|
+
<doc id="IW-02" exclude="true" /> <!-- exclude this cable -->
|
34
|
+
</query>
|
35
|
+
|
36
|
+
</elevate>
|
@@ -0,0 +1,246 @@
|
|
1
|
+
# The ASF licenses this file to You under the Apache License, Version 2.0
|
2
|
+
# (the "License"); you may not use this file except in compliance with
|
3
|
+
# the License. You may obtain a copy of the License at
|
4
|
+
#
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
6
|
+
#
|
7
|
+
# Unless required by applicable law or agreed to in writing, software
|
8
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
9
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
10
|
+
# See the License for the specific language governing permissions and
|
11
|
+
# limitations under the License.
|
12
|
+
|
13
|
+
# Syntax:
|
14
|
+
# "source" => "target"
|
15
|
+
# "source".length() > 0 (source cannot be empty.)
|
16
|
+
# "target".length() >= 0 (target can be empty.)
|
17
|
+
|
18
|
+
# example:
|
19
|
+
# "??" => "A"
|
20
|
+
# "\u00C0" => "A"
|
21
|
+
# "\u00C0" => "\u0041"
|
22
|
+
# "??" => "ss"
|
23
|
+
# "\t" => " "
|
24
|
+
# "\n" => ""
|
25
|
+
|
26
|
+
# ?? => A
|
27
|
+
"\u00C0" => "A"
|
28
|
+
|
29
|
+
# ?? => A
|
30
|
+
"\u00C1" => "A"
|
31
|
+
|
32
|
+
# ?? => A
|
33
|
+
"\u00C2" => "A"
|
34
|
+
|
35
|
+
# ?? => A
|
36
|
+
"\u00C3" => "A"
|
37
|
+
|
38
|
+
# ?? => A
|
39
|
+
"\u00C4" => "A"
|
40
|
+
|
41
|
+
# ?? => A
|
42
|
+
"\u00C5" => "A"
|
43
|
+
|
44
|
+
# ?? => AE
|
45
|
+
"\u00C6" => "AE"
|
46
|
+
|
47
|
+
# ?? => C
|
48
|
+
"\u00C7" => "C"
|
49
|
+
|
50
|
+
# ?? => E
|
51
|
+
"\u00C8" => "E"
|
52
|
+
|
53
|
+
# ?? => E
|
54
|
+
"\u00C9" => "E"
|
55
|
+
|
56
|
+
# ?? => E
|
57
|
+
"\u00CA" => "E"
|
58
|
+
|
59
|
+
# ?? => E
|
60
|
+
"\u00CB" => "E"
|
61
|
+
|
62
|
+
# ?? => I
|
63
|
+
"\u00CC" => "I"
|
64
|
+
|
65
|
+
# ?? => I
|
66
|
+
"\u00CD" => "I"
|
67
|
+
|
68
|
+
# ?? => I
|
69
|
+
"\u00CE" => "I"
|
70
|
+
|
71
|
+
# ?? => I
|
72
|
+
"\u00CF" => "I"
|
73
|
+
|
74
|
+
# ?? => IJ
|
75
|
+
"\u0132" => "IJ"
|
76
|
+
|
77
|
+
# ?? => D
|
78
|
+
"\u00D0" => "D"
|
79
|
+
|
80
|
+
# ?? => N
|
81
|
+
"\u00D1" => "N"
|
82
|
+
|
83
|
+
# ?? => O
|
84
|
+
"\u00D2" => "O"
|
85
|
+
|
86
|
+
# ?? => O
|
87
|
+
"\u00D3" => "O"
|
88
|
+
|
89
|
+
# ?? => O
|
90
|
+
"\u00D4" => "O"
|
91
|
+
|
92
|
+
# ?? => O
|
93
|
+
"\u00D5" => "O"
|
94
|
+
|
95
|
+
# ?? => O
|
96
|
+
"\u00D6" => "O"
|
97
|
+
|
98
|
+
# ?? => O
|
99
|
+
"\u00D8" => "O"
|
100
|
+
|
101
|
+
# ?? => OE
|
102
|
+
"\u0152" => "OE"
|
103
|
+
|
104
|
+
# ??
|
105
|
+
"\u00DE" => "TH"
|
106
|
+
|
107
|
+
# ?? => U
|
108
|
+
"\u00D9" => "U"
|
109
|
+
|
110
|
+
# ?? => U
|
111
|
+
"\u00DA" => "U"
|
112
|
+
|
113
|
+
# ?? => U
|
114
|
+
"\u00DB" => "U"
|
115
|
+
|
116
|
+
# ?? => U
|
117
|
+
"\u00DC" => "U"
|
118
|
+
|
119
|
+
# ?? => Y
|
120
|
+
"\u00DD" => "Y"
|
121
|
+
|
122
|
+
# ?? => Y
|
123
|
+
"\u0178" => "Y"
|
124
|
+
|
125
|
+
# ?? => a
|
126
|
+
"\u00E0" => "a"
|
127
|
+
|
128
|
+
# ?? => a
|
129
|
+
"\u00E1" => "a"
|
130
|
+
|
131
|
+
# ?? => a
|
132
|
+
"\u00E2" => "a"
|
133
|
+
|
134
|
+
# ?? => a
|
135
|
+
"\u00E3" => "a"
|
136
|
+
|
137
|
+
# ?? => a
|
138
|
+
"\u00E4" => "a"
|
139
|
+
|
140
|
+
# ?? => a
|
141
|
+
"\u00E5" => "a"
|
142
|
+
|
143
|
+
# ?? => ae
|
144
|
+
"\u00E6" => "ae"
|
145
|
+
|
146
|
+
# ?? => c
|
147
|
+
"\u00E7" => "c"
|
148
|
+
|
149
|
+
# ?? => e
|
150
|
+
"\u00E8" => "e"
|
151
|
+
|
152
|
+
# ?? => e
|
153
|
+
"\u00E9" => "e"
|
154
|
+
|
155
|
+
# ?? => e
|
156
|
+
"\u00EA" => "e"
|
157
|
+
|
158
|
+
# ?? => e
|
159
|
+
"\u00EB" => "e"
|
160
|
+
|
161
|
+
# ?? => i
|
162
|
+
"\u00EC" => "i"
|
163
|
+
|
164
|
+
# ?? => i
|
165
|
+
"\u00ED" => "i"
|
166
|
+
|
167
|
+
# ?? => i
|
168
|
+
"\u00EE" => "i"
|
169
|
+
|
170
|
+
# ?? => i
|
171
|
+
"\u00EF" => "i"
|
172
|
+
|
173
|
+
# ?? => ij
|
174
|
+
"\u0133" => "ij"
|
175
|
+
|
176
|
+
# ?? => d
|
177
|
+
"\u00F0" => "d"
|
178
|
+
|
179
|
+
# ?? => n
|
180
|
+
"\u00F1" => "n"
|
181
|
+
|
182
|
+
# ?? => o
|
183
|
+
"\u00F2" => "o"
|
184
|
+
|
185
|
+
# ?? => o
|
186
|
+
"\u00F3" => "o"
|
187
|
+
|
188
|
+
# ?? => o
|
189
|
+
"\u00F4" => "o"
|
190
|
+
|
191
|
+
# ?? => o
|
192
|
+
"\u00F5" => "o"
|
193
|
+
|
194
|
+
# ?? => o
|
195
|
+
"\u00F6" => "o"
|
196
|
+
|
197
|
+
# ?? => o
|
198
|
+
"\u00F8" => "o"
|
199
|
+
|
200
|
+
# ?? => oe
|
201
|
+
"\u0153" => "oe"
|
202
|
+
|
203
|
+
# ?? => ss
|
204
|
+
"\u00DF" => "ss"
|
205
|
+
|
206
|
+
# ?? => th
|
207
|
+
"\u00FE" => "th"
|
208
|
+
|
209
|
+
# ?? => u
|
210
|
+
"\u00F9" => "u"
|
211
|
+
|
212
|
+
# ?? => u
|
213
|
+
"\u00FA" => "u"
|
214
|
+
|
215
|
+
# ?? => u
|
216
|
+
"\u00FB" => "u"
|
217
|
+
|
218
|
+
# ?? => u
|
219
|
+
"\u00FC" => "u"
|
220
|
+
|
221
|
+
# ?? => y
|
222
|
+
"\u00FD" => "y"
|
223
|
+
|
224
|
+
# ?? => y
|
225
|
+
"\u00FF" => "y"
|
226
|
+
|
227
|
+
# ??? => ff
|
228
|
+
"\uFB00" => "ff"
|
229
|
+
|
230
|
+
# ??? => fi
|
231
|
+
"\uFB01" => "fi"
|
232
|
+
|
233
|
+
# ??? => fl
|
234
|
+
"\uFB02" => "fl"
|
235
|
+
|
236
|
+
# ??? => ffi
|
237
|
+
"\uFB03" => "ffi"
|
238
|
+
|
239
|
+
# ??? => ffl
|
240
|
+
"\uFB04" => "ffl"
|
241
|
+
|
242
|
+
# ??? => ft
|
243
|
+
"\uFB05" => "ft"
|
244
|
+
|
245
|
+
# ??? => st
|
246
|
+
"\uFB06" => "st"
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# The ASF licenses this file to You under the Apache License, Version 2.0
|
2
|
+
# (the "License"); you may not use this file except in compliance with
|
3
|
+
# the License. You may obtain a copy of the License at
|
4
|
+
#
|
5
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
6
|
+
#
|
7
|
+
# Unless required by applicable law or agreed to in writing, software
|
8
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
9
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
10
|
+
# See the License for the specific language governing permissions and
|
11
|
+
# limitations under the License.
|
12
|
+
|
13
|
+
#-----------------------------------------------------------------------
|
14
|
+
# Use a protected word file to protect against the stemmer reducing two
|
15
|
+
# unrelated words to the same base word.
|
16
|
+
|
17
|
+
# Some non-words that normally won't be encountered,
|
18
|
+
# just to test that they won't be stemmed.
|
19
|
+
dontstems
|
20
|
+
zwhacky
|
21
|
+
|