simple_solr_client 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: