solrsan 0.5.6 → 0.5.7
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.
- data/README.md +3 -0
- data/config/solr/conf/solrconfig.xml +15 -254
- data/lib/solrsan/indexer.rb +3 -3
- data/lib/solrsan/search.rb +7 -8
- data/lib/solrsan/version.rb +1 -1
- data/test/unit/search_test.rb +0 -1
- metadata +8 -12
- data/config/solr/conf/xslt/example.xsl +0 -132
- data/config/solr/conf/xslt/example_atom.xsl +0 -67
- data/config/solr/conf/xslt/example_rss.xsl +0 -66
- data/config/solr/conf/xslt/luke.xsl +0 -337
data/README.md
CHANGED
@@ -110,6 +110,9 @@ A simple search query:
|
|
110
110
|
More searching examples can be seen in test/unit/search_test.rb
|
111
111
|
|
112
112
|
## Changelog
|
113
|
+
0.5.7
|
114
|
+
Allow solr attribute field 'type' to be overridden.
|
115
|
+
|
113
116
|
0.5.6
|
114
117
|
Tests use sleep since test index are using commitWithin. Fixed rsolr
|
115
118
|
reference.
|
@@ -24,92 +24,8 @@
|
|
24
24
|
-->
|
25
25
|
<config>
|
26
26
|
<abortOnConfigurationError>${solr.abortOnConfigurationError:true}</abortOnConfigurationError>
|
27
|
-
|
28
|
-
<!-- lib directives can be used to instruct Solr to load an Jars identified
|
29
|
-
and use them to resolve any "plugins" specified in your solrconfig.xml or
|
30
|
-
schema.xml (ie: Analyzers, Request Handlers, etc...).
|
31
|
-
|
32
|
-
All directories and paths are resolved relative the instanceDir.
|
33
|
-
|
34
|
-
If a "./lib" directory exists in your instanceDir, all files found in it
|
35
|
-
are included as if you had used the following syntax...
|
36
|
-
|
37
|
-
<lib dir="./lib" />
|
38
|
-
-->
|
39
|
-
<!-- A dir option by itself adds any files found in the directory to the
|
40
|
-
classpath, this is useful for including all jars in a directory.
|
41
|
-
-->
|
42
|
-
<lib dir="../../contrib/extraction/lib" />
|
43
|
-
<!-- When a regex is specified in addition to a directory, only the files in that
|
44
|
-
directory which completely match the regex (anchored on both ends)
|
45
|
-
will be included.
|
46
|
-
-->
|
47
|
-
<lib dir="../../dist/" regex="apache-solr-cell-\d.*\.jar" />
|
48
|
-
<lib dir="../../dist/" regex="apache-solr-clustering-\d.*\.jar" />
|
49
|
-
<!-- If a dir option (with or without a regex) is used and nothing is found
|
50
|
-
that matches, it will be ignored
|
51
|
-
-->
|
52
|
-
<lib dir="../../contrib/clustering/lib/downloads/" />
|
53
|
-
<lib dir="../../contrib/clustering/lib/" />
|
54
27
|
<lib dir="/total/crap/dir/ignored" />
|
55
|
-
|
56
|
-
<!-- Used to specify an alternate directory to hold all index data
|
57
|
-
other than the default ./data under the Solr home.
|
58
|
-
If replication is in use, this should match the replication configuration. -->
|
59
28
|
<dataDir>${solr.data.dir:./solr/data}</dataDir>
|
60
|
-
|
61
|
-
|
62
|
-
<!-- WARNING: this <indexDefaults> section only provides defaults for index writers
|
63
|
-
in general. See also the <mainIndex> section after that when changing parameters
|
64
|
-
for Solr's main Lucene index. -->
|
65
|
-
<indexDefaults>
|
66
|
-
<!-- Values here affect all index writers and act as a default unless overridden. -->
|
67
|
-
<useCompoundFile>false</useCompoundFile>
|
68
|
-
|
69
|
-
<mergeFactor>10</mergeFactor>
|
70
|
-
<ramBufferSizeMB>32</ramBufferSizeMB>
|
71
|
-
<!-- <maxMergeDocs>2147483647</maxMergeDocs> -->
|
72
|
-
<maxFieldLength>10000</maxFieldLength>
|
73
|
-
<writeLockTimeout>1000</writeLockTimeout>
|
74
|
-
<commitLockTimeout>10000</commitLockTimeout>
|
75
|
-
<lockType>native</lockType>
|
76
|
-
<!--
|
77
|
-
Expert:
|
78
|
-
Controls how often Lucene loads terms into memory -->
|
79
|
-
<!--<termIndexInterval>256</termIndexInterval>-->
|
80
|
-
</indexDefaults>
|
81
|
-
|
82
|
-
<mainIndex>
|
83
|
-
<!-- options specific to the main on-disk lucene index -->
|
84
|
-
<useCompoundFile>false</useCompoundFile>
|
85
|
-
<ramBufferSizeMB>32</ramBufferSizeMB>
|
86
|
-
<mergeFactor>10</mergeFactor>
|
87
|
-
<unlockOnStartup>false</unlockOnStartup>
|
88
|
-
|
89
|
-
<reopenReaders>true</reopenReaders>
|
90
|
-
<deletionPolicy class="solr.SolrDeletionPolicy">
|
91
|
-
<!-- The number of commit points to be kept -->
|
92
|
-
<str name="maxCommitsToKeep">1</str>
|
93
|
-
<!-- The number of optimized commit points to be kept -->
|
94
|
-
<str name="maxOptimizedCommitsToKeep">0</str>
|
95
|
-
</deletionPolicy>
|
96
|
-
|
97
|
-
<infoStream file="INFOSTREAM.txt">false</infoStream>
|
98
|
-
|
99
|
-
</mainIndex>
|
100
|
-
|
101
|
-
<!-- Enables JMX if and only if an existing MBeanServer is found, use this
|
102
|
-
if you want to configure JMX through JVM parameters. Remove this to disable
|
103
|
-
exposing Solr configuration and statistics to JMX.
|
104
|
-
|
105
|
-
If you want to connect to a particular server, specify the agentId
|
106
|
-
e.g. <jmx agentId="myAgent" />
|
107
|
-
|
108
|
-
If you want to start a new MBeanServer, specify the serviceUrl
|
109
|
-
e.g <jmx serviceUrl="service:jmx:rmi:///jndi/rmi://localhost:9999/solr"/>
|
110
|
-
|
111
|
-
For more details see http://wiki.apache.org/solr/SolrJmx
|
112
|
-
-->
|
113
29
|
<jmx />
|
114
30
|
|
115
31
|
<!-- the default high-performance update handler -->
|
@@ -180,13 +96,7 @@
|
|
180
96
|
etagSeed="Solr">
|
181
97
|
</httpCaching>
|
182
98
|
</requestDispatcher>
|
183
|
-
|
184
|
-
<!-- <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
|
185
|
-
<lst name="defaults">
|
186
|
-
<str name="config">xml-data-config.xml</str>
|
187
|
-
</lst>
|
188
|
-
</requestHandler> -->
|
189
|
-
|
99
|
+
|
190
100
|
<requestHandler name="standard" class="solr.SearchHandler" default="true">
|
191
101
|
<lst name="defaults">
|
192
102
|
<str name="echoParams">explicit</str>
|
@@ -194,15 +104,9 @@
|
|
194
104
|
</requestHandler>
|
195
105
|
|
196
106
|
|
197
|
-
|
198
|
-
for simple user-entered phrases. It's implementation is now
|
199
|
-
just the standard SearchHandler with a default query type
|
200
|
-
of "dismax".
|
201
|
-
see http://wiki.apache.org/solr/DisMaxRequestHandler
|
202
|
-
-->
|
203
|
-
<requestHandler name="dismax" class="solr.SearchHandler">
|
107
|
+
<requestHandler name="edismax" class="solr.SearchHandler">
|
204
108
|
<lst name="defaults">
|
205
|
-
<str name="defType">
|
109
|
+
<str name="defType">edismax</str>
|
206
110
|
<str name="echoParams">explicit</str>
|
207
111
|
<float name="tie">0.01</float>
|
208
112
|
<str name="qf">
|
@@ -216,134 +120,7 @@
|
|
216
120
|
</lst>
|
217
121
|
</requestHandler>
|
218
122
|
|
219
|
-
|
220
|
-
suggestions. -->
|
221
|
-
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
|
222
|
-
<str name="queryAnalyzerFieldType">textSpell</str>
|
223
|
-
|
224
|
-
<lst name="spellchecker">
|
225
|
-
<str name="name">default</str>
|
226
|
-
<str name="field">name</str>
|
227
|
-
<str name="spellcheckIndexDir">./spellchecker</str>
|
228
|
-
</lst>
|
229
|
-
</searchComponent>
|
230
|
-
|
231
|
-
<!-- A request handler utilizing the spellcheck component.
|
232
|
-
#############################################################################
|
233
|
-
NOTE: This is purely as an example. The whole purpose of the
|
234
|
-
SpellCheckComponent is to hook it into the request handler that handles (i.e.
|
235
|
-
the standard or dismax SearchHandler) queries such that a separate request is
|
236
|
-
not needed to get suggestions.
|
237
|
-
|
238
|
-
IN OTHER WORDS, THERE IS REALLY GOOD CHANCE THE SETUP BELOW IS NOT WHAT YOU
|
239
|
-
WANT FOR YOUR PRODUCTION SYSTEM!
|
240
|
-
#############################################################################
|
241
|
-
-->
|
242
|
-
<requestHandler name="/spell" class="solr.SearchHandler" lazy="true">
|
243
|
-
<lst name="defaults">
|
244
|
-
<!-- omp = Only More Popular -->
|
245
|
-
<str name="spellcheck.onlyMorePopular">false</str>
|
246
|
-
<!-- exr = Extended Results -->
|
247
|
-
<str name="spellcheck.extendedResults">false</str>
|
248
|
-
<!-- The number of suggestions to return -->
|
249
|
-
<str name="spellcheck.count">1</str>
|
250
|
-
</lst>
|
251
|
-
<arr name="last-components">
|
252
|
-
<str>spellcheck</str>
|
253
|
-
</arr>
|
254
|
-
</requestHandler>
|
255
|
-
|
256
|
-
<searchComponent name="tvComponent" class="org.apache.solr.handler.component.TermVectorComponent"/>
|
257
|
-
<!-- A Req Handler for working with the tvComponent. This is purely as an example.
|
258
|
-
You will likely want to add the component to your already specified request handlers. -->
|
259
|
-
<requestHandler name="tvrh" class="org.apache.solr.handler.component.SearchHandler">
|
260
|
-
<lst name="defaults">
|
261
|
-
<bool name="tv">true</bool>
|
262
|
-
</lst>
|
263
|
-
<arr name="last-components">
|
264
|
-
<str>tvComponent</str>
|
265
|
-
</arr>
|
266
|
-
</requestHandler>
|
267
|
-
|
268
|
-
<!-- Clustering Component
|
269
|
-
http://wiki.apache.org/solr/ClusteringComponent
|
270
|
-
This relies on third party jars which are not included in the release.
|
271
|
-
To use this component (and the "/clustering" handler)
|
272
|
-
Those jars will need to be downloaded, and you'll need to set the
|
273
|
-
solr.cluster.enabled system property when running solr...
|
274
|
-
java -Dsolr.clustering.enabled=true -jar start.jar
|
275
|
-
-->
|
276
|
-
<searchComponent
|
277
|
-
name="clusteringComponent"
|
278
|
-
enable="${solr.clustering.enabled:false}"
|
279
|
-
class="org.apache.solr.handler.clustering.ClusteringComponent" >
|
280
|
-
<!-- Declare an engine -->
|
281
|
-
<lst name="engine">
|
282
|
-
<!-- The name, only one can be named "default" -->
|
283
|
-
<str name="name">default</str>
|
284
|
-
<!--
|
285
|
-
Class name of Carrot2 clustering algorithm. Currently available algorithms are:
|
286
|
-
|
287
|
-
* org.carrot2.clustering.lingo.LingoClusteringAlgorithm
|
288
|
-
* org.carrot2.clustering.stc.STCClusteringAlgorithm
|
289
|
-
|
290
|
-
See http://project.carrot2.org/algorithms.html for the algorithm's characteristics.
|
291
|
-
-->
|
292
|
-
<str name="carrot.algorithm">org.carrot2.clustering.lingo.LingoClusteringAlgorithm</str>
|
293
|
-
<!--
|
294
|
-
Overriding values for Carrot2 default algorithm attributes. For a description
|
295
|
-
of all available attributes, see: http://download.carrot2.org/stable/manual/#chapter.components.
|
296
|
-
Use attribute key as name attribute of str elements below. These can be further
|
297
|
-
overridden for individual requests by specifying attribute key as request
|
298
|
-
parameter name and attribute value as parameter value.
|
299
|
-
-->
|
300
|
-
<str name="LingoClusteringAlgorithm.desiredClusterCountBase">20</str>
|
301
|
-
</lst>
|
302
|
-
<lst name="engine">
|
303
|
-
<str name="name">stc</str>
|
304
|
-
<str name="carrot.algorithm">org.carrot2.clustering.stc.STCClusteringAlgorithm</str>
|
305
|
-
</lst>
|
306
|
-
</searchComponent>
|
307
|
-
|
308
|
-
<requestHandler name="/clustering"
|
309
|
-
enable="${solr.clustering.enabled:false}"
|
310
|
-
class="solr.SearchHandler">
|
311
|
-
<lst name="defaults">
|
312
|
-
<bool name="clustering">true</bool>
|
313
|
-
<str name="clustering.engine">default</str>
|
314
|
-
<bool name="clustering.results">true</bool>
|
315
|
-
<!-- The title field -->
|
316
|
-
<str name="carrot.title">name</str>
|
317
|
-
<str name="carrot.url">id</str>
|
318
|
-
<!-- The field to cluster on -->
|
319
|
-
<str name="carrot.snippet">features</str>
|
320
|
-
<!-- produce summaries -->
|
321
|
-
<bool name="carrot.produceSummary">true</bool>
|
322
|
-
<!-- the maximum number of labels per cluster -->
|
323
|
-
<!--<int name="carrot.numDescriptions">5</int>-->
|
324
|
-
<!-- produce sub clusters -->
|
325
|
-
<bool name="carrot.outputSubClusters">false</bool>
|
326
|
-
</lst>
|
327
|
-
<arr name="last-components">
|
328
|
-
<str>clusteringComponent</str>
|
329
|
-
</arr>
|
330
|
-
</requestHandler>
|
331
|
-
|
332
|
-
<!-- A component to return terms and document frequency of those terms.
|
333
|
-
This component does not yet support distributed search. -->
|
334
|
-
<searchComponent name="termsComponent" class="org.apache.solr.handler.component.TermsComponent"/>
|
335
|
-
|
336
|
-
<requestHandler name="/terms" class="org.apache.solr.handler.component.SearchHandler">
|
337
|
-
<lst name="defaults">
|
338
|
-
<bool name="terms">true</bool>
|
339
|
-
</lst>
|
340
|
-
<arr name="components">
|
341
|
-
<str>termsComponent</str>
|
342
|
-
</arr>
|
343
|
-
</requestHandler>
|
344
|
-
|
345
|
-
|
346
|
-
<!-- a search component that enables you to configure the top results for
|
123
|
+
<!-- a search component that enables you to configure the top results for
|
347
124
|
a given query regardless of the normal lucene scoring.-->
|
348
125
|
<searchComponent name="elevator" class="solr.QueryElevationComponent" >
|
349
126
|
<!-- pick a fieldType to analyze queries -->
|
@@ -369,23 +146,6 @@
|
|
369
146
|
<requestHandler name="/update/csv" class="solr.CSVRequestHandler" startup="lazy" />
|
370
147
|
<requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />
|
371
148
|
|
372
|
-
<!-- ping/healthcheck -->
|
373
|
-
<requestHandler name="/admin/ping" class="PingRequestHandler">
|
374
|
-
<lst name="defaults">
|
375
|
-
<str name="qt">standard</str>
|
376
|
-
<str name="q">solrpingquery</str>
|
377
|
-
<str name="echoParams">all</str>
|
378
|
-
</lst>
|
379
|
-
</requestHandler>
|
380
|
-
|
381
|
-
<!-- Echo the request contents back to the client -->
|
382
|
-
<requestHandler name="/debug/dump" class="solr.DumpRequestHandler" >
|
383
|
-
<lst name="defaults">
|
384
|
-
<str name="echoParams">explicit</str> <!-- for all params (including the default etc) use: 'all' -->
|
385
|
-
<str name="echoHandler">true</str>
|
386
|
-
</lst>
|
387
|
-
</requestHandler>
|
388
|
-
|
389
149
|
<highlighting>
|
390
150
|
<!-- Configure the standard fragmenter -->
|
391
151
|
<!-- This could most likely be commented out in the "default" case -->
|
@@ -416,15 +176,16 @@
|
|
416
176
|
</formatter>
|
417
177
|
</highlighting>
|
418
178
|
|
419
|
-
|
420
|
-
|
421
|
-
<
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
179
|
+
<!-- A regular-expression-based fragmenter (f.i., for sentence extraction) -->
|
180
|
+
<fragmenter name="regex" class="org.apache.solr.highlight.RegexFragmenter">
|
181
|
+
<lst name="defaults">
|
182
|
+
<!-- slightly smaller fragsizes work better because of slop -->
|
183
|
+
<int name="hl.fragsize">70</int>
|
184
|
+
<!-- allow 50% slop on fragment sizes -->
|
185
|
+
<float name="hl.regex.slop">0.5</float>
|
186
|
+
<!-- a basic sentence pattern -->
|
187
|
+
<str name="hl.regex.pattern">[-\w ,/\n\"']{20,200}</str>
|
188
|
+
</lst>
|
189
|
+
</fragmenter>
|
428
190
|
|
429
191
|
</config>
|
430
|
-
|
data/lib/solrsan/indexer.rb
CHANGED
@@ -10,7 +10,7 @@ module Solrsan
|
|
10
10
|
def indexed_fields
|
11
11
|
raise "Object has have a valid as_solr_document defined" if as_solr_document.nil?
|
12
12
|
|
13
|
-
doc = {:type => self.class.
|
13
|
+
doc = {:type => self.class.solr_type, :db_id => id_value, :id => solr_id_value}
|
14
14
|
|
15
15
|
initial_document_fields = as_solr_document.reject{|k,v| k == :id || k == :_id}
|
16
16
|
converted_fields = initial_document_fields.reduce({}) do |acc, tuple|
|
@@ -37,7 +37,7 @@ module Solrsan
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def solr_id_value
|
40
|
-
"#{self.class.
|
40
|
+
"#{self.class.solr_type}-#{id_value.to_s}"
|
41
41
|
end
|
42
42
|
|
43
43
|
end
|
@@ -75,7 +75,7 @@ module Solrsan
|
|
75
75
|
|
76
76
|
def destroy_all_index_documents!
|
77
77
|
self.perform_solr_command do |rsolr|
|
78
|
-
rsolr.delete_by_query("type:#{
|
78
|
+
rsolr.delete_by_query("type:#{self.solr_type}")
|
79
79
|
end
|
80
80
|
end
|
81
81
|
end
|
data/lib/solrsan/search.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'active_support/core_ext/module/attribute_accessors'
|
2
|
+
|
1
3
|
module Solrsan
|
2
4
|
module Search
|
3
5
|
extend ActiveSupport::Concern
|
@@ -6,10 +8,9 @@ module Solrsan
|
|
6
8
|
HL_START_TAG = "<mark>"
|
7
9
|
HL_END_TAG = "</mark>"
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
11
|
+
@@solr_type = self.to_s.underscore
|
12
|
+
mattr_accessor :solr_type
|
13
|
+
|
13
14
|
def perform_solr_command
|
14
15
|
@rsolr ||= Solrsan::Config.instance.rsolr_object
|
15
16
|
yield(@rsolr)
|
@@ -43,7 +44,7 @@ module Solrsan
|
|
43
44
|
:'facet.mincount' => 1}.merge(search_params)
|
44
45
|
|
45
46
|
solr_params[:hl] = true unless search_params[:'hl.fl'].blank?
|
46
|
-
solr_params[:fq] = ["type:#{
|
47
|
+
solr_params[:fq] = ["type:#{@@solr_type}"] + parse_fq(search_params[:fq])
|
47
48
|
solr_params
|
48
49
|
end
|
49
50
|
|
@@ -179,9 +180,7 @@ if defined?(Rails) && Rails.env == "test"
|
|
179
180
|
module Search
|
180
181
|
extend ActiveSupport::Concern
|
181
182
|
module ClassMethods
|
182
|
-
|
183
|
-
"#{to_s.underscore}_test"
|
184
|
-
end
|
183
|
+
@@solr_type = "#{self.to_s.underscore}_test"
|
185
184
|
end
|
186
185
|
end
|
187
186
|
end
|
data/lib/solrsan/version.rb
CHANGED
data/test/unit/search_test.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solrsan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-01-
|
12
|
+
date: 2012-01-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rsolr
|
16
|
-
requirement: &
|
16
|
+
requirement: &70283206629140 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.0.6
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70283206629140
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: activemodel
|
27
|
-
requirement: &
|
27
|
+
requirement: &70283206628340 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 3.1.1
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70283206628340
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: activesupport
|
38
|
-
requirement: &
|
38
|
+
requirement: &70283206627880 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: 3.1.1
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70283206627880
|
47
47
|
description: solrsan is a lightweight wrapper for using Apache Solr within a Ruby
|
48
48
|
application including Rails and Sinatra.
|
49
49
|
email:
|
@@ -67,10 +67,6 @@ files:
|
|
67
67
|
- config/solr/conf/spellings.txt
|
68
68
|
- config/solr/conf/stopwords.txt
|
69
69
|
- config/solr/conf/synonyms.txt
|
70
|
-
- config/solr/conf/xslt/example.xsl
|
71
|
-
- config/solr/conf/xslt/example_atom.xsl
|
72
|
-
- config/solr/conf/xslt/example_rss.xsl
|
73
|
-
- config/solr/conf/xslt/luke.xsl
|
74
70
|
- lib/rails/generators/solrsan/config/config_generator.rb
|
75
71
|
- lib/rails/generators/solrsan/config/templates/solr.yml
|
76
72
|
- lib/rails/generators/solrsan/config/templates/solrsan.rb
|
@@ -1,132 +0,0 @@
|
|
1
|
-
<?xml version='1.0' encoding='UTF-8'?>
|
2
|
-
|
3
|
-
<!--
|
4
|
-
* Licensed to the Apache Software Foundation (ASF) under one or more
|
5
|
-
* contributor license agreements. See the NOTICE file distributed with
|
6
|
-
* this work for additional information regarding copyright ownership.
|
7
|
-
* The ASF licenses this file to You under the Apache License, Version 2.0
|
8
|
-
* (the "License"); you may not use this file except in compliance with
|
9
|
-
* the License. You may obtain a copy of the License at
|
10
|
-
*
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
12
|
-
*
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
-
* See the License for the specific language governing permissions and
|
17
|
-
* limitations under the License.
|
18
|
-
-->
|
19
|
-
|
20
|
-
<!--
|
21
|
-
Simple transform of Solr query results to HTML
|
22
|
-
-->
|
23
|
-
<xsl:stylesheet version='1.0'
|
24
|
-
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
|
25
|
-
>
|
26
|
-
|
27
|
-
<xsl:output media-type="text/html; charset=UTF-8" encoding="UTF-8"/>
|
28
|
-
|
29
|
-
<xsl:variable name="title" select="concat('Solr search results (',response/result/@numFound,' documents)')"/>
|
30
|
-
|
31
|
-
<xsl:template match='/'>
|
32
|
-
<html>
|
33
|
-
<head>
|
34
|
-
<title><xsl:value-of select="$title"/></title>
|
35
|
-
<xsl:call-template name="css"/>
|
36
|
-
</head>
|
37
|
-
<body>
|
38
|
-
<h1><xsl:value-of select="$title"/></h1>
|
39
|
-
<div class="note">
|
40
|
-
This has been formatted by the sample "example.xsl" transform -
|
41
|
-
use your own XSLT to get a nicer page
|
42
|
-
</div>
|
43
|
-
<xsl:apply-templates select="response/result/doc"/>
|
44
|
-
</body>
|
45
|
-
</html>
|
46
|
-
</xsl:template>
|
47
|
-
|
48
|
-
<xsl:template match="doc">
|
49
|
-
<xsl:variable name="pos" select="position()"/>
|
50
|
-
<div class="doc">
|
51
|
-
<table width="100%">
|
52
|
-
<xsl:apply-templates>
|
53
|
-
<xsl:with-param name="pos"><xsl:value-of select="$pos"/></xsl:with-param>
|
54
|
-
</xsl:apply-templates>
|
55
|
-
</table>
|
56
|
-
</div>
|
57
|
-
</xsl:template>
|
58
|
-
|
59
|
-
<xsl:template match="doc/*[@name='score']" priority="100">
|
60
|
-
<xsl:param name="pos"></xsl:param>
|
61
|
-
<tr>
|
62
|
-
<td class="name">
|
63
|
-
<xsl:value-of select="@name"/>
|
64
|
-
</td>
|
65
|
-
<td class="value">
|
66
|
-
<xsl:value-of select="."/>
|
67
|
-
|
68
|
-
<xsl:if test="boolean(//lst[@name='explain'])">
|
69
|
-
<xsl:element name="a">
|
70
|
-
<!-- can't allow whitespace here -->
|
71
|
-
<xsl:attribute name="href">javascript:toggle("<xsl:value-of select="concat('exp-',$pos)" />");</xsl:attribute>?</xsl:element>
|
72
|
-
<br/>
|
73
|
-
<xsl:element name="div">
|
74
|
-
<xsl:attribute name="class">exp</xsl:attribute>
|
75
|
-
<xsl:attribute name="id">
|
76
|
-
<xsl:value-of select="concat('exp-',$pos)" />
|
77
|
-
</xsl:attribute>
|
78
|
-
<xsl:value-of select="//lst[@name='explain']/str[position()=$pos]"/>
|
79
|
-
</xsl:element>
|
80
|
-
</xsl:if>
|
81
|
-
</td>
|
82
|
-
</tr>
|
83
|
-
</xsl:template>
|
84
|
-
|
85
|
-
<xsl:template match="doc/arr" priority="100">
|
86
|
-
<tr>
|
87
|
-
<td class="name">
|
88
|
-
<xsl:value-of select="@name"/>
|
89
|
-
</td>
|
90
|
-
<td class="value">
|
91
|
-
<ul>
|
92
|
-
<xsl:for-each select="*">
|
93
|
-
<li><xsl:value-of select="."/></li>
|
94
|
-
</xsl:for-each>
|
95
|
-
</ul>
|
96
|
-
</td>
|
97
|
-
</tr>
|
98
|
-
</xsl:template>
|
99
|
-
|
100
|
-
|
101
|
-
<xsl:template match="doc/*">
|
102
|
-
<tr>
|
103
|
-
<td class="name">
|
104
|
-
<xsl:value-of select="@name"/>
|
105
|
-
</td>
|
106
|
-
<td class="value">
|
107
|
-
<xsl:value-of select="."/>
|
108
|
-
</td>
|
109
|
-
</tr>
|
110
|
-
</xsl:template>
|
111
|
-
|
112
|
-
<xsl:template match="*"/>
|
113
|
-
|
114
|
-
<xsl:template name="css">
|
115
|
-
<script>
|
116
|
-
function toggle(id) {
|
117
|
-
var obj = document.getElementById(id);
|
118
|
-
obj.style.display = (obj.style.display != 'block') ? 'block' : 'none';
|
119
|
-
}
|
120
|
-
</script>
|
121
|
-
<style type="text/css">
|
122
|
-
body { font-family: "Lucida Grande", sans-serif }
|
123
|
-
td.name { font-style: italic; font-size:80%; }
|
124
|
-
td { vertical-align: top; }
|
125
|
-
ul { margin: 0px; margin-left: 1em; padding: 0px; }
|
126
|
-
.note { font-size:80%; }
|
127
|
-
.doc { margin-top: 1em; border-top: solid grey 1px; }
|
128
|
-
.exp { display: none; font-family: monospace; white-space: pre; }
|
129
|
-
</style>
|
130
|
-
</xsl:template>
|
131
|
-
|
132
|
-
</xsl:stylesheet>
|
@@ -1,67 +0,0 @@
|
|
1
|
-
<?xml version='1.0' encoding='UTF-8'?>
|
2
|
-
|
3
|
-
<!--
|
4
|
-
* Licensed to the Apache Software Foundation (ASF) under one or more
|
5
|
-
* contributor license agreements. See the NOTICE file distributed with
|
6
|
-
* this work for additional information regarding copyright ownership.
|
7
|
-
* The ASF licenses this file to You under the Apache License, Version 2.0
|
8
|
-
* (the "License"); you may not use this file except in compliance with
|
9
|
-
* the License. You may obtain a copy of the License at
|
10
|
-
*
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
12
|
-
*
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
-
* See the License for the specific language governing permissions and
|
17
|
-
* limitations under the License.
|
18
|
-
-->
|
19
|
-
|
20
|
-
<!--
|
21
|
-
Simple transform of Solr query results to Atom
|
22
|
-
-->
|
23
|
-
|
24
|
-
<xsl:stylesheet version='1.0'
|
25
|
-
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
|
26
|
-
|
27
|
-
<xsl:output
|
28
|
-
method="xml"
|
29
|
-
encoding="utf-8"
|
30
|
-
media-type="text/xml; charset=UTF-8"
|
31
|
-
/>
|
32
|
-
|
33
|
-
<xsl:template match='/'>
|
34
|
-
<xsl:variable name="query" select="response/lst[@name='responseHeader']/lst[@name='params']/str[@name='q']"/>
|
35
|
-
<feed xmlns="http://www.w3.org/2005/Atom">
|
36
|
-
<title>Example Solr Atom 1.0 Feed</title>
|
37
|
-
<subtitle>
|
38
|
-
This has been formatted by the sample "example_atom.xsl" transform -
|
39
|
-
use your own XSLT to get a nicer Atom feed.
|
40
|
-
</subtitle>
|
41
|
-
<author>
|
42
|
-
<name>Apache Solr</name>
|
43
|
-
<email>solr-user@lucene.apache.org</email>
|
44
|
-
</author>
|
45
|
-
<link rel="self" type="application/atom+xml"
|
46
|
-
href="http://localhost:8983/solr/q={$query}&wt=xslt&tr=atom.xsl"/>
|
47
|
-
<updated>
|
48
|
-
<xsl:value-of select="response/result/doc[position()=1]/date[@name='timestamp']"/>
|
49
|
-
</updated>
|
50
|
-
<id>tag:localhost,2007:example</id>
|
51
|
-
<xsl:apply-templates select="response/result/doc"/>
|
52
|
-
</feed>
|
53
|
-
</xsl:template>
|
54
|
-
|
55
|
-
<!-- search results xslt -->
|
56
|
-
<xsl:template match="doc">
|
57
|
-
<xsl:variable name="id" select="str[@name='id']"/>
|
58
|
-
<entry>
|
59
|
-
<title><xsl:value-of select="str[@name='name']"/></title>
|
60
|
-
<link href="http://localhost:8983/solr/select?q={$id}"/>
|
61
|
-
<id>tag:localhost,2007:<xsl:value-of select="$id"/></id>
|
62
|
-
<summary><xsl:value-of select="arr[@name='features']"/></summary>
|
63
|
-
<updated><xsl:value-of select="date[@name='timestamp']"/></updated>
|
64
|
-
</entry>
|
65
|
-
</xsl:template>
|
66
|
-
|
67
|
-
</xsl:stylesheet>
|
@@ -1,66 +0,0 @@
|
|
1
|
-
<?xml version='1.0' encoding='UTF-8'?>
|
2
|
-
|
3
|
-
<!--
|
4
|
-
* Licensed to the Apache Software Foundation (ASF) under one or more
|
5
|
-
* contributor license agreements. See the NOTICE file distributed with
|
6
|
-
* this work for additional information regarding copyright ownership.
|
7
|
-
* The ASF licenses this file to You under the Apache License, Version 2.0
|
8
|
-
* (the "License"); you may not use this file except in compliance with
|
9
|
-
* the License. You may obtain a copy of the License at
|
10
|
-
*
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
12
|
-
*
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
-
* See the License for the specific language governing permissions and
|
17
|
-
* limitations under the License.
|
18
|
-
-->
|
19
|
-
|
20
|
-
<!--
|
21
|
-
Simple transform of Solr query results to RSS
|
22
|
-
-->
|
23
|
-
|
24
|
-
<xsl:stylesheet version='1.0'
|
25
|
-
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
|
26
|
-
|
27
|
-
<xsl:output
|
28
|
-
method="xml"
|
29
|
-
encoding="utf-8"
|
30
|
-
media-type="text/xml; charset=UTF-8"
|
31
|
-
/>
|
32
|
-
<xsl:template match='/'>
|
33
|
-
<rss version="2.0">
|
34
|
-
<channel>
|
35
|
-
<title>Example Solr RSS 2.0 Feed</title>
|
36
|
-
<link>http://localhost:8983/solr</link>
|
37
|
-
<description>
|
38
|
-
This has been formatted by the sample "example_rss.xsl" transform -
|
39
|
-
use your own XSLT to get a nicer RSS feed.
|
40
|
-
</description>
|
41
|
-
<language>en-us</language>
|
42
|
-
<docs>http://localhost:8983/solr</docs>
|
43
|
-
<xsl:apply-templates select="response/result/doc"/>
|
44
|
-
</channel>
|
45
|
-
</rss>
|
46
|
-
</xsl:template>
|
47
|
-
|
48
|
-
<!-- search results xslt -->
|
49
|
-
<xsl:template match="doc">
|
50
|
-
<xsl:variable name="id" select="str[@name='id']"/>
|
51
|
-
<xsl:variable name="timestamp" select="date[@name='timestamp']"/>
|
52
|
-
<item>
|
53
|
-
<title><xsl:value-of select="str[@name='name']"/></title>
|
54
|
-
<link>
|
55
|
-
http://localhost:8983/solr/select?q=id:<xsl:value-of select="$id"/>
|
56
|
-
</link>
|
57
|
-
<description>
|
58
|
-
<xsl:value-of select="arr[@name='features']"/>
|
59
|
-
</description>
|
60
|
-
<pubDate><xsl:value-of select="$timestamp"/></pubDate>
|
61
|
-
<guid>
|
62
|
-
http://localhost:8983/solr/select?q=id:<xsl:value-of select="$id"/>
|
63
|
-
</guid>
|
64
|
-
</item>
|
65
|
-
</xsl:template>
|
66
|
-
</xsl:stylesheet>
|
@@ -1,337 +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
|
-
<!--
|
21
|
-
Display the luke request handler with graphs
|
22
|
-
-->
|
23
|
-
<xsl:stylesheet
|
24
|
-
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
25
|
-
xmlns="http://www.w3.org/1999/xhtml"
|
26
|
-
version="1.0"
|
27
|
-
>
|
28
|
-
<xsl:output
|
29
|
-
method="html"
|
30
|
-
encoding="UTF-8"
|
31
|
-
media-type="text/html; charset=UTF-8"
|
32
|
-
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
|
33
|
-
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
|
34
|
-
/>
|
35
|
-
|
36
|
-
<xsl:variable name="title">Solr Luke Request Handler Response</xsl:variable>
|
37
|
-
|
38
|
-
<xsl:template match="/">
|
39
|
-
<html xmlns="http://www.w3.org/1999/xhtml">
|
40
|
-
<head>
|
41
|
-
<link rel="stylesheet" type="text/css" href="solr-admin.css"/>
|
42
|
-
<link rel="icon" href="favicon.ico" type="image/ico"/>
|
43
|
-
<link rel="shortcut icon" href="favicon.ico" type="image/ico"/>
|
44
|
-
<title>
|
45
|
-
<xsl:value-of select="$title"/>
|
46
|
-
</title>
|
47
|
-
<xsl:call-template name="css"/>
|
48
|
-
|
49
|
-
</head>
|
50
|
-
<body>
|
51
|
-
<h1>
|
52
|
-
<xsl:value-of select="$title"/>
|
53
|
-
</h1>
|
54
|
-
<div class="doc">
|
55
|
-
<ul>
|
56
|
-
<xsl:if test="response/lst[@name='index']">
|
57
|
-
<li>
|
58
|
-
<a href="#index">Index Statistics</a>
|
59
|
-
</li>
|
60
|
-
</xsl:if>
|
61
|
-
<xsl:if test="response/lst[@name='fields']">
|
62
|
-
<li>
|
63
|
-
<a href="#fields">Field Statistics</a>
|
64
|
-
<ul>
|
65
|
-
<xsl:for-each select="response/lst[@name='fields']/lst">
|
66
|
-
<li>
|
67
|
-
<a href="#{@name}">
|
68
|
-
<xsl:value-of select="@name"/>
|
69
|
-
</a>
|
70
|
-
</li>
|
71
|
-
</xsl:for-each>
|
72
|
-
</ul>
|
73
|
-
</li>
|
74
|
-
</xsl:if>
|
75
|
-
<xsl:if test="response/lst[@name='doc']">
|
76
|
-
<li>
|
77
|
-
<a href="#doc">Document statistics</a>
|
78
|
-
</li>
|
79
|
-
</xsl:if>
|
80
|
-
</ul>
|
81
|
-
</div>
|
82
|
-
<xsl:if test="response/lst[@name='index']">
|
83
|
-
<h2><a name="index"/>Index Statistics</h2>
|
84
|
-
<xsl:apply-templates select="response/lst[@name='index']"/>
|
85
|
-
</xsl:if>
|
86
|
-
<xsl:if test="response/lst[@name='fields']">
|
87
|
-
<h2><a name="fields"/>Field Statistics</h2>
|
88
|
-
<xsl:apply-templates select="response/lst[@name='fields']"/>
|
89
|
-
</xsl:if>
|
90
|
-
<xsl:if test="response/lst[@name='doc']">
|
91
|
-
<h2><a name="doc"/>Document statistics</h2>
|
92
|
-
<xsl:apply-templates select="response/lst[@name='doc']"/>
|
93
|
-
</xsl:if>
|
94
|
-
</body>
|
95
|
-
</html>
|
96
|
-
</xsl:template>
|
97
|
-
|
98
|
-
<xsl:template match="lst">
|
99
|
-
<xsl:if test="parent::lst">
|
100
|
-
<tr>
|
101
|
-
<td colspan="2">
|
102
|
-
<div class="doc">
|
103
|
-
<xsl:call-template name="list"/>
|
104
|
-
</div>
|
105
|
-
</td>
|
106
|
-
</tr>
|
107
|
-
</xsl:if>
|
108
|
-
<xsl:if test="not(parent::lst)">
|
109
|
-
<div class="doc">
|
110
|
-
<xsl:call-template name="list"/>
|
111
|
-
</div>
|
112
|
-
</xsl:if>
|
113
|
-
</xsl:template>
|
114
|
-
|
115
|
-
<xsl:template name="list">
|
116
|
-
<xsl:if test="count(child::*)>0">
|
117
|
-
<table>
|
118
|
-
<thead>
|
119
|
-
<tr>
|
120
|
-
<th colspan="2">
|
121
|
-
<p>
|
122
|
-
<a name="{@name}"/>
|
123
|
-
</p>
|
124
|
-
<xsl:value-of select="@name"/>
|
125
|
-
</th>
|
126
|
-
</tr>
|
127
|
-
</thead>
|
128
|
-
<tbody>
|
129
|
-
<xsl:choose>
|
130
|
-
<xsl:when
|
131
|
-
test="@name='histogram'">
|
132
|
-
<tr>
|
133
|
-
<td colspan="2">
|
134
|
-
<xsl:call-template name="histogram"/>
|
135
|
-
</td>
|
136
|
-
</tr>
|
137
|
-
</xsl:when>
|
138
|
-
<xsl:otherwise>
|
139
|
-
<xsl:apply-templates/>
|
140
|
-
</xsl:otherwise>
|
141
|
-
</xsl:choose>
|
142
|
-
</tbody>
|
143
|
-
</table>
|
144
|
-
</xsl:if>
|
145
|
-
</xsl:template>
|
146
|
-
|
147
|
-
<xsl:template name="histogram">
|
148
|
-
<div class="doc">
|
149
|
-
<xsl:call-template name="barchart">
|
150
|
-
<xsl:with-param name="max_bar_width">50</xsl:with-param>
|
151
|
-
<xsl:with-param name="iwidth">800</xsl:with-param>
|
152
|
-
<xsl:with-param name="iheight">160</xsl:with-param>
|
153
|
-
<xsl:with-param name="fill">blue</xsl:with-param>
|
154
|
-
</xsl:call-template>
|
155
|
-
</div>
|
156
|
-
</xsl:template>
|
157
|
-
|
158
|
-
<xsl:template name="barchart">
|
159
|
-
<xsl:param name="max_bar_width"/>
|
160
|
-
<xsl:param name="iwidth"/>
|
161
|
-
<xsl:param name="iheight"/>
|
162
|
-
<xsl:param name="fill"/>
|
163
|
-
<xsl:variable name="max">
|
164
|
-
<xsl:for-each select="int">
|
165
|
-
<xsl:sort data-type="number" order="descending"/>
|
166
|
-
<xsl:if test="position()=1">
|
167
|
-
<xsl:value-of select="."/>
|
168
|
-
</xsl:if>
|
169
|
-
</xsl:for-each>
|
170
|
-
</xsl:variable>
|
171
|
-
<xsl:variable name="bars">
|
172
|
-
<xsl:value-of select="count(int)"/>
|
173
|
-
</xsl:variable>
|
174
|
-
<xsl:variable name="bar_width">
|
175
|
-
<xsl:choose>
|
176
|
-
<xsl:when test="$max_bar_width < ($iwidth div $bars)">
|
177
|
-
<xsl:value-of select="$max_bar_width"/>
|
178
|
-
</xsl:when>
|
179
|
-
<xsl:otherwise>
|
180
|
-
<xsl:value-of select="$iwidth div $bars"/>
|
181
|
-
</xsl:otherwise>
|
182
|
-
</xsl:choose>
|
183
|
-
</xsl:variable>
|
184
|
-
<table class="histogram">
|
185
|
-
<tbody>
|
186
|
-
<tr>
|
187
|
-
<xsl:for-each select="int">
|
188
|
-
<td>
|
189
|
-
<xsl:value-of select="."/>
|
190
|
-
<div class="histogram">
|
191
|
-
<xsl:attribute name="style">background-color: <xsl:value-of select="$fill"/>; width: <xsl:value-of select="$bar_width"/>px; height: <xsl:value-of select="($iheight*number(.)) div $max"/>px;</xsl:attribute>
|
192
|
-
</div>
|
193
|
-
</td>
|
194
|
-
</xsl:for-each>
|
195
|
-
</tr>
|
196
|
-
<tr>
|
197
|
-
<xsl:for-each select="int">
|
198
|
-
<td>
|
199
|
-
<xsl:value-of select="@name"/>
|
200
|
-
</td>
|
201
|
-
</xsl:for-each>
|
202
|
-
</tr>
|
203
|
-
</tbody>
|
204
|
-
</table>
|
205
|
-
</xsl:template>
|
206
|
-
|
207
|
-
<xsl:template name="keyvalue">
|
208
|
-
<xsl:choose>
|
209
|
-
<xsl:when test="@name">
|
210
|
-
<tr>
|
211
|
-
<td class="name">
|
212
|
-
<xsl:value-of select="@name"/>
|
213
|
-
</td>
|
214
|
-
<td class="value">
|
215
|
-
<xsl:value-of select="."/>
|
216
|
-
</td>
|
217
|
-
</tr>
|
218
|
-
</xsl:when>
|
219
|
-
<xsl:otherwise>
|
220
|
-
<xsl:value-of select="."/>
|
221
|
-
</xsl:otherwise>
|
222
|
-
</xsl:choose>
|
223
|
-
</xsl:template>
|
224
|
-
|
225
|
-
<xsl:template match="int|bool|long|float|double|uuid|date">
|
226
|
-
<xsl:call-template name="keyvalue"/>
|
227
|
-
</xsl:template>
|
228
|
-
|
229
|
-
<xsl:template match="arr">
|
230
|
-
<tr>
|
231
|
-
<td class="name">
|
232
|
-
<xsl:value-of select="@name"/>
|
233
|
-
</td>
|
234
|
-
<td class="value">
|
235
|
-
<ul>
|
236
|
-
<xsl:for-each select="child::*">
|
237
|
-
<li>
|
238
|
-
<xsl:apply-templates/>
|
239
|
-
</li>
|
240
|
-
</xsl:for-each>
|
241
|
-
</ul>
|
242
|
-
</td>
|
243
|
-
</tr>
|
244
|
-
</xsl:template>
|
245
|
-
|
246
|
-
<xsl:template match="str">
|
247
|
-
<xsl:choose>
|
248
|
-
<xsl:when test="@name='schema' or @name='index' or @name='flags'">
|
249
|
-
<xsl:call-template name="schema"/>
|
250
|
-
</xsl:when>
|
251
|
-
<xsl:otherwise>
|
252
|
-
<xsl:call-template name="keyvalue"/>
|
253
|
-
</xsl:otherwise>
|
254
|
-
</xsl:choose>
|
255
|
-
</xsl:template>
|
256
|
-
|
257
|
-
<xsl:template name="schema">
|
258
|
-
<tr>
|
259
|
-
<td class="name">
|
260
|
-
<xsl:value-of select="@name"/>
|
261
|
-
</td>
|
262
|
-
<td class="value">
|
263
|
-
<xsl:if test="contains(.,'unstored')">
|
264
|
-
<xsl:value-of select="."/>
|
265
|
-
</xsl:if>
|
266
|
-
<xsl:if test="not(contains(.,'unstored'))">
|
267
|
-
<xsl:call-template name="infochar2string">
|
268
|
-
<xsl:with-param name="charList">
|
269
|
-
<xsl:value-of select="."/>
|
270
|
-
</xsl:with-param>
|
271
|
-
</xsl:call-template>
|
272
|
-
</xsl:if>
|
273
|
-
</td>
|
274
|
-
</tr>
|
275
|
-
</xsl:template>
|
276
|
-
|
277
|
-
<xsl:template name="infochar2string">
|
278
|
-
<xsl:param name="i">1</xsl:param>
|
279
|
-
<xsl:param name="charList"/>
|
280
|
-
|
281
|
-
<xsl:variable name="char">
|
282
|
-
<xsl:value-of select="substring($charList,$i,1)"/>
|
283
|
-
</xsl:variable>
|
284
|
-
<xsl:choose>
|
285
|
-
<xsl:when test="$char='I'">
|
286
|
-
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='I']"/> - </xsl:when>
|
287
|
-
<xsl:when test="$char='T'">
|
288
|
-
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='T']"/> - </xsl:when>
|
289
|
-
<xsl:when test="$char='S'">
|
290
|
-
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='S']"/> - </xsl:when>
|
291
|
-
<xsl:when test="$char='M'">
|
292
|
-
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='M']"/> - </xsl:when>
|
293
|
-
<xsl:when test="$char='V'">
|
294
|
-
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='V']"/> - </xsl:when>
|
295
|
-
<xsl:when test="$char='o'">
|
296
|
-
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='o']"/> - </xsl:when>
|
297
|
-
<xsl:when test="$char='p'">
|
298
|
-
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='p']"/> - </xsl:when>
|
299
|
-
<xsl:when test="$char='O'">
|
300
|
-
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='O']"/> - </xsl:when>
|
301
|
-
<xsl:when test="$char='L'">
|
302
|
-
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='L']"/> - </xsl:when>
|
303
|
-
<xsl:when test="$char='B'">
|
304
|
-
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='B']"/> - </xsl:when>
|
305
|
-
<xsl:when test="$char='C'">
|
306
|
-
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='C']"/> - </xsl:when>
|
307
|
-
<xsl:when test="$char='f'">
|
308
|
-
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='f']"/> - </xsl:when>
|
309
|
-
<xsl:when test="$char='l'">
|
310
|
-
<xsl:value-of select="/response/lst[@name='info']/lst/str[@name='l']"/> -
|
311
|
-
</xsl:when>
|
312
|
-
</xsl:choose>
|
313
|
-
|
314
|
-
<xsl:if test="not($i>=string-length($charList))">
|
315
|
-
<xsl:call-template name="infochar2string">
|
316
|
-
<xsl:with-param name="i">
|
317
|
-
<xsl:value-of select="$i+1"/>
|
318
|
-
</xsl:with-param>
|
319
|
-
<xsl:with-param name="charList">
|
320
|
-
<xsl:value-of select="$charList"/>
|
321
|
-
</xsl:with-param>
|
322
|
-
</xsl:call-template>
|
323
|
-
</xsl:if>
|
324
|
-
</xsl:template>
|
325
|
-
<xsl:template name="css">
|
326
|
-
<style type="text/css">
|
327
|
-
<![CDATA[
|
328
|
-
td.name {font-style: italic; font-size:80%; }
|
329
|
-
.doc { margin: 0.5em; border: solid grey 1px; }
|
330
|
-
.exp { display: none; font-family: monospace; white-space: pre; }
|
331
|
-
div.histogram { background: none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;}
|
332
|
-
table.histogram { width: auto; vertical-align: bottom; }
|
333
|
-
table.histogram td, table.histogram th { text-align: center; vertical-align: bottom; border-bottom: 1px solid #ff9933; width: auto; }
|
334
|
-
]]>
|
335
|
-
</style>
|
336
|
-
</xsl:template>
|
337
|
-
</xsl:stylesheet>
|