-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsolr.rb
More file actions
52 lines (40 loc) · 1.08 KB
/
solr.rb
File metadata and controls
52 lines (40 loc) · 1.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
module Jekyll
class SolrGenerator < Generator
safe true
priority :low
def generate(site)
if !ENV['SOLR_HOST']
puts "No Solr config found, skipping"
return
end
require 'solr'
solr = Solr::Connection.new('http://' + ENV['SOLR_HOST'] + '/solr')
site.pages.each do |page|
next if not indexable? page
full_url = page.dir + page.url
clean_content = page.content.gsub(%r{</?[^>]+?>}, ' ')
tags = page.data['tags'] || []
puts "Indexing #{full_url}"
solr.update({
:id => full_url,
:url => full_url,
:title => page.data['title'],
:text => clean_content,
:tags => tags
})
end
solr.commit
end
private
# should the current page be indexed in solr?
def indexable?(page)
(page.data['id'] == 'kb')
end
end
# awful terrible hack, to fix the stupidly overridden accessor in Page
class Page
def dir
return @dir
end
end
end