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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/lib/noiseless/adapter.rb +28 -35
  4. data/lib/noiseless/adapters/elasticsearch.rb +0 -1
  5. data/lib/noiseless/adapters/execution_modules/elasticsearch_execution.rb +8 -6
  6. data/lib/noiseless/adapters/execution_modules/es_compatible_execution.rb +65 -17
  7. data/lib/noiseless/adapters/execution_modules/http_transport.rb +29 -18
  8. data/lib/noiseless/adapters/execution_modules/opensearch_execution.rb +102 -114
  9. data/lib/noiseless/adapters/execution_modules/pgvector_support.rb +42 -47
  10. data/lib/noiseless/adapters/execution_modules/postgresql_execution.rb +63 -293
  11. data/lib/noiseless/adapters/execution_modules/postgresql_query.rb +269 -0
  12. data/lib/noiseless/adapters/execution_modules/typesense_execution.rb +172 -296
  13. data/lib/noiseless/adapters/execution_modules/typesense_query.rb +143 -0
  14. data/lib/noiseless/adapters/indices_api.rb +3 -1
  15. data/lib/noiseless/adapters/open_search.rb +30 -88
  16. data/lib/noiseless/adapters/postgresql.rb +5 -5
  17. data/lib/noiseless/adapters/typesense.rb +1 -2
  18. data/lib/noiseless/ast/aggregation.rb +0 -23
  19. data/lib/noiseless/ast/aggregation_builder.rb +28 -0
  20. data/lib/noiseless/ast/hybrid.rb +4 -2
  21. data/lib/noiseless/ast/join.rb +4 -5
  22. data/lib/noiseless/ast/vector.rb +25 -4
  23. data/lib/noiseless/bulk_importer.rb +16 -27
  24. data/lib/noiseless/callbacks.rb +4 -30
  25. data/lib/noiseless/connection_manager.rb +9 -3
  26. data/lib/noiseless/controller_runtime.rb +37 -0
  27. data/lib/noiseless/document_manager.rb +21 -36
  28. data/lib/noiseless/embedding.rb +33 -0
  29. data/lib/noiseless/instrumentation.rb +2 -136
  30. data/lib/noiseless/introspection/mermaid_diagrams.rb +143 -0
  31. data/lib/noiseless/introspection/query_visualizer.rb +3 -228
  32. data/lib/noiseless/introspection.rb +1 -1
  33. data/lib/noiseless/log_subscriber.rb +103 -0
  34. data/lib/noiseless/model.rb +2 -2
  35. data/lib/noiseless/multi_search.rb +2 -4
  36. data/lib/noiseless/pagination.rb +3 -3
  37. data/lib/noiseless/query_builder.rb +5 -4
  38. data/lib/noiseless/railtie.rb +0 -2
  39. data/lib/noiseless/response/records.rb +2 -1
  40. data/lib/noiseless/runtime_reset_middleware.rb +1 -1
  41. data/lib/noiseless/search_index_update_job.rb +13 -14
  42. data/lib/noiseless/test_case.rb +0 -1
  43. data/lib/noiseless/version.rb +1 -1
  44. data/lib/noiseless.rb +1 -10
  45. metadata +31 -13
  46. 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.7.1
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.45'
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'
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.103'
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.103'
59
+ version: '0.105'
54
60
  - !ruby/object:Gem::Dependency
55
- name: async-pool
61
+ name: io-event
56
62
  requirement: !ruby/object:Gem::Requirement
57
63
  requirements:
58
- - - "~>"
64
+ - - ">="
59
65
  - !ruby/object:Gem::Version
60
- version: '0.11'
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: '0.11'
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: '3.4'
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.10
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: []
@@ -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