lib/searchkick.rb in searchkick-5.3.1 vs lib/searchkick.rb in searchkick-5.4.0

- old
+ new

@@ -23,11 +23,13 @@ require_relative "searchkick/reindex_queue" require_relative "searchkick/record_data" require_relative "searchkick/record_indexer" require_relative "searchkick/relation" require_relative "searchkick/relation_indexer" +require_relative "searchkick/reranking" require_relative "searchkick/results" +require_relative "searchkick/script" require_relative "searchkick/version" require_relative "searchkick/where" # integrations require_relative "searchkick/railtie" if defined?(Rails) @@ -139,10 +141,19 @@ def self.server_below?(version, true_version = false) server_version = !true_version && opensearch? ? "7.10.2" : self.server_version Gem::Version.new(server_version.split("-")[0]) < Gem::Version.new(version.split("-")[0]) end + # private + def self.knn_support? + if opensearch? + !server_below?("2.4.0", true) + else + !server_below?("8.6.0") + end + end + def self.search(term = "*", model: nil, **options, &block) options = options.dup klass = model # convert index_name into models if possible @@ -180,14 +191,21 @@ return if queries.empty? queries = queries.map { |q| q.send(:query) } event = { name: "Multi Search", - body: queries.flat_map { |q| [q.params.except(:body).to_json, q.body.to_json] }.map { |v| "#{v}\n" }.join, + body: queries.flat_map { |q| [q.params.except(:body).to_json, q.body.to_json] }.map { |v| "#{v}\n" }.join } ActiveSupport::Notifications.instrument("multi_search.searchkick", event) do MultiSearch.new(queries).perform end + end + + # script + + # experimental + def self.script(source, **options) + Script.new(source, **options) end # callbacks def self.enable_callbacks