pg_search 2.3.2 → 2.3.3
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/.github/dependabot.yml +11 -0
- data/.rubocop.yml +86 -4
- data/.travis.yml +4 -12
- data/CHANGELOG.md +25 -20
- data/LICENSE +1 -1
- data/README.md +5 -5
- data/lib/pg_search.rb +4 -4
- data/lib/pg_search/document.rb +1 -1
- data/lib/pg_search/features/dmetaphone.rb +4 -6
- data/lib/pg_search/features/tsearch.rb +13 -12
- data/lib/pg_search/migration/templates/add_pg_search_dmetaphone_support_functions.rb.erb +6 -6
- data/lib/pg_search/migration/templates/create_pg_search_documents.rb.erb +2 -2
- data/lib/pg_search/model.rb +2 -0
- data/lib/pg_search/multisearch.rb +10 -1
- data/lib/pg_search/multisearch/rebuilder.rb +2 -2
- data/lib/pg_search/scope_options.rb +2 -2
- data/lib/pg_search/tasks.rb +1 -1
- data/lib/pg_search/version.rb +1 -1
- data/pg_search.gemspec +8 -3
- data/spec/integration/.rubocop.yml +11 -0
- data/spec/integration/associations_spec.rb +17 -56
- data/spec/integration/deprecation_spec.rb +1 -1
- data/spec/integration/pg_search_spec.rb +62 -51
- data/spec/lib/pg_search/configuration/association_spec.rb +8 -6
- data/spec/lib/pg_search/features/dmetaphone_spec.rb +2 -2
- data/spec/lib/pg_search/features/trigram_spec.rb +15 -11
- data/spec/lib/pg_search/features/tsearch_spec.rb +16 -10
- data/spec/lib/pg_search/multisearch/rebuilder_spec.rb +89 -55
- data/spec/lib/pg_search/multisearch_spec.rb +47 -28
- data/spec/lib/pg_search/multisearchable_spec.rb +148 -94
- data/spec/lib/pg_search/normalizer_spec.rb +12 -10
- data/spec/lib/pg_search_spec.rb +57 -41
- data/spec/spec_helper.rb +10 -4
- data/spec/support/database.rb +1 -1
- metadata +81 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c754738322b4dea0ecf3f70b8ddb03c5ff26bbe0f44578f6870c9f0e9fe6604
|
4
|
+
data.tar.gz: 4d8dc4be9b36a8a35cbaf6c759f9e973242e60c6b2eaf03b92d177297a7ad2b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '09b9d4b415a215bf24e38f1f3c80b309aaf7c4c52774e463f07db9f70496bf6bfde3bbd3fd0c69a4872ab531dc7a7fff098b6c11b1b7f5f0134b41e8feb73e4b'
|
7
|
+
data.tar.gz: a41a81af41368584b5cc4bbb6174c800e9d5dca906630db567cb908aa4280f921f2a1d579805d008dc77011b16d3b7ca5e025357cb0d51f777bd54cf848b8bc3
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# To get started with Dependabot version updates, you'll need to specify which
|
2
|
+
# package ecosystems to update and where the package manifests are located.
|
3
|
+
# Please see the documentation for all configuration options:
|
4
|
+
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
5
|
+
|
6
|
+
version: 2
|
7
|
+
updates:
|
8
|
+
- package-ecosystem: "bundler" # See documentation for possible values
|
9
|
+
directory: "/" # Location of package manifests
|
10
|
+
schedule:
|
11
|
+
interval: "daily"
|
data/.rubocop.yml
CHANGED
@@ -1,7 +1,13 @@
|
|
1
|
-
require:
|
1
|
+
require:
|
2
|
+
- rubocop-performance
|
3
|
+
- rubocop-rails
|
4
|
+
- rubocop-rake
|
5
|
+
- rubocop-rspec
|
6
|
+
- rubocop-thread_safety
|
2
7
|
|
3
8
|
AllCops:
|
4
|
-
TargetRubyVersion: 2.
|
9
|
+
TargetRubyVersion: 2.5
|
10
|
+
NewCops: enable
|
5
11
|
Exclude:
|
6
12
|
- bin/**/*
|
7
13
|
- vendor/**/*
|
@@ -13,7 +19,7 @@ Layout/LineLength:
|
|
13
19
|
Max: 120
|
14
20
|
|
15
21
|
Metrics/MethodLength:
|
16
|
-
Max:
|
22
|
+
Max: 15
|
17
23
|
|
18
24
|
Metrics/BlockLength:
|
19
25
|
Exclude:
|
@@ -44,7 +50,7 @@ Bundler/DuplicatedGem:
|
|
44
50
|
|
45
51
|
Style/EmptyMethod:
|
46
52
|
EnforcedStyle: expanded
|
47
|
-
|
53
|
+
|
48
54
|
Layout/FirstArrayElementIndentation:
|
49
55
|
EnforcedStyle: consistent
|
50
56
|
|
@@ -54,3 +60,79 @@ Style/Documentation:
|
|
54
60
|
Style/WordArray:
|
55
61
|
EnforcedStyle: percent
|
56
62
|
MinSize: 3
|
63
|
+
|
64
|
+
Style/HashEachMethods:
|
65
|
+
Enabled: true
|
66
|
+
|
67
|
+
Style/HashTransformKeys:
|
68
|
+
Enabled: true
|
69
|
+
|
70
|
+
Style/HashTransformValues:
|
71
|
+
Enabled: true
|
72
|
+
|
73
|
+
Rails/ApplicationRecord:
|
74
|
+
Enabled: false
|
75
|
+
|
76
|
+
Rails/TimeZone:
|
77
|
+
Enabled: false
|
78
|
+
|
79
|
+
RSpec/ContextWording:
|
80
|
+
Prefixes:
|
81
|
+
- using
|
82
|
+
- via
|
83
|
+
- when
|
84
|
+
- with
|
85
|
+
- without
|
86
|
+
|
87
|
+
Lint/RaiseException:
|
88
|
+
Enabled: true
|
89
|
+
|
90
|
+
Lint/StructNewOverride:
|
91
|
+
Enabled: true
|
92
|
+
|
93
|
+
Layout/SpaceAroundMethodCallOperator:
|
94
|
+
Enabled: true
|
95
|
+
|
96
|
+
Style/ExponentialNotation:
|
97
|
+
Enabled: true
|
98
|
+
|
99
|
+
RSpec/DescribedClass:
|
100
|
+
Enabled: true
|
101
|
+
|
102
|
+
RSpec/ExpectInHook:
|
103
|
+
Enabled: false
|
104
|
+
|
105
|
+
RSpec/FilePath:
|
106
|
+
CustomTransform:
|
107
|
+
TSearch: "tsearch"
|
108
|
+
DMetaphone: "dmetaphone"
|
109
|
+
|
110
|
+
Layout/EmptyLinesAroundAttributeAccessor:
|
111
|
+
Enabled: true
|
112
|
+
|
113
|
+
Lint/DeprecatedOpenSSLConstant:
|
114
|
+
Enabled: true
|
115
|
+
|
116
|
+
Style/SlicingWithRange:
|
117
|
+
Enabled: true
|
118
|
+
|
119
|
+
Lint/MixedRegexpCaptureTypes:
|
120
|
+
Enabled: true
|
121
|
+
|
122
|
+
Style/RedundantFetchBlock:
|
123
|
+
Enabled: true
|
124
|
+
|
125
|
+
Style/RedundantRegexpCharacterClass:
|
126
|
+
Enabled: true
|
127
|
+
|
128
|
+
Style/RedundantRegexpEscape:
|
129
|
+
Enabled: true
|
130
|
+
|
131
|
+
RSpec/MultipleExpectations:
|
132
|
+
Max: 5
|
133
|
+
|
134
|
+
RSpec/MultipleMemoizedHelpers:
|
135
|
+
AllowSubject: true
|
136
|
+
|
137
|
+
RSpec/ExampleLength:
|
138
|
+
Max: 15
|
data/.travis.yml
CHANGED
@@ -3,11 +3,10 @@ bundler_args: --binstubs
|
|
3
3
|
cache: bundler
|
4
4
|
|
5
5
|
rvm:
|
6
|
-
- 2.7.
|
7
|
-
- 2.6.
|
8
|
-
- 2.5.
|
9
|
-
- 2.
|
10
|
-
- jruby-9.2.8.0
|
6
|
+
- 2.7.1
|
7
|
+
- 2.6.6
|
8
|
+
- 2.5.8
|
9
|
+
- jruby-9.2.11.1
|
11
10
|
|
12
11
|
env:
|
13
12
|
global:
|
@@ -23,13 +22,6 @@ matrix:
|
|
23
22
|
allow_failures:
|
24
23
|
- env: ACTIVE_RECORD_BRANCH="master"
|
25
24
|
- env: ACTIVE_RECORD_BRANCH="6-0-stable"
|
26
|
-
exclude:
|
27
|
-
- rvm: 2.4.9
|
28
|
-
env: ACTIVE_RECORD_BRANCH="master"
|
29
|
-
- rvm: 2.4.9
|
30
|
-
env: ACTIVE_RECORD_VERSION="~> 6.0.0"
|
31
|
-
- rvm: 2.4.9
|
32
|
-
- env: ACTIVE_RECORD_BRANCH="6-0-stable"
|
33
25
|
|
34
26
|
before_script:
|
35
27
|
- psql --version
|
data/CHANGELOG.md
CHANGED
@@ -1,62 +1,67 @@
|
|
1
1
|
# pg_search changelog
|
2
2
|
|
3
|
+
## 2.3.3
|
4
|
+
|
5
|
+
* Drop support for Ruby < 2.5.
|
6
|
+
* Use keyword argument for `clean_up` setting in `PgSearch::Multisearch.rebuild`.
|
7
|
+
|
3
8
|
## 2.3.2
|
4
9
|
|
5
|
-
* Autoload PgSearch::Document to prevent it from being loaded in projects that are not using multi-search.
|
6
|
-
* Rebuilder should use update_pg_search_document if additional_attributes is set (David Ramalho)
|
10
|
+
* Autoload `PgSearch::Document` to prevent it from being loaded in projects that are not using multi-search.
|
11
|
+
* Rebuilder should use `update_pg_search_document` if `additional_attributes` is set. (David Ramalho)
|
7
12
|
|
8
13
|
## 2.3.1
|
9
14
|
|
10
|
-
* Drop support for Active Record < 5.2
|
11
|
-
* Do not load railtie unless Rails::Railtie is defined, to avoid problem when loading alongside Action Mailer (Adam Schwartz)
|
15
|
+
* Drop support for Active Record < 5.2.
|
16
|
+
* Do not load railtie unless Rails::Railtie is defined, to avoid problem when loading alongside Action Mailer. (Adam Schwartz)
|
12
17
|
|
13
18
|
## 2.3.0
|
14
19
|
|
15
|
-
* Extract `PgSearch::Model` module
|
20
|
+
* Extract `PgSearch::Model` module.
|
16
21
|
* Deprecate `include PgSearch`. Use `include PgSearch::Model` instead.
|
17
22
|
|
18
23
|
## 2.2.0
|
19
24
|
|
20
|
-
* Add word_similarity option to trigram search (Severin Räz)
|
25
|
+
* Add `word_similarity` option to trigram search. (Severin Räz)
|
21
26
|
|
22
27
|
## 2.1.7
|
23
28
|
|
24
|
-
* Restore link to GitHub repository to original location
|
29
|
+
* Restore link to GitHub repository to original location.
|
25
30
|
|
26
31
|
## 2.1.6
|
27
32
|
|
28
|
-
* Update link to GitHub repository to new location
|
33
|
+
* Update link to GitHub repository to new location.
|
29
34
|
|
30
35
|
## 2.1.5
|
31
36
|
|
32
|
-
* Drop support for Ruby < 2.4
|
37
|
+
* Drop support for Ruby < 2.4.
|
33
38
|
|
34
39
|
## 2.1.4
|
35
40
|
|
36
|
-
* Drop support for Ruby < 2.3
|
37
|
-
* Use update instead of deprecated update_attributes
|
38
|
-
* Remove explicit
|
41
|
+
* Drop support for Ruby < 2.3.
|
42
|
+
* Use `update` instead of deprecated `update_attributes`.
|
43
|
+
* Remove explicit Arel dependency to better support Active Record 6 beta.
|
39
44
|
|
40
45
|
## 2.1.3
|
41
46
|
|
42
47
|
* Drop support for Ruby < 2.2
|
43
|
-
* Disallow left/right single quotation marks in tsquery (Fabian Schwahn) (#382)
|
44
|
-
* Do not attempt to save an already-
|
45
|
-
* Quote column name when rebuilding (Jed Levin) (#379)
|
48
|
+
* Disallow left/right single quotation marks in tsquery. (Fabian Schwahn) (#382)
|
49
|
+
* Do not attempt to save an already-destroyed `PgSearch::Document`. (Oleg Dashevskii, Vokhmin Aleksei V) (#353)
|
50
|
+
* Quote column name when rebuilding. (Jed Levin) (#379)
|
46
51
|
|
47
52
|
## 2.1.2
|
48
53
|
|
49
|
-
* Silence warnings in Rails 5.2.0.beta2 (Kevin Deisz)
|
54
|
+
* Silence warnings in Rails 5.2.0.beta2. (Kevin Deisz)
|
50
55
|
|
51
56
|
## 2.1.1
|
52
57
|
|
53
|
-
* Support snake_case ts_headline options again (with deprecation warning)
|
58
|
+
* Support snake_case `ts_headline` options again. (with deprecation warning)
|
54
59
|
|
55
60
|
## 2.1.0
|
56
61
|
|
57
|
-
* Allow ts_headline options to be passed to
|
58
|
-
* Wait to load PgSearch::Document until after Active Record has loaded (Logan Leger)
|
59
|
-
* Add Rails version to generated migrations (Erik Eide)
|
62
|
+
* Allow `ts_headline` options to be passed to `:highlight`. (Ian Heisters)
|
63
|
+
* Wait to load `PgSearch::Document` until after Active Record has loaded. (Logan Leger)
|
64
|
+
* Add Rails version to generated migrations. (Erik Eide)
|
60
65
|
|
61
66
|
## 2.0.1
|
62
67
|
|
data/LICENSE
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c) 2010-
|
1
|
+
Copyright (c) 2010-2020 Casebook, PBC <http://www.casebook.net>
|
2
2
|
|
3
3
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
4
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
@@ -16,7 +16,7 @@ Read the blog post introducing PgSearch at https://content.pivotal.io/blog/pg-se
|
|
16
16
|
|
17
17
|
## REQUIREMENTS
|
18
18
|
|
19
|
-
* Ruby 2.
|
19
|
+
* Ruby 2.5+
|
20
20
|
* ActiveRecord 5.2+
|
21
21
|
* PostgreSQL 9.2+
|
22
22
|
* [PostgreSQL extensions](https://github.com/Casecommons/pg_search/wiki/Installing-PostgreSQL-Extensions) for certain features
|
@@ -294,7 +294,7 @@ is your base class. You can prevent ```rebuild``` from deleting your records
|
|
294
294
|
like so:
|
295
295
|
|
296
296
|
```ruby
|
297
|
-
PgSearch::Multisearch.rebuild(Product, false)
|
297
|
+
PgSearch::Multisearch.rebuild(Product, clean_up: false)
|
298
298
|
```
|
299
299
|
|
300
300
|
Rebuild is also available as a Rake task, for convenience.
|
@@ -338,7 +338,7 @@ class Movie < ActiveRecord::Base
|
|
338
338
|
|
339
339
|
# More sophisticated approach
|
340
340
|
def self.rebuild_pg_search_documents
|
341
|
-
connection.execute
|
341
|
+
connection.execute <<~SQL.squish
|
342
342
|
INSERT INTO pg_search_documents (searchable_type, searchable_id, content, created_at, updated_at)
|
343
343
|
SELECT 'Movie' AS searchable_type,
|
344
344
|
movies.id AS searchable_id,
|
@@ -895,7 +895,7 @@ class Sentence < ActiveRecord::Base
|
|
895
895
|
include PgSearch::Model
|
896
896
|
|
897
897
|
pg_search_scope :similarity_like,
|
898
|
-
against: :
|
898
|
+
against: :name,
|
899
899
|
using: {
|
900
900
|
trigram: {
|
901
901
|
word_similarity: true
|
@@ -903,7 +903,7 @@ class Sentence < ActiveRecord::Base
|
|
903
903
|
}
|
904
904
|
|
905
905
|
pg_search_scope :word_similarity_like,
|
906
|
-
against: :
|
906
|
+
against: :name,
|
907
907
|
using: [:trigram]
|
908
908
|
end
|
909
909
|
|
data/lib/pg_search.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require "active_record"
|
4
4
|
require "active_support/concern"
|
5
|
-
require "active_support/core_ext/module/
|
5
|
+
require "active_support/core_ext/module/attribute_accessors_per_thread"
|
6
6
|
require "active_support/core_ext/string/strip"
|
7
7
|
|
8
8
|
require "pg_search/configuration"
|
@@ -18,7 +18,7 @@ module PgSearch
|
|
18
18
|
autoload :Document, "pg_search/document"
|
19
19
|
|
20
20
|
def self.included(base)
|
21
|
-
ActiveSupport::Deprecation.warn
|
21
|
+
ActiveSupport::Deprecation.warn <<~MESSAGE
|
22
22
|
Directly including `PgSearch` into an Active Record model is deprecated and will be removed in pg_search 3.0.
|
23
23
|
|
24
24
|
Please replace `include PgSearch` with `include PgSearch::Model`.
|
@@ -27,10 +27,10 @@ module PgSearch
|
|
27
27
|
base.include PgSearch::Model
|
28
28
|
end
|
29
29
|
|
30
|
-
|
30
|
+
thread_mattr_accessor :multisearch_options
|
31
31
|
self.multisearch_options = {}
|
32
32
|
|
33
|
-
|
33
|
+
thread_mattr_accessor :unaccent_function
|
34
34
|
self.unaccent_function = "unaccent"
|
35
35
|
|
36
36
|
class << self
|
data/lib/pg_search/document.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "active_support/core_ext/module/delegation"
|
4
|
+
|
3
5
|
module PgSearch
|
4
6
|
module Features
|
5
7
|
class DMetaphone
|
@@ -9,13 +11,9 @@ module PgSearch
|
|
9
11
|
@tsearch = TSearch.new(query, options, columns, model, dmetaphone_normalizer)
|
10
12
|
end
|
11
13
|
|
12
|
-
|
13
|
-
tsearch.conditions
|
14
|
-
end
|
14
|
+
delegate :conditions, to: :tsearch
|
15
15
|
|
16
|
-
|
17
|
-
tsearch.rank
|
18
|
-
end
|
16
|
+
delegate :rank, to: :tsearch
|
19
17
|
|
20
18
|
private
|
21
19
|
|
@@ -59,7 +59,7 @@ module PgSearch
|
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
62
|
-
def deprecated_headline_options
|
62
|
+
def deprecated_headline_options # rubocop:disable Metrics/MethodLength
|
63
63
|
indifferent_options = options.with_indifferent_access
|
64
64
|
|
65
65
|
%w[
|
@@ -97,7 +97,7 @@ module PgSearch
|
|
97
97
|
|
98
98
|
DISALLOWED_TSQUERY_CHARACTERS = /['?\\:‘’]/.freeze
|
99
99
|
|
100
|
-
def tsquery_for_term(unsanitized_term)
|
100
|
+
def tsquery_for_term(unsanitized_term)
|
101
101
|
if options[:negation] && unsanitized_term.start_with?("!")
|
102
102
|
unsanitized_term[0] = ''
|
103
103
|
negated = true
|
@@ -107,25 +107,26 @@ module PgSearch
|
|
107
107
|
|
108
108
|
term_sql = Arel.sql(normalize(connection.quote(sanitized_term)))
|
109
109
|
|
110
|
-
|
111
|
-
|
112
|
-
|
110
|
+
tsquery = tsquery_expression(term_sql, negated: negated, prefix: options[:prefix])
|
111
|
+
|
112
|
+
Arel::Nodes::NamedFunction.new("to_tsquery", [dictionary, tsquery]).to_sql
|
113
|
+
end
|
114
|
+
|
115
|
+
# After this, the SQL expression evaluates to a string containing the term surrounded by single-quotes.
|
116
|
+
# If :prefix is true, then the term will have :* appended to the end.
|
117
|
+
# If :negated is true, then the term will have ! prepended to the front.
|
118
|
+
def tsquery_expression(term_sql, negated:, prefix:)
|
113
119
|
terms = [
|
114
120
|
(Arel::Nodes.build_quoted('!') if negated),
|
115
121
|
Arel::Nodes.build_quoted("' "),
|
116
122
|
term_sql,
|
117
123
|
Arel::Nodes.build_quoted(" '"),
|
118
|
-
(Arel::Nodes.build_quoted(":*") if
|
124
|
+
(Arel::Nodes.build_quoted(":*") if prefix)
|
119
125
|
].compact
|
120
126
|
|
121
|
-
|
127
|
+
terms.inject do |memo, term|
|
122
128
|
Arel::Nodes::InfixOperation.new("||", memo, Arel::Nodes.build_quoted(term))
|
123
129
|
end
|
124
|
-
|
125
|
-
Arel::Nodes::NamedFunction.new(
|
126
|
-
"to_tsquery",
|
127
|
-
[dictionary, tsquery_sql]
|
128
|
-
).to_sql
|
129
130
|
end
|
130
131
|
|
131
132
|
def tsquery
|
@@ -1,16 +1,16 @@
|
|
1
1
|
class AddPgSearchDmetaphoneSupportFunctions < ActiveRecord::Migration<%= migration_version %>
|
2
|
-
def
|
2
|
+
def up
|
3
3
|
say_with_time("Adding support functions for pg_search :dmetaphone") do
|
4
|
-
execute
|
5
|
-
<%= read_sql_file
|
4
|
+
execute <<~'SQL'.squish
|
5
|
+
<%= indent(read_sql_file("dmetaphone"), 8) %>
|
6
6
|
SQL
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
10
|
-
def
|
10
|
+
def down
|
11
11
|
say_with_time("Dropping support functions for pg_search :dmetaphone") do
|
12
|
-
execute
|
13
|
-
<%= read_sql_file
|
12
|
+
execute <<~'SQL'.squish
|
13
|
+
<%= indent(read_sql_file("uninstall_dmetaphone"), 8) %>
|
14
14
|
SQL
|
15
15
|
end
|
16
16
|
end
|