vss 0.1.8 → 0.1.9

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.
@@ -0,0 +1,6 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.2
4
+ branches:
5
+ only:
6
+ - master
data/README.md CHANGED
@@ -1,44 +1,61 @@
1
- # VSS - Vector Space Search
1
+ # VSS Vector Space Search  [![Build Status](http://travis-ci.org/mkdynamic/vss.png?branch=master)](http://travis-ci.org/mkdynamic/vss)
2
2
 
3
- A simple vector space search engine with **tf*idf** ranking.
3
+ A simple vector space search engine with tf*idf ranking.
4
4
 
5
5
  [More info, and details of how it works.](http://madeofcode.com/posts/69-vss-a-vector-space-search-engine-in-ruby)
6
6
 
7
- ## Requirements
7
+ ## Installation
8
8
 
9
- Ruby >= 1.8.7. Tested in (MRI 1.8.7 + 1.9.2).
9
+ Just install the gem:
10
10
 
11
- ## Install
11
+ ```bash
12
+ gem install vss
13
+ ```
12
14
 
13
- Just install the gem:
15
+ Or add to your Gemfile, if you're using Bundler:
14
16
 
15
- gem install vss
17
+ ```ruby
18
+ gem 'vss'
19
+ ```
16
20
 
17
21
  ## Usage
18
22
 
19
23
  To perform a search on a collection of documents:
20
24
 
21
- require "vss"
22
- docs = ["hello", "goodbye", "hello and goodbye", "hello, hello!"]
23
- engine = VSS::Engine.new(docs)
24
- engine.search("hello") #=> ["hello", "hello, hello!", "hello and goodbye", "goodbye"]
25
+ ```ruby
26
+ require "vss"
27
+ docs = ["hello", "goodbye", "hello and goodbye", "hello, hello!"]
28
+ engine = VSS::Engine.new(docs)
29
+ engine.search("hello") #=> ["hello", "hello, hello!", "hello and goodbye"]
30
+ ```
25
31
 
26
32
  ## Rails/ActiveRecord
27
33
 
28
34
  If you want to search a collection of `ActiveRecord` objects, you need to pass a **documentizer** `Proc` when initializing `VSS::Engine` which will convert the objects into documents (which are simply strings). For example:
29
35
 
30
- class Page < ActiveRecord::Base
31
- #attrs: title, content
32
- end
36
+ ```ruby
37
+ class Page < ActiveRecord::Base
38
+ #attrs: title, content
39
+ end
40
+
41
+ docs = Page.all
42
+ documentizer = lambda { |record| record.title + " " + record.content }
43
+ engine = VSS::Engine.new(docs, documentizer)
44
+ ```
33
45
 
34
- docs = Page.all
35
- documentizer = proc { |record| record.title + " " + record.content }
36
- engine = VSS::Engine.new(docs, documentizer)
37
-
38
46
  ## Notes
39
47
 
40
48
  This isn't designed to be used on huge collections of records. The original use case was for ranking a smallish set of `ActiveRecord` results obtained via a query (using **SearchLogic**). So, essentially, the search consisted of 2 stages; getting the *corpus* via a SQL query, then doing the VSS on that.
41
49
 
50
+ ## Ruby
51
+
52
+ Tested with the following Ruby versions:
53
+
54
+ - MRI 1.9.2
55
+ - MRI 1.8.7
56
+
57
+ Probably works on JRuby ~> 1.6 too, but not actively tested.
58
+
42
59
  ## Credits
43
60
 
44
61
  Heavily inspired by [Joesph Wilk's article on building a vector space search engine in Python](http://blog.josephwilk.net/projects/building-a-vector-space-search-engine-in-python.html).
data/Rakefile CHANGED
@@ -1,4 +1,10 @@
1
- require "rubygems"
2
- require "bundler/setup"
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
3
 
4
- Bundler::GemHelper.install_tasks
4
+ Rake::TestTask.new do |t|
5
+ t.libs << 'test'
6
+ t.test_files = Dir['test/*test.rb']
7
+ t.verbose = true
8
+ end
9
+
10
+ task :default => :test
@@ -1,3 +1,3 @@
1
1
  module VSS
2
- VERSION = '0.1.8'
2
+ VERSION = '0.1.9'
3
3
  end
@@ -1,3 +1,4 @@
1
+ require 'bundler/setup'
1
2
  require 'test/unit'
2
3
  require 'vss'
3
4
 
@@ -45,4 +46,4 @@ private
45
46
  sig_figs = [10, actual.to_s.size, expected.to_s.size].min - 1
46
47
  assert_equal expected.to_s[0, sig_figs], actual.to_s[0, sig_figs], msg
47
48
  end
48
- end
49
+ end
@@ -1,9 +1,9 @@
1
+ # -*- encoding: utf-8 -*-
1
2
  require File.expand_path('../lib/vss/version', __FILE__)
2
3
 
3
4
  Gem::Specification.new do |s|
4
5
  s.name = "vss"
5
6
  s.version = VSS::VERSION
6
- s.platform = Gem::Platform::RUBY
7
7
  s.authors = ["Mark Dodwell"]
8
8
  s.email = ["labs@mkdynamic.co.uk"]
9
9
  s.homepage = "https://github.com/mkdynamic/vss"
@@ -12,11 +12,11 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.required_ruby_version = ">= 1.8.7"
14
14
  s.add_development_dependency "bundler"
15
- s.add_development_dependency "rake", "0.8.7"
16
- s.add_runtime_dependency "stemmer"
15
+ s.add_development_dependency "rake"
16
+ s.add_runtime_dependency "stemmer", "~> 1.0.0"
17
17
 
18
18
  s.files = `git ls-files`.split("\n")
19
19
  s.test_files = `git ls-files -- test/*`.split("\n")
20
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
21
21
  s.require_paths = ["lib"]
22
22
  end
metadata CHANGED
@@ -1,78 +1,58 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: vss
3
- version: !ruby/object:Gem::Version
4
- hash: 11
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1
9
- - 8
10
- version: 0.1.8
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.9
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Mark Dodwell
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-07-05 00:00:00 -07:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- version_requirements: &id001 !ruby/object:Gem::Requirement
12
+ date: 2011-10-16 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: &2155044600 !ruby/object:Gem::Requirement
23
17
  none: false
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- hash: 3
28
- segments:
29
- - 0
30
- version: "0"
31
- requirement: *id001
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :development
33
- name: bundler
34
23
  prerelease: false
35
- - !ruby/object:Gem::Dependency
36
- version_requirements: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *2155044600
25
+ - !ruby/object:Gem::Dependency
26
+ name: rake
27
+ requirement: &2155043860 !ruby/object:Gem::Requirement
37
28
  none: false
38
- requirements:
39
- - - "="
40
- - !ruby/object:Gem::Version
41
- hash: 49
42
- segments:
43
- - 0
44
- - 8
45
- - 7
46
- version: 0.8.7
47
- requirement: *id002
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
48
33
  type: :development
49
- name: rake
50
34
  prerelease: false
51
- - !ruby/object:Gem::Dependency
52
- version_requirements: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *2155043860
36
+ - !ruby/object:Gem::Dependency
37
+ name: stemmer
38
+ requirement: &2155043020 !ruby/object:Gem::Requirement
53
39
  none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- hash: 3
58
- segments:
59
- - 0
60
- version: "0"
61
- requirement: *id003
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 1.0.0
62
44
  type: :runtime
63
- name: stemmer
64
45
  prerelease: false
46
+ version_requirements: *2155043020
65
47
  description: A simple vector space search engine with tf*idf ranking.
66
- email:
48
+ email:
67
49
  - labs@mkdynamic.co.uk
68
50
  executables: []
69
-
70
51
  extensions: []
71
-
72
52
  extra_rdoc_files: []
73
-
74
- files:
53
+ files:
75
54
  - .gitignore
55
+ - .travis.yml
76
56
  - Gemfile
77
57
  - LICENSE
78
58
  - README.md
@@ -83,41 +63,29 @@ files:
83
63
  - lib/vss/version.rb
84
64
  - test/test.rb
85
65
  - vss.gemspec
86
- has_rdoc: true
87
66
  homepage: https://github.com/mkdynamic/vss
88
67
  licenses: []
89
-
90
68
  post_install_message:
91
69
  rdoc_options: []
92
-
93
- require_paths:
70
+ require_paths:
94
71
  - lib
95
- required_ruby_version: !ruby/object:Gem::Requirement
72
+ required_ruby_version: !ruby/object:Gem::Requirement
96
73
  none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- hash: 57
101
- segments:
102
- - 1
103
- - 8
104
- - 7
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
105
77
  version: 1.8.7
106
- required_rubygems_version: !ruby/object:Gem::Requirement
78
+ required_rubygems_version: !ruby/object:Gem::Requirement
107
79
  none: false
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- hash: 3
112
- segments:
113
- - 0
114
- version: "0"
80
+ requirements:
81
+ - - ! '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
115
84
  requirements: []
116
-
117
85
  rubyforge_project:
118
- rubygems_version: 1.3.7
86
+ rubygems_version: 1.8.10
119
87
  signing_key:
120
88
  specification_version: 3
121
89
  summary: Vector Space Search
122
- test_files:
90
+ test_files:
123
91
  - test/test.rb