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 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
- <!-- DisMaxRequestHandler allows easy searching across multiple fields
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">dismax</str>
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
- <!-- The spell check component can return a list of alternative spelling
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
- <queryResponseWriter name="xslt" class="org.apache.solr.request.XSLTResponseWriter">
421
- <int name="xsltCacheLifetimeSeconds">5</int>
422
- </queryResponseWriter>
423
-
424
- <admin>
425
- <defaultQuery>solr</defaultQuery>
426
-
427
- </admin>
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
-
@@ -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.class_name, :db_id => id_value, :id => solr_id_value}
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.class_name}-#{id_value.to_s}"
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:#{class_name}")
78
+ rsolr.delete_by_query("type:#{self.solr_type}")
79
79
  end
80
80
  end
81
81
  end
@@ -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
- def class_name
10
- to_s.underscore
11
- end
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:#{class_name}"] + parse_fq(search_params[:fq])
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
- def class_name
183
- "#{to_s.underscore}_test"
184
- end
183
+ @@solr_type = "#{self.to_s.underscore}_test"
185
184
  end
186
185
  end
187
186
  end
@@ -1,3 +1,3 @@
1
1
  module Solrsan
2
- VERSION = "0.5.6"
2
+ VERSION = "0.5.7"
3
3
  end
@@ -244,4 +244,3 @@ class SearchTest < Test::Unit::TestCase
244
244
  assert_not_nil docs.current_page
245
245
  end
246
246
  end
247
-
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.6
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-22 00:00:00.000000000 Z
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: &70205242302760 !ruby/object:Gem::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: *70205242302760
24
+ version_requirements: *70283206629140
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activemodel
27
- requirement: &70205242302160 !ruby/object:Gem::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: *70205242302160
35
+ version_requirements: *70283206628340
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: activesupport
38
- requirement: &70205242301660 !ruby/object:Gem::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: *70205242301660
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}&amp;wt=xslt&amp;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 &lt; ($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>