Module: Showroom::Search

Defined in:
lib/showroom/models/search.rb,
lib/showroom/models/search/result.rb,
lib/showroom/models/search/suggestion.rb,
lib/showroom/models/search/page_suggestion.rb,
lib/showroom/models/search/query_suggestion.rb,
lib/showroom/models/search/article_suggestion.rb,
lib/showroom/models/search/product_suggestion.rb,
lib/showroom/models/search/collection_suggestion.rb

Overview

Provides search/suggest functionality against the Shopify search API.

Examples:

result = Showroom::Search.suggest('lorem', types: [:product, :collection], limit: 5)
result.products.first.title  # => "Lorem Road Bike"

Defined Under Namespace

Classes: ArticleSuggestion, CollectionSuggestion, PageSuggestion, ProductSuggestion, QuerySuggestion, Result, Suggestion

Class Method Summary collapse

Class Method Details

.suggest(query_str, types: %i[product collection],, limit: Showroom.per_page, **params) ⇒ Result

Calls GET /search/suggest.json and returns a Result wrapping the response.

Builds query parameters of the form:

?q=...&resources[type]=product,collection&resources[limit]=10

Parameters:

  • query_str (String)

    the search query

  • types (Array<Symbol>) (defaults to: %i[product collection],)

    resource types to search (e.g. :product, :collection, :query)

  • limit (Integer) (defaults to: Showroom.per_page)

    maximum number of results per type

  • params (Hash)

    additional query parameters forwarded to the API

Returns:



20
21
22
23
24
25
26
# File 'lib/showroom/models/search.rb', line 20

def self.suggest(query_str, types: %i[product collection], limit: Showroom.per_page, **params)
  query = { q: query_str, 'resources[limit]' => limit }
  query['resources[type]'] = types.join(',') unless types.empty?
  query.merge!(params)
  raw = Showroom.client.get('/search/suggest.json', query)
  Result.new(raw.dig('resources', 'results') || {})
end