full_search 0.4.2 → 0.4.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/lib/full_search/index.rb +23 -2
- data/lib/full_search/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 894bce4229c00412829f531fbb35c78a3b9a3b4ac869ddc23e67421d1abc773b
|
|
4
|
+
data.tar.gz: 3a9504c246aced49dcef0b9991efddf53fdbff873c0ddf7e6781e6551550af71
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: aea83a66af28bf651dd022c63725d012dea6783e57125c5febbf7e48582fe4ac8990cd30af6d9c72bc9544ae3fbf925e84c03a060c549a1b79aaf65668bb2705
|
|
7
|
+
data.tar.gz: 9d9d227f097f3c1b5629aa6ced3768e2cb99db6fdafa28ca15ce641afac2ed4af7f15892d6b7fc87316246eb1be7fd02cdd81db1d1f16407fcf2f8a574d20af6
|
data/lib/full_search/index.rb
CHANGED
|
@@ -29,6 +29,10 @@ module FullSearch
|
|
|
29
29
|
|
|
30
30
|
create_metadata_table!
|
|
31
31
|
|
|
32
|
+
if table_exists?(model) && !healthy?(model)
|
|
33
|
+
rebuild!(model)
|
|
34
|
+
end
|
|
35
|
+
|
|
32
36
|
fts_was_created = false
|
|
33
37
|
unless table_exists?(model)
|
|
34
38
|
conn.execute(create_virtual_table_sql(model))
|
|
@@ -162,8 +166,14 @@ module FullSearch
|
|
|
162
166
|
return unless table_exists?(model)
|
|
163
167
|
|
|
164
168
|
conn = connection
|
|
165
|
-
|
|
166
|
-
|
|
169
|
+
begin
|
|
170
|
+
conn.execute("DELETE FROM #{qt(fts_table_name(model))};")
|
|
171
|
+
conn.execute("DELETE FROM #{qt(trigram_table_name(model))};") if trigram_table_needed?(model) && trigram_table_exists?(model)
|
|
172
|
+
rescue ActiveRecord::StatementInvalid => e
|
|
173
|
+
raise unless e.message.match?(/fts5: corruption|invalid fts5 file format|malformed database schema/i)
|
|
174
|
+
|
|
175
|
+
rebuild!(model)
|
|
176
|
+
end
|
|
167
177
|
end
|
|
168
178
|
|
|
169
179
|
def drop!(model)
|
|
@@ -211,6 +221,17 @@ module FullSearch
|
|
|
211
221
|
!table_exists?(model)
|
|
212
222
|
end
|
|
213
223
|
|
|
224
|
+
def healthy?(model)
|
|
225
|
+
return false unless table_exists?(model)
|
|
226
|
+
|
|
227
|
+
connection.execute("SELECT count(*) FROM #{qt(fts_table_name(model))}")
|
|
228
|
+
true
|
|
229
|
+
rescue ActiveRecord::StatementInvalid => e
|
|
230
|
+
raise unless e.message.match?(/fts5: corruption|invalid fts5 file format|malformed database schema/i)
|
|
231
|
+
|
|
232
|
+
false
|
|
233
|
+
end
|
|
234
|
+
|
|
214
235
|
def trigram_table_needed?(model)
|
|
215
236
|
model.full_search_dsl&.typo_tolerance? && model.full_search_dsl.tokenize != "trigram"
|
|
216
237
|
end
|
data/lib/full_search/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: full_search
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.4.
|
|
4
|
+
version: 0.4.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ben D'Angelo
|
|
@@ -188,7 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
188
188
|
- !ruby/object:Gem::Version
|
|
189
189
|
version: '2.0'
|
|
190
190
|
requirements: []
|
|
191
|
-
rubygems_version: 4.0.
|
|
191
|
+
rubygems_version: 4.0.10
|
|
192
192
|
specification_version: 4
|
|
193
193
|
summary: SQLite FTS5 full-text search for Rails/ActiveRecord
|
|
194
194
|
test_files: []
|