ankane/searchkick · error · ArgumentError

Use Searchkick.multi_search for hybrid search

Error message

Use Searchkick.multi_search for hybrid search

What it means

Error "Use Searchkick.multi_search for hybrid search" thrown in ankane/searchkick.

Source

Thrown at lib/searchkick/query.rb:966

        case f
        when :_and, :_or, :or, :_not, :_script
          if result.key?(f)
            # combine with _and if needed
            result[:_and] ||= []
            result[:_and] += [{f => v}]
          else
            result[f] = v
          end
        else
          result[f] = v unless field_keys.include?(f.to_s)
        end
      end
      result
    end

    def set_knn(payload, knn, per_page, offset)
      if term != "*"
        raise ArgumentError, "Use Searchkick.multi_search for hybrid search"
      end

      field = knn[:field]
      field_options = searchkick_options.dig(:knn, field.to_sym) || searchkick_options.dig(:knn, field.to_s) || {}
      vector = knn[:vector]
      distance = knn[:distance] || field_options[:distance]
      exact = knn[:exact]
      exact = field_options[:distance].nil? || distance != field_options[:distance] if exact.nil?
      k = per_page + offset
      ef_search = knn[:ef_search]
      filter = payload.delete(:query)

      if distance.nil?
        raise ArgumentError, "distance required"
      elsif !exact && distance != field_options[:distance]
        raise ArgumentError, "distance must match searchkick options for approximate search"
      end

View on GitHub (pinned to 93e901a75b)

When it happens

Trigger: Thrown at lib/searchkick/query.rb:966 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ankane/searchkick@93e901a75b (2026-08-21). Data as JSON: /api/errors/3c02ec184518c237. Report an issue: GitHub.