textacular 4.0.1 → 5.0.0
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 +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +18 -2
- data/lib/textacular/full_text_indexer.rb +2 -2
- data/lib/textacular/version.rb +1 -1
- data/spec/textacular/full_text_indexer_spec.rb +5 -5
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d18e4abd3e1261c47932907d778c6733c930cdff
|
4
|
+
data.tar.gz: bf77d7e537625947e8b610dfd5177079418fff5c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 43dc9f5012e6c8bb1da0811e55e48d0795a7fa8eff3a0127ec29c08b02c8fafca339f2e9ecb397abfd77baed9267893ed6efd53809a217903752c3fec1368fd8
|
7
|
+
data.tar.gz: 28b8cdc8eb8f7c00f12d5827c47aad0204f5e509abab74699618a9feff177a9e8d6b7c6dad053bddde0d6e8c6c03c3ef9fa223824cbd543ddd2746cab2a3a95f
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -25,12 +25,20 @@ extending ActiveRecord with scopes making search easy and fun!
|
|
25
25
|
|
26
26
|
### Quick Start
|
27
27
|
|
28
|
-
#### Rails 3, Rails 4
|
28
|
+
#### Rails 3, Rails 4
|
29
29
|
|
30
30
|
In the project's Gemfile add
|
31
31
|
|
32
32
|
```ruby
|
33
|
-
gem 'textacular', '~>
|
33
|
+
gem 'textacular', '~> 4.0'
|
34
|
+
```
|
35
|
+
|
36
|
+
#### Rails 5.0 and Rails 5.1!
|
37
|
+
|
38
|
+
In the project's Gemfile add
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
gem 'textacular', '~> 5.0'
|
34
42
|
```
|
35
43
|
|
36
44
|
#### ActiveRecord outside of Rails
|
@@ -140,12 +148,20 @@ end
|
|
140
148
|
You can have Postgresql use an index for the full-text search. To declare a full-text index, in a
|
141
149
|
migration add code like the following:
|
142
150
|
|
151
|
+
#### For basic_search
|
143
152
|
```ruby
|
144
153
|
execute "
|
145
154
|
create index on email_logs using gin(to_tsvector('english', subject));
|
146
155
|
create index on email_logs using gin(to_tsvector('english', email_address));"
|
147
156
|
```
|
148
157
|
|
158
|
+
#### For fuzzy_search
|
159
|
+
```ruby
|
160
|
+
execute "
|
161
|
+
CREATE INDEX trgm_subject_indx ON users USING gist (subject gist_trgm_ops);
|
162
|
+
CREATE INDEX trgm_email_address_indx ON users USING gist (email_address gist_trgm_ops);
|
163
|
+
```
|
164
|
+
|
149
165
|
In the above example, the table email_logs has two text columns that we search against, subject and email_address.
|
150
166
|
You will need to add an index for every text/string column you query against, or else Postgresql will revert to a
|
151
167
|
full table scan instead of using the indexes.
|
@@ -16,7 +16,7 @@ class #{model_name}FullTextSearch < ActiveRecord::Migration
|
|
16
16
|
end
|
17
17
|
MIGRATION
|
18
18
|
filename = "#{model_name.underscore}_full_text_search"
|
19
|
-
generator = Textacular::MigrationGenerator.new(
|
19
|
+
generator = Textacular::MigrationGenerator.new(filename, content)
|
20
20
|
generator.generate_migration
|
21
21
|
end
|
22
22
|
|
@@ -52,7 +52,7 @@ MIGRATION
|
|
52
52
|
<<-SQL
|
53
53
|
CREATE index #{index_name_for(model, column)}
|
54
54
|
ON #{model.table_name}
|
55
|
-
USING gin(to_tsvector(
|
55
|
+
USING gin(to_tsvector('#{dictionary}', "#{model.table_name}"."#{column}"::text));
|
56
56
|
SQL
|
57
57
|
end
|
58
58
|
|
data/lib/textacular/version.rb
CHANGED
@@ -12,7 +12,7 @@ class WebComicWithSearchableNameFullTextSearch < ActiveRecord::Migration
|
|
12
12
|
DROP index IF EXISTS web_comics_name_fts_idx;
|
13
13
|
CREATE index web_comics_name_fts_idx
|
14
14
|
ON web_comics
|
15
|
-
USING gin(to_tsvector(
|
15
|
+
USING gin(to_tsvector('english', "web_comics"."name"::text));
|
16
16
|
SQL
|
17
17
|
end
|
18
18
|
|
@@ -25,7 +25,7 @@ end
|
|
25
25
|
MIGRATION
|
26
26
|
|
27
27
|
generator = double(:migration_generator)
|
28
|
-
expect(Textacular::MigrationGenerator).to receive(:new).with(
|
28
|
+
expect(Textacular::MigrationGenerator).to receive(:new).with(file_name, content).and_return(generator)
|
29
29
|
expect(generator).to receive(:generate_migration)
|
30
30
|
|
31
31
|
Textacular::FullTextIndexer.new.generate_migration('WebComicWithSearchableName')
|
@@ -42,11 +42,11 @@ class WebComicWithSearchableNameAndAuthorFullTextSearch < ActiveRecord::Migratio
|
|
42
42
|
DROP index IF EXISTS web_comics_name_fts_idx;
|
43
43
|
CREATE index web_comics_name_fts_idx
|
44
44
|
ON web_comics
|
45
|
-
USING gin(to_tsvector(
|
45
|
+
USING gin(to_tsvector('english', "web_comics"."name"::text));
|
46
46
|
DROP index IF EXISTS web_comics_author_fts_idx;
|
47
47
|
CREATE index web_comics_author_fts_idx
|
48
48
|
ON web_comics
|
49
|
-
USING gin(to_tsvector(
|
49
|
+
USING gin(to_tsvector('english', "web_comics"."author"::text));
|
50
50
|
SQL
|
51
51
|
end
|
52
52
|
|
@@ -60,7 +60,7 @@ end
|
|
60
60
|
MIGRATION
|
61
61
|
|
62
62
|
generator = double(:migration_generator)
|
63
|
-
expect(Textacular::MigrationGenerator).to receive(:new).with(
|
63
|
+
expect(Textacular::MigrationGenerator).to receive(:new).with(file_name, content).and_return(generator)
|
64
64
|
expect(generator).to receive(:generate_migration)
|
65
65
|
|
66
66
|
Textacular::FullTextIndexer.new.generate_migration('WebComicWithSearchableNameAndAuthor')
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: textacular
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Hamill
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2017-06-12 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: pg
|
@@ -104,7 +104,7 @@ dependencies:
|
|
104
104
|
- - ">="
|
105
105
|
- !ruby/object:Gem::Version
|
106
106
|
version: '3.0'
|
107
|
-
- - "
|
107
|
+
- - "<="
|
108
108
|
- !ruby/object:Gem::Version
|
109
109
|
version: '5.1'
|
110
110
|
type: :runtime
|
@@ -114,7 +114,7 @@ dependencies:
|
|
114
114
|
- - ">="
|
115
115
|
- !ruby/object:Gem::Version
|
116
116
|
version: '3.0'
|
117
|
-
- - "
|
117
|
+
- - "<="
|
118
118
|
- !ruby/object:Gem::Version
|
119
119
|
version: '5.1'
|
120
120
|
description: |-
|
@@ -181,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
181
181
|
version: '0'
|
182
182
|
requirements: []
|
183
183
|
rubyforge_project:
|
184
|
-
rubygems_version: 2.
|
184
|
+
rubygems_version: 2.4.5
|
185
185
|
signing_key:
|
186
186
|
specification_version: 4
|
187
187
|
summary: Textacular exposes full text search capabilities from PostgreSQL
|