utopian_solrizer 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/utopian_solrizer.rb +101 -0
  3. metadata +100 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 6c0dab29ecb2c1ad286028c684f6901afc4c6841e0d0d235f51267566c66d354
4
+ data.tar.gz: dc9b440bf934b9a7ff03cc201c92596d0396e50c401c73184d70890fcbbffcc5
5
+ SHA512:
6
+ metadata.gz: d46fd7c24bf95ff8040e3f5007fe9abcd1fd18a8e31fae1a62df722485a5ce2ef19a091b148daaa3bd90ccd64ce02e5be59a157ee8522eb3a329375a2c9bfdd4
7
+ data.tar.gz: 23fc6f739844298052b73d51d72df2345eb35be3746d5e3decc8fa7eba0a4457860c52272d0be881ef66883ab33ea2af8a76a7e5d700970dba9538100064548b
@@ -0,0 +1,101 @@
1
+ require 'utopian_ruby_api'
2
+ require 'rsolr'
3
+ require 'date'
4
+ require 'time'
5
+
6
+ module UtopianSolrizer
7
+
8
+ class << self
9
+ # define utopian solr fileds by following solr dynamic fields conventions
10
+ @@fields = {
11
+ 'id' => 'id',
12
+ 'author' => 'author_ssi',
13
+ 'moderator' => 'moderator_ssim',
14
+ 'permlink' => 'permlink_ssi',
15
+ 'category' => 'category_ssi',
16
+ 'tags' => 'tags_ssim',
17
+ 'title' => 'title_tsim',
18
+ 'body' => 'body_tsim',
19
+ 'created' => 'created_dts',
20
+ 'repository' => 'repository_ssi'
21
+ }
22
+
23
+
24
+ # Add/update a post in solr
25
+ def solrize_post(post, solr_options, overwrite=true)
26
+ rsolr = RSolr.connect solr_options
27
+ if (overwrite==true) or (not exist(solr_options, post.id))
28
+ rsolr.add(
29
+ @@fields['id'] => post.id,
30
+ @@fields['author'] => post.author,
31
+ @@fields['moderator'] => post.moderator,
32
+ @@fields['permlink'] => post.permlink,
33
+ @@fields['category'] => post.json_metadata['type'],
34
+ @@fields['tags'] => post.json_metadata['tags'],
35
+ @@fields['title'] => post.title,
36
+ @@fields['body'] => post.body,
37
+ @@fields['created'] => post.created,
38
+ @@fields['repository'] => post.json_metadata['repository']['html_url']
39
+ )
40
+ rsolr.commit
41
+ end
42
+ end
43
+
44
+ # Add posts by criterias
45
+ def solrize_posts_by_criterias(criterias, solr_options)
46
+ UtopianRuby::UtopianRubyAPI.get_posts_obj(criterias).each do |post|
47
+ solrize_post(post, solr_options)
48
+ end
49
+ end
50
+
51
+ # Add posts within minutes to Solr
52
+ def solrize_posts_within_minutes(criterias, solr_options, minutes)
53
+ total_updated = 0
54
+ limit = 100
55
+ skip = 0
56
+ reached_end = false
57
+ unless reached_end==true
58
+ criterias = {"limit":limit,"skip":skip}
59
+ UtopianRuby::UtopianRubyAPI.get_posts_obj(criterias).each do |post|
60
+ if (Time.parse(Time.now.to_s)-Time.parse(post.created)) <= minutes*60
61
+ #puts 'Solrizing post: ' + post.permlink
62
+ total_updated = total_updated + 1
63
+ solrize_post(post, solr_options)
64
+ else
65
+ reached_end=true
66
+ break
67
+ end
68
+ end
69
+ skip = skip + limit
70
+ end
71
+ total_updated
72
+ end
73
+
74
+ # search particular posts
75
+ def query(solr_options, params)
76
+ rsolr = RSolr.connect solr_options
77
+ response = rsolr.select :params => params
78
+ end
79
+
80
+ # check if a solr document exists
81
+ def exist(solr_options, id)
82
+ params = { :q => 'id:'+id.to_s }
83
+ r = query(solr_options, params)
84
+ if r["response"]["numFound"].to_i > 0
85
+ return true
86
+ end
87
+ false
88
+ end
89
+
90
+ # delete solr document
91
+ def delete(solr_options, id)
92
+ if exist(solr_options, id)
93
+ rsolr = RSolr.connect solr_options
94
+ rsolr.delete_by_id(id)
95
+ rsolr.commit
96
+ end
97
+ end
98
+
99
+ end
100
+
101
+ end
metadata ADDED
@@ -0,0 +1,100 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: utopian_solrizer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Yuxi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-02-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rsolr
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
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: utopian_ruby_api
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.0.3
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.0.3
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.7'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.7'
69
+ description: A lightweight tool for indexing Utopian posts into solr.
70
+ email:
71
+ executables: []
72
+ extensions: []
73
+ extra_rdoc_files: []
74
+ files:
75
+ - lib/utopian_solrizer.rb
76
+ homepage: http://rubygems.org/gems/utopian_solrizer
77
+ licenses:
78
+ - MIT
79
+ metadata: {}
80
+ post_install_message:
81
+ rdoc_options: []
82
+ require_paths:
83
+ - lib
84
+ required_ruby_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ requirements: []
95
+ rubyforge_project:
96
+ rubygems_version: 2.7.3
97
+ signing_key:
98
+ specification_version: 4
99
+ summary: Utopian Solrizer
100
+ test_files: []