noiseless 0.7.1 ā 0.8.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/README.md +2 -2
- data/lib/noiseless/adapter.rb +28 -35
- data/lib/noiseless/adapters/elasticsearch.rb +0 -1
- data/lib/noiseless/adapters/execution_modules/elasticsearch_execution.rb +8 -6
- data/lib/noiseless/adapters/execution_modules/es_compatible_execution.rb +65 -17
- data/lib/noiseless/adapters/execution_modules/http_transport.rb +29 -18
- data/lib/noiseless/adapters/execution_modules/opensearch_execution.rb +102 -114
- data/lib/noiseless/adapters/execution_modules/pgvector_support.rb +42 -47
- data/lib/noiseless/adapters/execution_modules/postgresql_execution.rb +63 -293
- data/lib/noiseless/adapters/execution_modules/postgresql_query.rb +269 -0
- data/lib/noiseless/adapters/execution_modules/typesense_execution.rb +172 -296
- data/lib/noiseless/adapters/execution_modules/typesense_query.rb +143 -0
- data/lib/noiseless/adapters/indices_api.rb +3 -1
- data/lib/noiseless/adapters/open_search.rb +30 -88
- data/lib/noiseless/adapters/postgresql.rb +5 -5
- data/lib/noiseless/adapters/typesense.rb +1 -2
- data/lib/noiseless/ast/aggregation.rb +0 -23
- data/lib/noiseless/ast/aggregation_builder.rb +28 -0
- data/lib/noiseless/ast/hybrid.rb +4 -2
- data/lib/noiseless/ast/join.rb +4 -5
- data/lib/noiseless/ast/vector.rb +25 -4
- data/lib/noiseless/bulk_importer.rb +16 -27
- data/lib/noiseless/callbacks.rb +4 -30
- data/lib/noiseless/connection_manager.rb +9 -3
- data/lib/noiseless/controller_runtime.rb +37 -0
- data/lib/noiseless/document_manager.rb +21 -36
- data/lib/noiseless/embedding.rb +33 -0
- data/lib/noiseless/instrumentation.rb +2 -136
- data/lib/noiseless/introspection/mermaid_diagrams.rb +143 -0
- data/lib/noiseless/introspection/query_visualizer.rb +3 -228
- data/lib/noiseless/introspection.rb +1 -1
- data/lib/noiseless/log_subscriber.rb +103 -0
- data/lib/noiseless/model.rb +2 -2
- data/lib/noiseless/multi_search.rb +2 -4
- data/lib/noiseless/pagination.rb +3 -3
- data/lib/noiseless/query_builder.rb +5 -4
- data/lib/noiseless/railtie.rb +0 -2
- data/lib/noiseless/response/records.rb +2 -1
- data/lib/noiseless/runtime_reset_middleware.rb +1 -1
- data/lib/noiseless/search_index_update_job.rb +13 -14
- data/lib/noiseless/test_case.rb +0 -1
- data/lib/noiseless/version.rb +1 -1
- data/lib/noiseless.rb +1 -10
- metadata +31 -13
- data/lib/tasks/benchmark.rake +0 -35
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: noiseless
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.8.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Abdelkader Boudih
|
|
@@ -16,6 +16,9 @@ dependencies:
|
|
|
16
16
|
- - "~>"
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
18
|
version: '8.1'
|
|
19
|
+
- - ">="
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: 8.1.4
|
|
19
22
|
type: :runtime
|
|
20
23
|
prerelease: false
|
|
21
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -23,48 +26,51 @@ dependencies:
|
|
|
23
26
|
- - "~>"
|
|
24
27
|
- !ruby/object:Gem::Version
|
|
25
28
|
version: '8.1'
|
|
29
|
+
- - ">="
|
|
30
|
+
- !ruby/object:Gem::Version
|
|
31
|
+
version: 8.1.4
|
|
26
32
|
- !ruby/object:Gem::Dependency
|
|
27
33
|
name: async
|
|
28
34
|
requirement: !ruby/object:Gem::Requirement
|
|
29
35
|
requirements:
|
|
30
36
|
- - "~>"
|
|
31
37
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '2.
|
|
38
|
+
version: '2.46'
|
|
33
39
|
type: :runtime
|
|
34
40
|
prerelease: false
|
|
35
41
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
42
|
requirements:
|
|
37
43
|
- - "~>"
|
|
38
44
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: '2.
|
|
45
|
+
version: '2.46'
|
|
40
46
|
- !ruby/object:Gem::Dependency
|
|
41
47
|
name: async-http
|
|
42
48
|
requirement: !ruby/object:Gem::Requirement
|
|
43
49
|
requirements:
|
|
44
50
|
- - "~>"
|
|
45
51
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: '0.
|
|
52
|
+
version: '0.105'
|
|
47
53
|
type: :runtime
|
|
48
54
|
prerelease: false
|
|
49
55
|
version_requirements: !ruby/object:Gem::Requirement
|
|
50
56
|
requirements:
|
|
51
57
|
- - "~>"
|
|
52
58
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: '0.
|
|
59
|
+
version: '0.105'
|
|
54
60
|
- !ruby/object:Gem::Dependency
|
|
55
|
-
name:
|
|
61
|
+
name: io-event
|
|
56
62
|
requirement: !ruby/object:Gem::Requirement
|
|
57
63
|
requirements:
|
|
58
|
-
- - "
|
|
64
|
+
- - ">="
|
|
59
65
|
- !ruby/object:Gem::Version
|
|
60
|
-
version:
|
|
66
|
+
version: 1.22.1
|
|
61
67
|
type: :runtime
|
|
62
68
|
prerelease: false
|
|
63
69
|
version_requirements: !ruby/object:Gem::Requirement
|
|
64
70
|
requirements:
|
|
65
|
-
- - "
|
|
71
|
+
- - ">="
|
|
66
72
|
- !ruby/object:Gem::Version
|
|
67
|
-
version:
|
|
73
|
+
version: 1.22.1
|
|
68
74
|
- !ruby/object:Gem::Dependency
|
|
69
75
|
name: railties
|
|
70
76
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -72,6 +78,9 @@ dependencies:
|
|
|
72
78
|
- - "~>"
|
|
73
79
|
- !ruby/object:Gem::Version
|
|
74
80
|
version: '8.1'
|
|
81
|
+
- - ">="
|
|
82
|
+
- !ruby/object:Gem::Version
|
|
83
|
+
version: 8.1.4
|
|
75
84
|
type: :runtime
|
|
76
85
|
prerelease: false
|
|
77
86
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -79,6 +88,9 @@ dependencies:
|
|
|
79
88
|
- - "~>"
|
|
80
89
|
- !ruby/object:Gem::Version
|
|
81
90
|
version: '8.1'
|
|
91
|
+
- - ">="
|
|
92
|
+
- !ruby/object:Gem::Version
|
|
93
|
+
version: 8.1.4
|
|
82
94
|
- !ruby/object:Gem::Dependency
|
|
83
95
|
name: zeitwerk
|
|
84
96
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -228,13 +240,16 @@ files:
|
|
|
228
240
|
- lib/noiseless/adapters/execution_modules/opensearch_execution.rb
|
|
229
241
|
- lib/noiseless/adapters/execution_modules/pgvector_support.rb
|
|
230
242
|
- lib/noiseless/adapters/execution_modules/postgresql_execution.rb
|
|
243
|
+
- lib/noiseless/adapters/execution_modules/postgresql_query.rb
|
|
231
244
|
- lib/noiseless/adapters/execution_modules/typesense_execution.rb
|
|
245
|
+
- lib/noiseless/adapters/execution_modules/typesense_query.rb
|
|
232
246
|
- lib/noiseless/adapters/indices_api.rb
|
|
233
247
|
- lib/noiseless/adapters/open_search.rb
|
|
234
248
|
- lib/noiseless/adapters/postgresql.rb
|
|
235
249
|
- lib/noiseless/adapters/typesense.rb
|
|
236
250
|
- lib/noiseless/ast.rb
|
|
237
251
|
- lib/noiseless/ast/aggregation.rb
|
|
252
|
+
- lib/noiseless/ast/aggregation_builder.rb
|
|
238
253
|
- lib/noiseless/ast/bool.rb
|
|
239
254
|
- lib/noiseless/ast/bulk.rb
|
|
240
255
|
- lib/noiseless/ast/collapse.rb
|
|
@@ -258,13 +273,17 @@ files:
|
|
|
258
273
|
- lib/noiseless/bulk_importer.rb
|
|
259
274
|
- lib/noiseless/callbacks.rb
|
|
260
275
|
- lib/noiseless/connection_manager.rb
|
|
276
|
+
- lib/noiseless/controller_runtime.rb
|
|
261
277
|
- lib/noiseless/document_manager.rb
|
|
262
278
|
- lib/noiseless/dsl.rb
|
|
279
|
+
- lib/noiseless/embedding.rb
|
|
263
280
|
- lib/noiseless/generators/application_search_generator.rb
|
|
264
281
|
- lib/noiseless/instrumentation.rb
|
|
265
282
|
- lib/noiseless/introspection.rb
|
|
266
283
|
- lib/noiseless/introspection/console.rb
|
|
284
|
+
- lib/noiseless/introspection/mermaid_diagrams.rb
|
|
267
285
|
- lib/noiseless/introspection/query_visualizer.rb
|
|
286
|
+
- lib/noiseless/log_subscriber.rb
|
|
268
287
|
- lib/noiseless/mapping.rb
|
|
269
288
|
- lib/noiseless/mapping_definition_processor.rb
|
|
270
289
|
- lib/noiseless/model.rb
|
|
@@ -285,7 +304,6 @@ files:
|
|
|
285
304
|
- lib/noiseless/test_case.rb
|
|
286
305
|
- lib/noiseless/test_helper.rb
|
|
287
306
|
- lib/noiseless/version.rb
|
|
288
|
-
- lib/tasks/benchmark.rake
|
|
289
307
|
- lib/tasks/release.rake
|
|
290
308
|
- lib/tasks/test.rake
|
|
291
309
|
homepage: https://github.com/seuros/noiseless
|
|
@@ -301,14 +319,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
301
319
|
requirements:
|
|
302
320
|
- - ">="
|
|
303
321
|
- !ruby/object:Gem::Version
|
|
304
|
-
version: '
|
|
322
|
+
version: '4.0'
|
|
305
323
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
306
324
|
requirements:
|
|
307
325
|
- - ">="
|
|
308
326
|
- !ruby/object:Gem::Version
|
|
309
327
|
version: '0'
|
|
310
328
|
requirements: []
|
|
311
|
-
rubygems_version: 4.0.
|
|
329
|
+
rubygems_version: 4.0.20
|
|
312
330
|
specification_version: 4
|
|
313
331
|
summary: Async-first Rails search abstraction with multi-backend support
|
|
314
332
|
test_files: []
|
data/lib/tasks/benchmark.rake
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
namespace :benchmark do
|
|
4
|
-
desc "Benchmark search performance across Elasticsearch, OpenSearch, and PostgreSQL"
|
|
5
|
-
task search: :environment do
|
|
6
|
-
require "benchmark/ips"
|
|
7
|
-
require "async"
|
|
8
|
-
|
|
9
|
-
# Use configured connections from Rails
|
|
10
|
-
engines = {
|
|
11
|
-
elasticsearch: :primary,
|
|
12
|
-
opensearch: :secondary,
|
|
13
|
-
postgresql: :postgresql
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
puts "=" * 80
|
|
17
|
-
puts "MULTI-ENGINE SEARCH BENCHMARK"
|
|
18
|
-
puts "=" * 80
|
|
19
|
-
puts "Records: 10k benchmark articles"
|
|
20
|
-
puts "Engines: #{engines.keys.join(', ')}"
|
|
21
|
-
puts "=" * 80
|
|
22
|
-
|
|
23
|
-
# Load PostgreSQL data
|
|
24
|
-
puts "\nš Loading PostgreSQL..."
|
|
25
|
-
Article.delete_all
|
|
26
|
-
fixtures_path = Rails.root.join("../../test/fixtures")
|
|
27
|
-
ActiveRecord::FixtureSet.create_fixtures(fixtures_path, ["benchmark_articles"])
|
|
28
|
-
puts "ā
Loaded #{Article.count} records"
|
|
29
|
-
|
|
30
|
-
# Register PostgreSQL model
|
|
31
|
-
Noiseless.connections.client(:postgresql).register_model(Article, index_name: "articles")
|
|
32
|
-
|
|
33
|
-
puts "\nš Benchmark ready. Run with: bundle exec rake benchmark:search"
|
|
34
|
-
end
|
|
35
|
-
end
|