simple_solr_client 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (136) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +349 -0
  5. data/Rakefile +11 -0
  6. data/lib/simple_solr.rb +42 -0
  7. data/lib/simple_solr/client.rb +139 -0
  8. data/lib/simple_solr/client/core_admin.rb +0 -0
  9. data/lib/simple_solr/core.rb +50 -0
  10. data/lib/simple_solr/core/admin.rb +47 -0
  11. data/lib/simple_solr/core/core_data.rb +51 -0
  12. data/lib/simple_solr/core/index.rb +25 -0
  13. data/lib/simple_solr/core/search.rb +21 -0
  14. data/lib/simple_solr/response/document.rb +45 -0
  15. data/lib/simple_solr/response/generic_response.rb +19 -0
  16. data/lib/simple_solr/response/query_response.rb +54 -0
  17. data/lib/simple_solr/schema.rb +261 -0
  18. data/lib/simple_solr/schema/analysis.rb +58 -0
  19. data/lib/simple_solr/schema/copyfield.rb +42 -0
  20. data/lib/simple_solr/schema/dynamic_field.rb +23 -0
  21. data/lib/simple_solr/schema/field.rb +35 -0
  22. data/lib/simple_solr/schema/field_or_type.rb +112 -0
  23. data/lib/simple_solr/schema/field_type.rb +62 -0
  24. data/lib/simple_solr/schema/matcher.rb +16 -0
  25. data/lib/simple_solr/version.rb +3 -0
  26. data/simple_solr_client.gemspec +39 -0
  27. data/solr_sample_core/conf/_schema_analysis_stopwords_english.json +38 -0
  28. data/solr_sample_core/conf/_schema_analysis_synonyms_english.json +11 -0
  29. data/solr_sample_core/conf/admin-extra.html +24 -0
  30. data/solr_sample_core/conf/admin-extra.menu-bottom.html +25 -0
  31. data/solr_sample_core/conf/admin-extra.menu-top.html +25 -0
  32. data/solr_sample_core/conf/clustering/carrot2/kmeans-attributes.xml +19 -0
  33. data/solr_sample_core/conf/clustering/carrot2/lingo-attributes.xml +24 -0
  34. data/solr_sample_core/conf/clustering/carrot2/stc-attributes.xml +19 -0
  35. data/solr_sample_core/conf/currency.xml +67 -0
  36. data/solr_sample_core/conf/elevate.xml +38 -0
  37. data/solr_sample_core/conf/lang/contractions_ca.txt +8 -0
  38. data/solr_sample_core/conf/lang/contractions_fr.txt +15 -0
  39. data/solr_sample_core/conf/lang/contractions_ga.txt +5 -0
  40. data/solr_sample_core/conf/lang/contractions_it.txt +23 -0
  41. data/solr_sample_core/conf/lang/hyphenations_ga.txt +5 -0
  42. data/solr_sample_core/conf/lang/stemdict_nl.txt +6 -0
  43. data/solr_sample_core/conf/lang/stoptags_ja.txt +420 -0
  44. data/solr_sample_core/conf/lang/stopwords_ar.txt +125 -0
  45. data/solr_sample_core/conf/lang/stopwords_bg.txt +193 -0
  46. data/solr_sample_core/conf/lang/stopwords_ca.txt +220 -0
  47. data/solr_sample_core/conf/lang/stopwords_ckb.txt +136 -0
  48. data/solr_sample_core/conf/lang/stopwords_cz.txt +172 -0
  49. data/solr_sample_core/conf/lang/stopwords_da.txt +110 -0
  50. data/solr_sample_core/conf/lang/stopwords_de.txt +294 -0
  51. data/solr_sample_core/conf/lang/stopwords_el.txt +78 -0
  52. data/solr_sample_core/conf/lang/stopwords_en.txt +54 -0
  53. data/solr_sample_core/conf/lang/stopwords_es.txt +356 -0
  54. data/solr_sample_core/conf/lang/stopwords_eu.txt +99 -0
  55. data/solr_sample_core/conf/lang/stopwords_fa.txt +313 -0
  56. data/solr_sample_core/conf/lang/stopwords_fi.txt +97 -0
  57. data/solr_sample_core/conf/lang/stopwords_fr.txt +186 -0
  58. data/solr_sample_core/conf/lang/stopwords_ga.txt +110 -0
  59. data/solr_sample_core/conf/lang/stopwords_gl.txt +161 -0
  60. data/solr_sample_core/conf/lang/stopwords_hi.txt +235 -0
  61. data/solr_sample_core/conf/lang/stopwords_hu.txt +211 -0
  62. data/solr_sample_core/conf/lang/stopwords_hy.txt +46 -0
  63. data/solr_sample_core/conf/lang/stopwords_id.txt +359 -0
  64. data/solr_sample_core/conf/lang/stopwords_it.txt +303 -0
  65. data/solr_sample_core/conf/lang/stopwords_ja.txt +127 -0
  66. data/solr_sample_core/conf/lang/stopwords_lv.txt +172 -0
  67. data/solr_sample_core/conf/lang/stopwords_nl.txt +119 -0
  68. data/solr_sample_core/conf/lang/stopwords_no.txt +194 -0
  69. data/solr_sample_core/conf/lang/stopwords_pt.txt +253 -0
  70. data/solr_sample_core/conf/lang/stopwords_ro.txt +233 -0
  71. data/solr_sample_core/conf/lang/stopwords_ru.txt +243 -0
  72. data/solr_sample_core/conf/lang/stopwords_sv.txt +133 -0
  73. data/solr_sample_core/conf/lang/stopwords_th.txt +119 -0
  74. data/solr_sample_core/conf/lang/stopwords_tr.txt +212 -0
  75. data/solr_sample_core/conf/lang/userdict_ja.txt +29 -0
  76. data/solr_sample_core/conf/mapping-FoldToASCII.txt +3813 -0
  77. data/solr_sample_core/conf/mapping-ISOLatin1Accent.txt +246 -0
  78. data/solr_sample_core/conf/protwords.txt +21 -0
  79. data/solr_sample_core/conf/schema.xml +62 -0
  80. data/solr_sample_core/conf/scripts.conf +24 -0
  81. data/solr_sample_core/conf/solrconfig.xml +1702 -0
  82. data/solr_sample_core/conf/spellings.txt +2 -0
  83. data/solr_sample_core/conf/stopwords.txt +14 -0
  84. data/solr_sample_core/conf/syn.txt +0 -0
  85. data/solr_sample_core/conf/synonyms.txt +29 -0
  86. data/solr_sample_core/conf/token_fixing_charfilter.txt +110 -0
  87. data/solr_sample_core/conf/update-script.js +53 -0
  88. data/solr_sample_core/conf/velocity/README.txt +101 -0
  89. data/solr_sample_core/conf/velocity/VM_global_library.vm +175 -0
  90. data/solr_sample_core/conf/velocity/browse.vm +33 -0
  91. data/solr_sample_core/conf/velocity/cluster.vm +19 -0
  92. data/solr_sample_core/conf/velocity/cluster_results.vm +31 -0
  93. data/solr_sample_core/conf/velocity/debug.vm +28 -0
  94. data/solr_sample_core/conf/velocity/did_you_mean.vm +9 -0
  95. data/solr_sample_core/conf/velocity/error.vm +11 -0
  96. data/solr_sample_core/conf/velocity/facet_fields.vm +23 -0
  97. data/solr_sample_core/conf/velocity/facet_pivot.vm +12 -0
  98. data/solr_sample_core/conf/velocity/facet_queries.vm +12 -0
  99. data/solr_sample_core/conf/velocity/facet_ranges.vm +23 -0
  100. data/solr_sample_core/conf/velocity/facets.vm +10 -0
  101. data/solr_sample_core/conf/velocity/footer.vm +43 -0
  102. data/solr_sample_core/conf/velocity/head.vm +35 -0
  103. data/solr_sample_core/conf/velocity/header.vm +7 -0
  104. data/solr_sample_core/conf/velocity/hit.vm +25 -0
  105. data/solr_sample_core/conf/velocity/hit_grouped.vm +43 -0
  106. data/solr_sample_core/conf/velocity/hit_plain.vm +25 -0
  107. data/solr_sample_core/conf/velocity/join_doc.vm +20 -0
  108. data/solr_sample_core/conf/velocity/jquery.autocomplete.css +48 -0
  109. data/solr_sample_core/conf/velocity/jquery.autocomplete.js +763 -0
  110. data/solr_sample_core/conf/velocity/layout.vm +24 -0
  111. data/solr_sample_core/conf/velocity/main.css +230 -0
  112. data/solr_sample_core/conf/velocity/mime_type_lists.vm +68 -0
  113. data/solr_sample_core/conf/velocity/pagination_bottom.vm +22 -0
  114. data/solr_sample_core/conf/velocity/pagination_top.vm +29 -0
  115. data/solr_sample_core/conf/velocity/product_doc.vm +32 -0
  116. data/solr_sample_core/conf/velocity/query.vm +42 -0
  117. data/solr_sample_core/conf/velocity/query_form.vm +64 -0
  118. data/solr_sample_core/conf/velocity/query_group.vm +43 -0
  119. data/solr_sample_core/conf/velocity/query_spatial.vm +75 -0
  120. data/solr_sample_core/conf/velocity/results_list.vm +22 -0
  121. data/solr_sample_core/conf/velocity/richtext_doc.vm +153 -0
  122. data/solr_sample_core/conf/velocity/suggest.vm +8 -0
  123. data/solr_sample_core/conf/velocity/tabs.vm +50 -0
  124. data/solr_sample_core/conf/xslt/example.xsl +132 -0
  125. data/solr_sample_core/conf/xslt/example_atom.xsl +67 -0
  126. data/solr_sample_core/conf/xslt/example_rss.xsl +66 -0
  127. data/solr_sample_core/conf/xslt/luke.xsl +337 -0
  128. data/solr_sample_core/conf/xslt/updateXml.xsl +70 -0
  129. data/spec/client_basics_spec.rb +26 -0
  130. data/spec/connect_spec.rb +25 -0
  131. data/spec/core_basics.rb +21 -0
  132. data/spec/index_spec.rb +31 -0
  133. data/spec/load_spec.rb +7 -0
  134. data/spec/minitest_helper.rb +36 -0
  135. data/spec/schema_spec.rb +113 -0
  136. metadata +284 -0
