datastax_rails 2.3.1 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.rdoc +7 -0
- data/config/solrconfig.xml.erb +2 -2
- data/lib/datastax_rails/base.rb +10 -2
- data/lib/datastax_rails/schema/migrator.rb +25 -0
- data/lib/datastax_rails/schema/solr.rb +1 -0
- data/lib/datastax_rails/tasks/ds.rake +3 -1
- data/lib/datastax_rails/version.rb +1 -1
- data/spec/datastax_rails/dynamic_model_spec.rb +1 -1
- data/spec/dummy/log/test.log +18 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e80abdc73c3bac8e56fdb675295e529983946232
|
4
|
+
data.tar.gz: 5da1c5c5adb42a8fa0acbbd179dc8f418073cb56
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 84d18abd6033f66ca2398dbdbb1e6d8971fa656b80b80b570144265a1135e2d8c106bd32c195beb518ce4346e47cd31a7fd677f531cb9d0fe6379644deee719f
|
7
|
+
data.tar.gz: 02d506b87d0868e49dd05b310c6c1777bef53c45e34a9520217cb65a2a909a2a355f2cb6b3f513158a3001e9f748a84736df66f72ef21ef938fd4b9897b4e8b2
|
data/README.rdoc
CHANGED
@@ -13,6 +13,13 @@ Significant changes from SolandraObject:
|
|
13
13
|
* Solr communication is now handled directly via RSolr
|
14
14
|
* Bifurcation of data is no longer necessary as DSE writes data to SOLR automatically
|
15
15
|
|
16
|
+
As of 2.4.0, DSE 4.7 is supported and live indexing is enabled by default.
|
17
|
+
If you are using any version prior to DSE 4.7 or do not wish to use live indexing,
|
18
|
+
you will want to override the following settings:
|
19
|
+
|
20
|
+
DatastaxRails::Base.solr_commit_time = 5000
|
21
|
+
DatastaxRails::Base.ram_buffer_size = 100
|
22
|
+
|
16
23
|
=== Usage Note
|
17
24
|
|
18
25
|
Before using this gem, you should probably take a strong look at the type of problem you are trying to solve.
|
data/config/solrconfig.xml.erb
CHANGED
@@ -47,7 +47,7 @@
|
|
47
47
|
that you fully re-index after changing this setting as it can
|
48
48
|
affect both how text is indexed and queried.
|
49
49
|
-->
|
50
|
-
<luceneMatchVersion>
|
50
|
+
<luceneMatchVersion>4.10.3</luceneMatchVersion>
|
51
51
|
|
52
52
|
<!-- Enable DSE Search new type mappings -->
|
53
53
|
<dseTypeMappingVersion>2</dseTypeMappingVersion>
|
@@ -111,7 +111,7 @@
|
|
111
111
|
<indexConfig>
|
112
112
|
|
113
113
|
<useCompoundFile>false</useCompoundFile>
|
114
|
-
<ramBufferSizeMB
|
114
|
+
<ramBufferSizeMB><%= @ram_buffer_size %></ramBufferSizeMB>
|
115
115
|
<mergeFactor>10</mergeFactor>
|
116
116
|
|
117
117
|
<!-- Unlock On Startup
|
data/lib/datastax_rails/base.rb
CHANGED
@@ -392,9 +392,17 @@ module DatastaxRails #:nodoc:
|
|
392
392
|
# See {DatastaxRails::WideStorageModel} or {DatastaxRails::Payload} model for an example
|
393
393
|
class_attribute :create_options
|
394
394
|
|
395
|
-
# Allows the setting of how frequently to commit data to solr. Default is
|
395
|
+
# Allows the setting of how frequently to commit data to solr. Default is 1000ms.
|
396
|
+
# If you're running something prior to DSE 4.7 or not using live indexing, you should
|
397
|
+
# change this to at least 5000ms.
|
396
398
|
class_attribute :solr_commit_time
|
397
|
-
self.solr_commit_time =
|
399
|
+
self.solr_commit_time = 1000
|
400
|
+
|
401
|
+
# Allows the setting of how much memory to dedicate to the solr ram buffer. This defaults to 2000MB
|
402
|
+
# in order to allow live indexing to do its thing. If you don't want to use live indexing (or if you
|
403
|
+
# are using DSE prior to 4.7) you should set this to something more reasonable like 100MB.
|
404
|
+
class_attribute :ram_buffer_size
|
405
|
+
self.ram_buffer_size = 2000
|
398
406
|
|
399
407
|
# Stores the attribute that wide models should cluster on. Basically, this is the
|
400
408
|
# attribute that CQL uses to "group" columns into logical records even though they
|
@@ -16,6 +16,31 @@ module DatastaxRails
|
|
16
16
|
@errors = []
|
17
17
|
end
|
18
18
|
|
19
|
+
def reindex_all
|
20
|
+
say_with_time('Reindexing all models') do
|
21
|
+
FileList[rails_models].each do |model|
|
22
|
+
require model
|
23
|
+
end
|
24
|
+
|
25
|
+
count = 0
|
26
|
+
DatastaxRails::Base.models.each do |m|
|
27
|
+
count += reindex_one(m) unless m.abstract_class?
|
28
|
+
end
|
29
|
+
count
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def reindex_one(model)
|
34
|
+
count = 0
|
35
|
+
unless model <= DatastaxRails::CassandraOnlyModel
|
36
|
+
say_with_time("Reindexing #{model.name}") do
|
37
|
+
reindex_solr(model, false)
|
38
|
+
count += 1
|
39
|
+
end
|
40
|
+
end
|
41
|
+
count
|
42
|
+
end
|
43
|
+
|
19
44
|
def migrate_all(force = false)
|
20
45
|
say_with_time('Migrating all models') do
|
21
46
|
FileList[rails_models].each do |model|
|
@@ -67,6 +67,7 @@ module DatastaxRails
|
|
67
67
|
solrconfig = Rails.root.join('config', 'solr', "#{model.column_family}-solrconfig.xml").read
|
68
68
|
else
|
69
69
|
@solr_commit_time = model.solr_commit_time
|
70
|
+
@ram_buffer_size = model.ram_buffer_size
|
70
71
|
solrconfig = ERB.new(File.read(File.join(File.dirname(__FILE__), '..', '..', '..', 'config', 'solrconfig.xml.erb'))).result(binding)
|
71
72
|
end
|
72
73
|
if Rails.root.join('config', 'solr', "#{model.column_family}-stopwords.txt").exist?
|
@@ -37,8 +37,10 @@ namespace :ds do
|
|
37
37
|
task :reindex, [:model] => :configure do |_t, args|
|
38
38
|
if args[:model].blank?
|
39
39
|
puts "\nUSAGE: rake ds:reindex[Model]"
|
40
|
+
elsif args[:model] == 'all'
|
41
|
+
@migrator.reindex_all
|
40
42
|
else
|
41
|
-
@migrator.
|
43
|
+
@migrator.reindex_one(args[:model].constantize)
|
42
44
|
end
|
43
45
|
end
|
44
46
|
|
@@ -33,8 +33,8 @@ describe DatastaxRails::DynamicModel do
|
|
33
33
|
two.save
|
34
34
|
one.destroy
|
35
35
|
DynamicTestModel1.commit_solr
|
36
|
-
expect(DynamicTestModel1.count).to be(0)
|
37
36
|
DynamicTestModel2.commit_solr
|
37
|
+
expect(DynamicTestModel1.count).to be(0)
|
38
38
|
expect(DynamicTestModel2.count).to be(1)
|
39
39
|
end
|
40
40
|
|
data/spec/dummy/log/test.log
CHANGED
@@ -571,3 +571,21 @@
|
|
571
571
|
[1m[36mTeamMetadata CQL (7.9ms)[0m [1mINSERT INTO dynamic_model (group,id,s_,d_) VALUES (?,?,?,?) [0m ["team", #<Cassandra::TimeUuid:0x007f4544991598 @n=194877043329956181002329162597684281855>, {"s_source"=>"TV", "s_medium"=>"television"}, {"d_published_on"=>2015-04-28 00:00:00 UTC}] - 0 results
|
572
572
|
[1m[35mCoreMetadata Search (6.4ms)[0m {q: "(bbc)", sort: "", fq: ["group:(core)"], fl: "id,group,s_*,t_*,b_*,d_*,l_*,db_*,ts_*,i_*,f_*,u_*", page: 1, per_page: 100000}
|
573
573
|
[1m[36mCoreMetadata Search (5.2ms)[0m [1m{q: "(tv)", sort: "", fq: ["group:(core)"], fl: "id,group,s_*,t_*,b_*,d_*,l_*,db_*,ts_*,i_*,f_*,u_*", page: 1, per_page: 100000}[0m
|
574
|
+
[1m[36mPersonRole Search (11.4ms)[0m [1m{q: "*:*", sort: "", fq: ["person_id:(73fd1d42-2190-11e5-a954-4136c888eb9c)"], fl: "id,person_id,role_id,created_at,updated_at", page: 1, per_page: 100000}[0m
|
575
|
+
[1m[35mRole CQL (7.7ms)[0m SELECT id,name,created_at,updated_at FROM roles WHERE "id" IN (?,?) LIMIT 100000 [#<Cassandra::TimeUuid:0x007f0b38e2c800 @n=154185041942365393188856393493624783394>, #<Cassandra::TimeUuid:0x007f0b38e2e100 @n=154208614697558262256981922784432414106>] - 2 results
|
576
|
+
[1m[36mPerson Search (5.2ms)[0m [1m{q: "*:*", sort: "", fq: ["sort_name:(steve)"], fl: "id", page: 1, per_page: 1}[0m
|
577
|
+
[1m[35mPerson CQL (7.8ms)[0m INSERT INTO people (name,str_,created_at,updated_at,id) VALUES (?,?,?,?,?) ["Steve", {"str_favorite_color"=>"blue"}, 2015-07-03 14:33:27 UTC, 2015-07-03 14:33:27 UTC, #<Cassandra::TimeUuid:0x007f0b38e63c38 @n=159442905651352150554347113102875752322>] - 0 results
|
578
|
+
[1m[36mPerson Search (6.5ms)[0m [1m{q: "*:*", sort: "", fq: ["str_favorite_color:(blue)"], fl: "id,name,birthdate,nickname,email_addresses,str_*,created_at,updated_at", page: 1, per_page: 100000}[0m
|
579
|
+
[1m[35mCoreMetadata CQL (5.6ms)[0m INSERT INTO dynamic_model (group,s_,ts_,id) VALUES (?,?,?,?) ["core", {"s_source"=>"BBC", "s_author"=>"John"}, {"ts_published_at"=>2015-07-03 14:33:30 UTC}, #<Cassandra::TimeUuid:0x007f0b38ec2990 @n=161544733729060566312981916619281616201>] - 0 results
|
580
|
+
[1m[36mTeamMetadata CQL (4.8ms)[0m [1mINSERT INTO dynamic_model (group,id,s_,d_) VALUES (?,?,?,?) [0m ["team", #<Cassandra::TimeUuid:0x007f0b38ef8360 @n=161544733729060566312981916619281616201>, {"s_source"=>"TV", "s_medium"=>"television"}, {"d_published_on"=>2015-07-03 00:00:00 UTC}] - 0 results
|
581
|
+
[1m[35mCoreMetadata Search (22.4ms)[0m {q: "(bbc)", sort: "", fq: ["group:(core)"], fl: "id,group,s_*,t_*,b_*,d_*,l_*,db_*,ts_*,i_*,f_*,u_*", page: 1, per_page: 100000}
|
582
|
+
[1m[36mCoreMetadata Search (39.2ms)[0m [1m{q: "(tv)", sort: "", fq: ["group:(core)"], fl: "id,group,s_*,t_*,b_*,d_*,l_*,db_*,ts_*,i_*,f_*,u_*", page: 1, per_page: 100000}[0m
|
583
|
+
[1m[36mPersonRole Search (5.5ms)[0m [1m{q: "*:*", sort: "", fq: ["person_id:(212ef5e4-2196-11e5-88d7-1d26c3e00733)"], fl: "id,person_id,role_id,created_at,updated_at", page: 1, per_page: 100000}[0m
|
584
|
+
[1m[35mRole CQL (4.1ms)[0m SELECT id,name,created_at,updated_at FROM roles WHERE "id" IN (?,?) LIMIT 100000 [#<Cassandra::TimeUuid:0x007f8900dd1e28 @n=44121189366645637896307254878190144332>, #<Cassandra::TimeUuid:0x007f8900dd1bd0 @n=44139174951818001042741152732173921356>] - 2 results
|
585
|
+
[1m[36mPerson Search (3.8ms)[0m [1m{q: "*:*", sort: "", fq: ["sort_name:(steve)"], fl: "id", page: 1, per_page: 1}[0m
|
586
|
+
[1m[35mPerson CQL (5.3ms)[0m INSERT INTO people (name,str_,created_at,updated_at,id) VALUES (?,?,?,?,?) ["Steve", {"str_favorite_color"=>"blue"}, 2015-07-03 15:14:07 UTC, 2015-07-03 15:14:07 UTC, #<Cassandra::TimeUuid:0x007f8900e04d50 @n=50807323722007417899209455217420016375>] - 0 results
|
587
|
+
[1m[36mPerson Search (5.7ms)[0m [1m{q: "*:*", sort: "", fq: ["str_favorite_color:(blue)"], fl: "id,name,birthdate,nickname,email_addresses,str_*,created_at,updated_at", page: 1, per_page: 100000}[0m
|
588
|
+
[1m[35mCoreMetadata CQL (4.9ms)[0m INSERT INTO dynamic_model (group,s_,ts_,id) VALUES (?,?,?,?) ["core", {"s_source"=>"BBC", "s_author"=>"John"}, {"ts_published_at"=>2015-07-03 15:14:10 UTC}, #<Cassandra::TimeUuid:0x007f8900e69ea8 @n=52989871036248616450023570844302361768>] - 0 results
|
589
|
+
[1m[36mTeamMetadata CQL (7.7ms)[0m [1mINSERT INTO dynamic_model (group,id,s_,d_) VALUES (?,?,?,?) [0m ["team", #<Cassandra::TimeUuid:0x007f8900eb2ef0 @n=52989871036248616450023570844302361768>, {"s_source"=>"TV", "s_medium"=>"television"}, {"d_published_on"=>2015-07-03 00:00:00 UTC}] - 0 results
|
590
|
+
[1m[35mCoreMetadata Search (4.4ms)[0m {q: "(bbc)", sort: "", fq: ["group:(core)"], fl: "id,group,s_*,t_*,b_*,d_*,l_*,db_*,ts_*,i_*,f_*,u_*", page: 1, per_page: 100000}
|
591
|
+
[1m[36mCoreMetadata Search (32.3ms)[0m [1m{q: "(tv)", sort: "", fq: ["group:(core)"], fl: "id,group,s_*,t_*,b_*,d_*,l_*,db_*,ts_*,i_*,f_*,u_*", page: 1, per_page: 100000}[0m
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: datastax_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason M. Kusar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
version: '2.1'
|
40
40
|
- - '>='
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: 2.1.
|
42
|
+
version: 2.1.4
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -49,7 +49,7 @@ dependencies:
|
|
49
49
|
version: '2.1'
|
50
50
|
- - '>='
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version: 2.1.
|
52
|
+
version: 2.1.4
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
54
|
name: rsolr
|
55
55
|
requirement: !ruby/object:Gem::Requirement
|