pose 0.2.3 → 0.2.4
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.
- data/README.markdown +22 -5
- data/lib/pose/version.rb +1 -1
- data/lib/pose.rb +2 -2
- data/spec/spec_helper.rb +0 -1
- metadata +19 -31
data/README.markdown
CHANGED
@@ -31,7 +31,7 @@ Pose ("Polymorphic Search") allows fulltext search for ActiveRecord objects.
|
|
31
31
|
* _pose_assignments_: lists which word occurs in which document.
|
32
32
|
|
33
33
|
|
34
|
-
# Make your ActiveRecord models searchable
|
34
|
+
# Make your ActiveRecord models searchable
|
35
35
|
|
36
36
|
class MyClass < ActiveRecord::Base
|
37
37
|
|
@@ -54,14 +54,29 @@ Pose ("Polymorphic Search") allows fulltext search for ActiveRecord objects.
|
|
54
54
|
end
|
55
55
|
|
56
56
|
|
57
|
-
# Maintain the search index
|
57
|
+
# Maintain the search index
|
58
58
|
|
59
59
|
The search index is automatically updated when Objects are saved or deleted.
|
60
|
-
|
61
|
-
|
60
|
+
|
61
|
+
## Indexing existing objects in the database
|
62
|
+
If you had existing data in your database before adding Pose, it isn't automatically included in the search index.
|
63
|
+
They will be added on the next save/update operation on them.
|
64
|
+
You can also manually add existing objects to the search index.
|
62
65
|
|
63
66
|
rake pose:reindex_all[MyClass]
|
64
67
|
|
68
|
+
## Optimizing the search index
|
69
|
+
The search index keeps all the words that were ever used around, in order to try to reuse them in the future.
|
70
|
+
If you deleted a lot of objects, you can shrink the memory consumption of the search index by removing unused words.
|
71
|
+
|
72
|
+
rake pose:cleanup_index
|
73
|
+
|
74
|
+
## Removing the search index
|
75
|
+
For development purposes, or if something went wrong, you can remove the search index for a class
|
76
|
+
(let's call it "MyClass") completely.
|
77
|
+
|
78
|
+
rake pose:delete_index[MyClass]
|
79
|
+
|
65
80
|
|
66
81
|
# Perform a search
|
67
82
|
|
@@ -92,4 +107,6 @@ Or, clone the repository, make your changes, and submit a pull request.
|
|
92
107
|
|
93
108
|
## Road Map
|
94
109
|
|
95
|
-
|
110
|
+
Pose's algorithm works with all sorts of storage technologies that support range queries, i.e. relational databases,
|
111
|
+
Google's DataStore, and other NoSQL stores. Right now, only relational databases are supported. NoSQL support is easy,
|
112
|
+
but not yet implemented.
|
data/lib/pose/version.rb
CHANGED
data/lib/pose.rb
CHANGED
@@ -143,8 +143,8 @@ module Pose
|
|
143
143
|
current_word_classes_and_ids = {}
|
144
144
|
classes.each { |clazz| current_word_classes_and_ids[clazz.name] = [] }
|
145
145
|
query = PoseAssignment.joins(:pose_word) \
|
146
|
-
.where(
|
147
|
-
|
146
|
+
.where('pose_words.text LIKE ?', "#{query_word}%") \
|
147
|
+
.where('posable_type IN (?)', classes_names)
|
148
148
|
query.each do |pose_assignment|
|
149
149
|
current_word_classes_and_ids[pose_assignment.posable_type] << pose_assignment.posable_id
|
150
150
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pose
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-02-07 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &70098607772640 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,21 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.0.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: meta_where
|
27
|
-
requirement: &70232069411660 !ruby/object:Gem::Requirement
|
28
|
-
none: false
|
29
|
-
requirements:
|
30
|
-
- - ! '>='
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: '0'
|
33
|
-
type: :runtime
|
34
|
-
prerelease: false
|
35
|
-
version_requirements: *70232069411660
|
24
|
+
version_requirements: *70098607772640
|
36
25
|
- !ruby/object:Gem::Dependency
|
37
26
|
name: rake
|
38
|
-
requirement: &
|
27
|
+
requirement: &70098607771600 !ruby/object:Gem::Requirement
|
39
28
|
none: false
|
40
29
|
requirements:
|
41
30
|
- - ! '>='
|
@@ -43,10 +32,10 @@ dependencies:
|
|
43
32
|
version: '0'
|
44
33
|
type: :runtime
|
45
34
|
prerelease: false
|
46
|
-
version_requirements: *
|
35
|
+
version_requirements: *70098607771600
|
47
36
|
- !ruby/object:Gem::Dependency
|
48
37
|
name: ruby-progressbar
|
49
|
-
requirement: &
|
38
|
+
requirement: &70098607770820 !ruby/object:Gem::Requirement
|
50
39
|
none: false
|
51
40
|
requirements:
|
52
41
|
- - ! '>='
|
@@ -54,10 +43,10 @@ dependencies:
|
|
54
43
|
version: '0'
|
55
44
|
type: :runtime
|
56
45
|
prerelease: false
|
57
|
-
version_requirements: *
|
46
|
+
version_requirements: *70098607770820
|
58
47
|
- !ruby/object:Gem::Dependency
|
59
48
|
name: factory_girl
|
60
|
-
requirement: &
|
49
|
+
requirement: &70098607763940 !ruby/object:Gem::Requirement
|
61
50
|
none: false
|
62
51
|
requirements:
|
63
52
|
- - ! '>='
|
@@ -65,10 +54,10 @@ dependencies:
|
|
65
54
|
version: '0'
|
66
55
|
type: :development
|
67
56
|
prerelease: false
|
68
|
-
version_requirements: *
|
57
|
+
version_requirements: *70098607763940
|
69
58
|
- !ruby/object:Gem::Dependency
|
70
59
|
name: faker
|
71
|
-
requirement: &
|
60
|
+
requirement: &70098607763140 !ruby/object:Gem::Requirement
|
72
61
|
none: false
|
73
62
|
requirements:
|
74
63
|
- - ! '>='
|
@@ -76,10 +65,10 @@ dependencies:
|
|
76
65
|
version: '0'
|
77
66
|
type: :development
|
78
67
|
prerelease: false
|
79
|
-
version_requirements: *
|
68
|
+
version_requirements: *70098607763140
|
80
69
|
- !ruby/object:Gem::Dependency
|
81
70
|
name: hashie
|
82
|
-
requirement: &
|
71
|
+
requirement: &70098607762500 !ruby/object:Gem::Requirement
|
83
72
|
none: false
|
84
73
|
requirements:
|
85
74
|
- - ! '>='
|
@@ -87,10 +76,10 @@ dependencies:
|
|
87
76
|
version: '0'
|
88
77
|
type: :development
|
89
78
|
prerelease: false
|
90
|
-
version_requirements: *
|
79
|
+
version_requirements: *70098607762500
|
91
80
|
- !ruby/object:Gem::Dependency
|
92
81
|
name: rspec
|
93
|
-
requirement: &
|
82
|
+
requirement: &70098607761540 !ruby/object:Gem::Requirement
|
94
83
|
none: false
|
95
84
|
requirements:
|
96
85
|
- - ! '>='
|
@@ -98,10 +87,10 @@ dependencies:
|
|
98
87
|
version: '0'
|
99
88
|
type: :development
|
100
89
|
prerelease: false
|
101
|
-
version_requirements: *
|
90
|
+
version_requirements: *70098607761540
|
102
91
|
- !ruby/object:Gem::Dependency
|
103
92
|
name: sqlite3
|
104
|
-
requirement: &
|
93
|
+
requirement: &70098607760440 !ruby/object:Gem::Requirement
|
105
94
|
none: false
|
106
95
|
requirements:
|
107
96
|
- - ! '>='
|
@@ -109,7 +98,7 @@ dependencies:
|
|
109
98
|
version: '0'
|
110
99
|
type: :development
|
111
100
|
prerelease: false
|
112
|
-
version_requirements: *
|
101
|
+
version_requirements: *70098607760440
|
113
102
|
description: Pose ('Polymorphic Search') allows fulltext search for ActiveRecord objects.
|
114
103
|
email:
|
115
104
|
- kevin.goslar@gmail.com
|
@@ -173,7 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
162
|
version: '0'
|
174
163
|
requirements: []
|
175
164
|
rubyforge_project:
|
176
|
-
rubygems_version: 1.8.
|
165
|
+
rubygems_version: 1.8.10
|
177
166
|
signing_key:
|
178
167
|
specification_version: 3
|
179
168
|
summary: A polymorphic, storage-system independent search engine for Ruby on Rails.
|
@@ -183,4 +172,3 @@ test_files:
|
|
183
172
|
- spec/pose_spec.rb
|
184
173
|
- spec/pose_word_spec.rb
|
185
174
|
- spec/spec_helper.rb
|
186
|
-
has_rdoc:
|