@@ -0,0 +1,70 @@
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
+ <!--
19
+ Simple transform of Solr query response into Solr Update XML compliant XML.
20
+ When used in the xslt response writer you will get UpdaateXML as output.
21
+ But you can also store a query response XML to disk and feed this XML to
22
+ the XSLTUpdateRequestHandler to index the content. Provided as example only.
23
+ See http://wiki.apache.org/solr/XsltUpdateRequestHandler for more info
24
+ -->
25
+ <xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
26
+ <xsl:output media-type="text/xml" method="xml" indent="yes"/>
27
+
28
+ <xsl:template match='/'>
29
+ <add>
30
+ <xsl:apply-templates select="response/result/doc"/>
31
+ </add>
32
+ </xsl:template>
33
+
34
+ <!-- Ignore score (makes no sense to index) -->
35
+ <xsl:template match="doc/*[@name='score']" priority="100">
36
+ </xsl:template>
37
+
38
+ <xsl:template match="doc">
39
+ <xsl:variable name="pos" select="position()"/>
40
+ <doc>
41
+ <xsl:apply-templates>
42
+ <xsl:with-param name="pos"><xsl:value-of select="$pos"/></xsl:with-param>
43
+ </xsl:apply-templates>
44
+ </doc>
45
+ </xsl:template>
46
+
47
+ <!-- Flatten arrays to duplicate field lines -->
48
+ <xsl:template match="doc/arr" priority="100">
49
+ <xsl:variable name="fn" select="@name"/>
50
+
51
+ <xsl:for-each select="*">
52
+ <xsl:element name="field">
53
+ <xsl:attribute name="name"><xsl:value-of select="$fn"/></xsl:attribute>
54
+ <xsl:value-of select="."/>
55
+ </xsl:element>
56
+ </xsl:for-each>
57
+ </xsl:template>
58
+
59
+
60
+ <xsl:template match="doc/*">
61
+ <xsl:variable name="fn" select="@name"/>
62
+
63
+ <xsl:element name="field">
64
+ <xsl:attribute name="name"><xsl:value-of select="$fn"/></xsl:attribute>
65
+ <xsl:value-of select="."/>
66
+ </xsl:element>
67
+ </xsl:template>
68
+
69
+ <xsl:template match="*"/>
70
+ </xsl:stylesheet>
@@ -0,0 +1,26 @@
1
+ require 'minitest_helper'
2
+
3
+ describe SimpleSolrClient::Client do
4
+
5
+ before do
6
+ @client = TestClient.instance.client
7
+ end
8
+ it "creates a new object" do
9
+ @client.base_url.must_equal 'http://localhost:8983/solr'
10
+ end
11
+
12
+ it "strips off a trailing slash for base_url" do
13
+ c = SimpleSolrClient::Client.new('http://localhost:8983/solr/')
14
+ c.base_url.must_equal 'http://localhost:8983/solr'
15
+ end
16
+
17
+ it "constructs a url with no args" do
18
+ @client.url.must_equal 'http://localhost:8983/solr'
19
+ end
20
+
21
+ it "constructs a URL with args" do
22
+ @client.url('admin', 'ping').must_equal 'http://localhost:8983/solr/admin/ping'
23
+ end
24
+
25
+
26
+ end
@@ -0,0 +1,25 @@
1
+ require 'minitest_helper'
2
+
3
+ describe "Basic connection to a running solr" do
4
+
5
+ before do
6
+ @core = TempCore.instance.core('connect')
7
+ @client = TempCore.instance.client
8
+ end
9
+
10
+
11
+ it "gets some sort of response" do
12
+ @client._get('admin/cores').keys.must_include 'status'
13
+ end
14
+
15
+ it "gets an OK response from cores" do
16
+ @client._get('admin/cores')['status'].keys.must_include @core.name
17
+ end
18
+
19
+ it "gets a ping" do
20
+ @core.up?.must_equal true
21
+ end
22
+
23
+
24
+
25
+ end
@@ -0,0 +1,21 @@
1
+ require 'minitest_helper'
2
+
3
+ describe SimpleSolrClient::Client do
4
+
5
+ before do
6
+ @core = TempCore.instance.core('core_basics')
7
+ end
8
+ it "creates a new object" do
9
+ @core.base_url.must_equal "http://localhost:8983/solr"
10
+ end
11
+
12
+ it "constructs a url with no args" do
13
+ @core.url.must_equal "http://localhost:8983/solr/#{@core.name}"
14
+ end
15
+
16
+ it "constructs a URL with args" do
17
+ @core.url('admin', 'ping').must_equal "http://localhost:8983/solr/#{@core.name}/admin/ping"
18
+ end
19
+
20
+
21
+ end
@@ -0,0 +1,31 @@
1
+ require 'minitest_helper'
2
+
3
+ describe "Basic indexing/" do
4
+
5
+ before do
6
+ @core = TempCore.instance.core('index_spec')
7
+ @core.clear
8
+ end
9
+
10
+
11
+ it "clears" do
12
+ @core.number_of_documents.must_equal 0
13
+ end
14
+
15
+ it "adds" do
16
+ @core.add_docs({:id=>1, :name_s=>"Bill"}).commit
17
+ @core.number_of_documents.must_equal 1
18
+ end
19
+
20
+ it "deletes by query" do
21
+ @core.add_docs({:id=>1, :name_s=>"Bill"})
22
+ @core.add_docs({:id=>2, :name_s=>"Mike"})
23
+ @core.commit
24
+ @core.number_of_documents.must_equal 2
25
+ @core.delete('name_s:Mike').commit
26
+ @core.number_of_documents.must_equal 1
27
+ end
28
+
29
+
30
+ end
31
+
data/spec/load_spec.rb ADDED
@@ -0,0 +1,7 @@
1
+ require 'minitest_helper'
2
+
3
+ describe 'Version' do
4
+ it "has a version" do
5
+ SimpleSolrClient::VERSION.wont_be_nil
6
+ end
7
+ end
@@ -0,0 +1,36 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'simple_solr'
3
+ require 'minitest/spec'
4
+ require 'minitest/autorun'
5
+ require "minitest/reporters"
6
+ Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
7
+
8
+ require 'singleton'
9
+
10
+ ENV['TEST_SOLR_URL'] ||= 'http://localhost:8983/solr'
11
+ ENV['TEST_SOLR_CORE'] ||= 'core1'
12
+
13
+ class TestClient
14
+ include Singleton
15
+ attr_reader :client, :core
16
+ def initialize
17
+ @client = SimpleSolrClient::Client.new ENV['TEST_SOLR_URL']
18
+ @core = @client.core ENV['TEST_SOLR_CORE']
19
+ end
20
+ end
21
+
22
+ class TempCore
23
+ include Singleton
24
+ attr_reader :client
25
+ def initialize
26
+ @client = TestClient.instance.client
27
+ @tempcores = {}
28
+ Minitest.after_run { @client.unload_temp_cores }
29
+ end
30
+
31
+ def core(name)
32
+ @tempcores[name] ||= @client.temp_core
33
+ @tempcores[name]
34
+ end
35
+ end
36
+
@@ -0,0 +1,113 @@
1
+ require 'minitest_helper'
2
+
3
+ describe "Schema" do
4
+
5
+ SS = SimpleSolrClient::Schema # convenience
6
+
7
+ before do
8
+ @core = TempCore.instance.core('schema_spec')
9
+ @schema = @core.schema
10
+ end
11
+
12
+ describe "the id field" do
13
+ it "finds it" do
14
+ @schema.field('id').name.must_equal 'id'
15
+ end
16
+
17
+ it "has a type name of string" do
18
+ @schema.field('id').type_name.must_equal 'string'
19
+ end
20
+
21
+ it "has the string type" do
22
+ @schema.field('id').type.must_equal @schema.field_type('string')
23
+ end
24
+
25
+ it "matches on exact match" do
26
+ @schema.field('id').matches('id').must_equal true
27
+ end
28
+
29
+ it "doesn't match on inexact match" do
30
+ @schema.field('id').matches('testid').must_equal false
31
+ end
32
+
33
+ end
34
+
35
+ describe "the _i dynamic field" do
36
+ it "finds it" do
37
+ @schema.dynamic_field('*_i').wont_be_nil
38
+ end
39
+
40
+ it "has type int" do
41
+ @schema.dynamic_field("*_i").type.must_equal @schema.field_type('int')
42
+ end
43
+
44
+ it 'matches appropriates' do
45
+ dfield = @schema.dynamic_field('*_i')
46
+ dfield.matches('test_i').must_equal true
47
+ dfield.matches('test_s_i').must_equal true
48
+ dfield.matches('test_i_s').must_equal false
49
+ end
50
+
51
+ it "is found when looking for a match" do
52
+ dfield = @schema.dynamic_field('*_i')
53
+ results = @schema.resulting_fields("year_i")
54
+ results.size.must_equal 1
55
+ results.first.type.must_equal dfield.type
56
+ end
57
+
58
+ end
59
+
60
+ describe "add/delete field" do
61
+ it "allows us to add a field" do
62
+ @schema.add_field SS::Field.new(:name => 'new_field', :type_name => 'string')
63
+ @schema.write
64
+ @core.reload
65
+ @schema.field('new_field').wont_be_nil
66
+ end
67
+
68
+ it "allows us to drop a field" do
69
+ @schema.add_field SS::Field.new(:name => 'new_field', :type_name => 'string')
70
+ @schema.write
71
+ @core.reload
72
+ @schema.field('new_field').wont_be_nil
73
+ @schema.drop_field('new_field')
74
+ @schema.write
75
+ @schema = @core.reload.schema
76
+ @schema.fields.map(&:name).wont_include 'new_field'
77
+ end
78
+
79
+
80
+ end
81
+
82
+ describe 'Dynamic Fields' do
83
+ it "adds a dfield" do
84
+ @schema.add_dynamic_field SS::DynamicField.new(:name => '*_test_i', :type_name => 'string', :stored => true)
85
+ @schema.write
86
+ @schema = @core.reload.schema
87
+ @schema.dynamic_field('*_test_i').wont_be_nil
88
+ end
89
+
90
+ it "prefers longer dfield names when determining resulting_fields" do
91
+ @schema.add_dynamic_field SS::DynamicField.new(:name => '*_test_i', :type_name => 'string', :stored => true)
92
+ @schema.write
93
+ @schema = @core.reload.schema
94
+ rf = @schema.resulting_fields('bill_test_i')
95
+ rf.size.must_equal 1
96
+ rf.first.type.name.must_equal 'string'
97
+ end
98
+
99
+ it "prefers explicity-defined fields to dynamic fields" do
100
+ @schema.add_field SS::Field.new(:name=>'explicit_i', :type_name=>'string')
101
+ @schema.write
102
+ @schema = @core.reload.schema
103
+ rf = @schema.resulting_fields('explicit_i')
104
+ rf.size.must_equal 1
105
+ rf.first.type.name.must_equal 'string'
106
+ end
107
+
108
+
109
+ end
110
+
111
+
112
+ end
113
+
metadata ADDED
@@ -0,0 +1,284 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: simple_solr_client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Bill Dueber
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-01-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httpclient
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: nokogiri
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: oj
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.7'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.7'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '10.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '10.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: minitest
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: minitest-reporters
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description:
112
+ email:
113
+ - bill@dueber.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - Gemfile
119
+ - LICENSE.txt
120
+ - README.md
121
+ - Rakefile
122
+ - lib/simple_solr.rb
123
+ - lib/simple_solr/client.rb
124
+ - lib/simple_solr/client/core_admin.rb
125
+ - lib/simple_solr/core.rb
126
+ - lib/simple_solr/core/admin.rb
127
+ - lib/simple_solr/core/core_data.rb
128
+ - lib/simple_solr/core/index.rb
129
+ - lib/simple_solr/core/search.rb
130
+ - lib/simple_solr/response/document.rb
131
+ - lib/simple_solr/response/generic_response.rb
132
+ - lib/simple_solr/response/query_response.rb
133
+ - lib/simple_solr/schema.rb
134
+ - lib/simple_solr/schema/analysis.rb
135
+ - lib/simple_solr/schema/copyfield.rb
136
+ - lib/simple_solr/schema/dynamic_field.rb
137
+ - lib/simple_solr/schema/field.rb
138
+ - lib/simple_solr/schema/field_or_type.rb
139
+ - lib/simple_solr/schema/field_type.rb
140
+ - lib/simple_solr/schema/matcher.rb
141
+ - lib/simple_solr/version.rb
142
+ - simple_solr_client.gemspec
143
+ - solr_sample_core/conf/_schema_analysis_stopwords_english.json
144
+ - solr_sample_core/conf/_schema_analysis_synonyms_english.json
145
+ - solr_sample_core/conf/admin-extra.html
146
+ - solr_sample_core/conf/admin-extra.menu-bottom.html
147
+ - solr_sample_core/conf/admin-extra.menu-top.html
148
+ - solr_sample_core/conf/clustering/carrot2/kmeans-attributes.xml
149
+ - solr_sample_core/conf/clustering/carrot2/lingo-attributes.xml
150
+ - solr_sample_core/conf/clustering/carrot2/stc-attributes.xml
151
+ - solr_sample_core/conf/currency.xml
152
+ - solr_sample_core/conf/elevate.xml
153
+ - solr_sample_core/conf/lang/contractions_ca.txt
154
+ - solr_sample_core/conf/lang/contractions_fr.txt
155
+ - solr_sample_core/conf/lang/contractions_ga.txt
156
+ - solr_sample_core/conf/lang/contractions_it.txt
157
+ - solr_sample_core/conf/lang/hyphenations_ga.txt
158
+ - solr_sample_core/conf/lang/stemdict_nl.txt
159
+ - solr_sample_core/conf/lang/stoptags_ja.txt
160
+ - solr_sample_core/conf/lang/stopwords_ar.txt
161
+ - solr_sample_core/conf/lang/stopwords_bg.txt
162
+ - solr_sample_core/conf/lang/stopwords_ca.txt
163
+ - solr_sample_core/conf/lang/stopwords_ckb.txt
164
+ - solr_sample_core/conf/lang/stopwords_cz.txt
165
+ - solr_sample_core/conf/lang/stopwords_da.txt
166
+ - solr_sample_core/conf/lang/stopwords_de.txt
167
+ - solr_sample_core/conf/lang/stopwords_el.txt
168
+ - solr_sample_core/conf/lang/stopwords_en.txt
169
+ - solr_sample_core/conf/lang/stopwords_es.txt
170
+ - solr_sample_core/conf/lang/stopwords_eu.txt
171
+ - solr_sample_core/conf/lang/stopwords_fa.txt
172
+ - solr_sample_core/conf/lang/stopwords_fi.txt
173
+ - solr_sample_core/conf/lang/stopwords_fr.txt
174
+ - solr_sample_core/conf/lang/stopwords_ga.txt
175
+ - solr_sample_core/conf/lang/stopwords_gl.txt
176
+ - solr_sample_core/conf/lang/stopwords_hi.txt
177
+ - solr_sample_core/conf/lang/stopwords_hu.txt
178
+ - solr_sample_core/conf/lang/stopwords_hy.txt
179
+ - solr_sample_core/conf/lang/stopwords_id.txt
180
+ - solr_sample_core/conf/lang/stopwords_it.txt
181
+ - solr_sample_core/conf/lang/stopwords_ja.txt
182
+ - solr_sample_core/conf/lang/stopwords_lv.txt
183
+ - solr_sample_core/conf/lang/stopwords_nl.txt
184
+ - solr_sample_core/conf/lang/stopwords_no.txt
185
+ - solr_sample_core/conf/lang/stopwords_pt.txt
186
+ - solr_sample_core/conf/lang/stopwords_ro.txt
187
+ - solr_sample_core/conf/lang/stopwords_ru.txt
188
+ - solr_sample_core/conf/lang/stopwords_sv.txt
189
+ - solr_sample_core/conf/lang/stopwords_th.txt
190
+ - solr_sample_core/conf/lang/stopwords_tr.txt
191
+ - solr_sample_core/conf/lang/userdict_ja.txt
192
+ - solr_sample_core/conf/mapping-FoldToASCII.txt
193
+ - solr_sample_core/conf/mapping-ISOLatin1Accent.txt
194
+ - solr_sample_core/conf/protwords.txt
195
+ - solr_sample_core/conf/schema.xml
196
+ - solr_sample_core/conf/scripts.conf
197
+ - solr_sample_core/conf/solrconfig.xml
198
+ - solr_sample_core/conf/spellings.txt
199
+ - solr_sample_core/conf/stopwords.txt
200
+ - solr_sample_core/conf/syn.txt
201
+ - solr_sample_core/conf/synonyms.txt
202
+ - solr_sample_core/conf/token_fixing_charfilter.txt
203
+ - solr_sample_core/conf/update-script.js
204
+ - solr_sample_core/conf/velocity/README.txt
205
+ - solr_sample_core/conf/velocity/VM_global_library.vm
206
+ - solr_sample_core/conf/velocity/browse.vm
207
+ - solr_sample_core/conf/velocity/cluster.vm
208
+ - solr_sample_core/conf/velocity/cluster_results.vm
209
+ - solr_sample_core/conf/velocity/debug.vm
210
+ - solr_sample_core/conf/velocity/did_you_mean.vm
211
+ - solr_sample_core/conf/velocity/error.vm
212
+ - solr_sample_core/conf/velocity/facet_fields.vm
213
+ - solr_sample_core/conf/velocity/facet_pivot.vm
214
+ - solr_sample_core/conf/velocity/facet_queries.vm
215
+ - solr_sample_core/conf/velocity/facet_ranges.vm
216
+ - solr_sample_core/conf/velocity/facets.vm
217
+ - solr_sample_core/conf/velocity/footer.vm
218
+ - solr_sample_core/conf/velocity/head.vm
219
+ - solr_sample_core/conf/velocity/header.vm
220
+ - solr_sample_core/conf/velocity/hit.vm
221
+ - solr_sample_core/conf/velocity/hit_grouped.vm
222
+ - solr_sample_core/conf/velocity/hit_plain.vm
223
+ - solr_sample_core/conf/velocity/join_doc.vm
224
+ - solr_sample_core/conf/velocity/jquery.autocomplete.css
225
+ - solr_sample_core/conf/velocity/jquery.autocomplete.js
226
+ - solr_sample_core/conf/velocity/layout.vm
227
+ - solr_sample_core/conf/velocity/main.css
228
+ - solr_sample_core/conf/velocity/mime_type_lists.vm
229
+ - solr_sample_core/conf/velocity/pagination_bottom.vm
230
+ - solr_sample_core/conf/velocity/pagination_top.vm
231
+ - solr_sample_core/conf/velocity/product_doc.vm
232
+ - solr_sample_core/conf/velocity/query.vm
233
+ - solr_sample_core/conf/velocity/query_form.vm
234
+ - solr_sample_core/conf/velocity/query_group.vm
235
+ - solr_sample_core/conf/velocity/query_spatial.vm
236
+ - solr_sample_core/conf/velocity/results_list.vm
237
+ - solr_sample_core/conf/velocity/richtext_doc.vm
238
+ - solr_sample_core/conf/velocity/suggest.vm
239
+ - solr_sample_core/conf/velocity/tabs.vm
240
+ - solr_sample_core/conf/xslt/example.xsl
241
+ - solr_sample_core/conf/xslt/example_atom.xsl
242
+ - solr_sample_core/conf/xslt/example_rss.xsl
243
+ - solr_sample_core/conf/xslt/luke.xsl
244
+ - solr_sample_core/conf/xslt/updateXml.xsl
245
+ - spec/client_basics_spec.rb
246
+ - spec/connect_spec.rb
247
+ - spec/core_basics.rb
248
+ - spec/index_spec.rb
249
+ - spec/load_spec.rb
250
+ - spec/minitest_helper.rb
251
+ - spec/schema_spec.rb
252
+ homepage: https://github.com/billdueber/simple_solr
253
+ licenses:
254
+ - MIT
255
+ metadata: {}
256
+ post_install_message:
257
+ rdoc_options: []
258
+ require_paths:
259
+ - lib
260
+ required_ruby_version: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - ">="
263
+ - !ruby/object:Gem::Version
264
+ version: '0'
265
+ required_rubygems_version: !ruby/object:Gem::Requirement
266
+ requirements:
267
+ - - ">="
268
+ - !ruby/object:Gem::Version
269
+ version: '0'
270
+ requirements: []
271
+ rubyforge_project:
272
+ rubygems_version: 2.4.5
273
+ signing_key:
274
+ specification_version: 4
275
+ summary: Interact with a Solr API via JSON
276
+ test_files:
277
+ - spec/client_basics_spec.rb
278
+ - spec/connect_spec.rb
279
+ - spec/core_basics.rb
280
+ - spec/index_spec.rb
281
+ - spec/load_spec.rb
282
+ - spec/minitest_helper.rb
283
+ - spec/schema_spec.rb
284
+ has_rdoc: