utopian_solrizer 0.0.1

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 (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: []