middleman-blog-similar-groonga 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.
- checksums.yaml +7 -0
- data/.gitignore +5 -0
- data/Gemfile +18 -0
- data/Rakefile +14 -0
- data/features/support/env.rb +4 -0
- data/lib/middleman-blog-similar-groonga.rb +63 -0
- data/lib/middleman_extension.rb +1 -0
- data/middleman-blog-similar-groonga.gemspec +27 -0
- metadata +94 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 2c1623551abd18e29f1809807a314f7495fc4b24
|
4
|
+
data.tar.gz: 1c18fdfff71245f0cfe043ceb980455c8263bde7
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 42504f1ea9b0e2868fb6105d9a3bfcd546f59ce078de757674835d8cf5855202e64036d8b93221519116727f1d7e7a43be192733dc228d290c3ed5cdfb13d83f
|
7
|
+
data.tar.gz: bb5f13e684e28a117e014941a7032bf7bfbd7109932b3e762d34bc2ef554ac53fc59cc0e356eee46a6b48ece62c26438f0f77e89f40424636513e6d0d96e02b2
|
data/.gitignore
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# If you do not have OpenSSL installed, update
|
2
|
+
# the following line to use "http://" instead
|
3
|
+
source 'https://rubygems.org'
|
4
|
+
|
5
|
+
# Specify your gem's dependencies in middleman-blog-similar-groonga.gemspec
|
6
|
+
gemspec
|
7
|
+
|
8
|
+
group :development do
|
9
|
+
gem 'rake'
|
10
|
+
gem 'rdoc'
|
11
|
+
gem 'yard'
|
12
|
+
end
|
13
|
+
|
14
|
+
group :test do
|
15
|
+
gem 'cucumber'
|
16
|
+
gem 'aruba'
|
17
|
+
gem 'rspec'
|
18
|
+
end
|
data/Rakefile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
Bundler::GemHelper.install_tasks
|
3
|
+
|
4
|
+
require 'cucumber/rake/task'
|
5
|
+
|
6
|
+
Cucumber::Rake::Task.new(:cucumber, 'Run features that should pass') do |t|
|
7
|
+
t.cucumber_opts = '--color --tags ~@wip --strict'
|
8
|
+
end
|
9
|
+
|
10
|
+
require 'rake/clean'
|
11
|
+
|
12
|
+
task test: ['cucumber']
|
13
|
+
|
14
|
+
task default: :test
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'middleman-core'
|
2
|
+
require 'middleman-blog'
|
3
|
+
|
4
|
+
module Middleman::Blog
|
5
|
+
module Similar
|
6
|
+
class Groonga < ::Middleman::Extension
|
7
|
+
option :db_path, 'groonga/articles', 'Path to Groonga database'
|
8
|
+
|
9
|
+
def initialize(app, options_hash={}, &block)
|
10
|
+
super
|
11
|
+
|
12
|
+
app.config[:blog_similar_groonga] = self
|
13
|
+
|
14
|
+
@db_path = Pathname.new(options.db_path)
|
15
|
+
require 'groonga'
|
16
|
+
end
|
17
|
+
|
18
|
+
def after_configuration
|
19
|
+
if @db_path.file?
|
20
|
+
::Groonga::Database.open @db_path.to_path
|
21
|
+
else
|
22
|
+
@db_path.dirname.mkpath unless @db_path.dirname.directory?
|
23
|
+
::Groonga::Database.create(path: @db_path.to_path)
|
24
|
+
::Groonga::Schema.create_table 'Articles', type: :hash do |table|
|
25
|
+
table.short_text 'title'
|
26
|
+
table.long_text 'body'
|
27
|
+
# TODO: tags
|
28
|
+
end
|
29
|
+
::Groonga::Schema.create_table 'Terms', type: :patricia_trie, normalizer: :NormalizerAuto, default_tokenizer: 'TokenMecab'
|
30
|
+
::Groonga::Schema.change_table 'Terms' do |table|
|
31
|
+
table.index 'Articles.body'
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
articles = ::Groonga['Articles']
|
36
|
+
app.sitemap.resources.each do |resource|
|
37
|
+
next unless resource.kind_of? ::Middleman::Blog::BlogArticle
|
38
|
+
|
39
|
+
key = resource.path
|
40
|
+
articles.add key unless articles[key]
|
41
|
+
|
42
|
+
articles[key].title = resource.title
|
43
|
+
articles[key].body = Nokogiri.HTML('<body>' + resource.body + '</body>').search('body').first.content
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
helpers do
|
48
|
+
def similar_articles
|
49
|
+
current_body = Nokogiri.HTML('<body>' + current_page.body + '</body>').search('body').first.content
|
50
|
+
results = ::Groonga['Articles'].select {|article|
|
51
|
+
article.body.similar_search(current_page.summary) &
|
52
|
+
(article.key != current_page.path)
|
53
|
+
}
|
54
|
+
results.sort([key: '_score', order: 'descending'])
|
55
|
+
require 'pp';pp results
|
56
|
+
results
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
::Middleman::Extensions.register :blog_similar_groonga, ::Middleman::Blog::Similar::Groonga
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'middleman-blog-similar-groonga'
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "middleman-blog-similar-groonga"
|
6
|
+
s.version = "0.0.1"
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.license = "LGPL"
|
9
|
+
s.authors = ["KITAITI Makoto"]
|
10
|
+
s.email = ["KitaitiMakoto@gmail.com"]
|
11
|
+
s.homepage = "https://github.com/KitaitiMakoto/middleman-blog-similar-groonga"
|
12
|
+
s.summary = %q{Middleman extension to list similar pages using Groonga}
|
13
|
+
s.description = %q{Middleman extension to list similar pages using Groonga}
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
|
20
|
+
# The version of middleman-core your extension depends on
|
21
|
+
s.add_runtime_dependency("middleman-core", [">= 4.0.0"])
|
22
|
+
|
23
|
+
# Additional dependencies
|
24
|
+
# s.add_runtime_dependency("gem-name", "gem-version")
|
25
|
+
s.add_runtime_dependency("rroonga")
|
26
|
+
s.add_runtime_dependency("middleman-blog", [">= 4.0.0"])
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: middleman-blog-similar-groonga
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- KITAITI Makoto
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-12-25 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: middleman-core
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.0.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rroonga
|
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: middleman-blog
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 4.0.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 4.0.0
|
55
|
+
description: Middleman extension to list similar pages using Groonga
|
56
|
+
email:
|
57
|
+
- KitaitiMakoto@gmail.com
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- ".gitignore"
|
63
|
+
- Gemfile
|
64
|
+
- Rakefile
|
65
|
+
- features/support/env.rb
|
66
|
+
- lib/middleman-blog-similar-groonga.rb
|
67
|
+
- lib/middleman_extension.rb
|
68
|
+
- middleman-blog-similar-groonga.gemspec
|
69
|
+
homepage: https://github.com/KitaitiMakoto/middleman-blog-similar-groonga
|
70
|
+
licenses:
|
71
|
+
- LGPL
|
72
|
+
metadata: {}
|
73
|
+
post_install_message:
|
74
|
+
rdoc_options: []
|
75
|
+
require_paths:
|
76
|
+
- lib
|
77
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
requirements: []
|
88
|
+
rubyforge_project:
|
89
|
+
rubygems_version: 2.4.6
|
90
|
+
signing_key:
|
91
|
+
specification_version: 4
|
92
|
+
summary: Middleman extension to list similar pages using Groonga
|
93
|
+
test_files: []
|
94
|
+
has_rdoc:
|