Class: RecombeeApiClient::SearchItems

Inherits:
ApiRequest
  • Object
show all
Defined in:
lib/recombee_api_client/api/search_items.rb

Overview

Full-text personalized search. The results are based on the provided ‘searchQuery` and also on the user’s past interactions (purchases, ratings, etc.) with the items (items more suitable for the user are preferred in the results).

All the string and set item properties are indexed by the search engine.

This endpoint should be used in a search box on your website/app. It can be called multiple times as the user is typing the query in order to get the most viable suggestions based on the current state of the query, or once after submitting the whole query.

The returned items are sorted by relevance (the first item being the most relevant).

Besides the recommended items, also a unique ‘recommId` is returned in the response. It can be used to:

It is also possible to use POST HTTP method (for example in the case of a very long ReQL filter) - query parameters then become body parameters.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from HashNormalizer

#camelize, #normalize_optional

Constructor Details

#initialize(user_id, search_query, count, optional = {}) ⇒ SearchItems

  • *Required arguments*

    • user_id -> ID of the user for whom personalized search will be performed.

    • search_query -> Search query provided by the user. It is used for the full-text search.

    • count -> Number of items to be returned (N for the top-N results).

  • *Optional arguments (given as hash optional)*

    • scenario -> Scenario defines a particular search field in your user interface.

You can set various settings to the [scenario](docs.recombee.com/scenarios) in the [Admin UI](admin.recombee.com). You can also see the performance of each scenario in the Admin UI separately, so you can check how well each field performs.

The AI that optimizes models to get the best results may optimize different scenarios separately, or even use different models in each of the scenarios.

- +cascadeCreate+ -> If the user does not exist in the database, returns a list of non-personalized search results and creates the user in the database. This allows, for example, rotations in the following recommendations for that user, as the user will be already known to the system.
- +returnProperties+ -> With `returnProperties=true`, property values of the recommended items are returned along with their IDs in a JSON dictionary. The acquired property values can be used to easily display the recommended items to the user.

Example response: “‘json

{
  "recommId": "ce52ada4-e4d9-4885-943c-407db2dee837",
  "recomms": 
    [
      {
        "id": "tv-178",
        "values": {
          "description": "4K TV with 3D feature",
          "categories":   ["Electronics", "Televisions"],
          "price": 342,
          "url": "myshop.com/tv-178"
        }
      },
      {
        "id": "mixer-42",
        "values": {
          "description": "Stainless Steel Mixer",
          "categories":   ["Home & Kitchen"],
          "price": 39,
          "url": "myshop.com/mixer-42"
        }
      }
    ],
  "numberNextRecommsCalls": 0
}

“‘

- +includedProperties+ -> Allows specifying which properties should be returned when `returnProperties=true` is set. The properties are given as a comma-separated list.

Example response for ‘includedProperties=description,price`: “`json

{
  "recommId": "a86ee8d5-cd8e-46d1-886c-8b3771d0520b",
  "recomms":
    [
      {
        "id": "tv-178",
        "values": {
          "description": "4K TV with 3D feature",
          "price": 342
        }
      },
      {
        "id": "mixer-42",
        "values": {
          "description": "Stainless Steel Mixer",
          "price": 39
        }
      }
    ],
  "numberNextRecommsCalls": 0
}

“‘

- +filter+ -> Boolean-returning [ReQL](https://docs.recombee.com/reql) expression, which allows you to filter recommended items based on the values of their attributes.

Filters can also be assigned to a [scenario](docs.recombee.com/scenarios) in the [Admin UI](admin.recombee.com).

- +booster+ -> Number-returning [ReQL](https://docs.recombee.com/reql) expression, which allows you to boost the recommendation rate of some items based on the values of their attributes.

Boosters can also be assigned to a [scenario](docs.recombee.com/scenarios) in the [Admin UI](admin.recombee.com).

- +logic+ -> Logic specifies the particular behavior of the recommendation models. You can pick tailored logic for your domain and use case.

See [this section](docs.recombee.com/recommendation_logics) for a list of available logics and other details.

The difference between ‘logic` and `scenario` is that `logic` specifies mainly behavior, while `scenario` specifies the place where recommendations are shown to the users.

Logic can also be set to a [scenario](docs.recombee.com/scenarios) in the [Admin UI](admin.recombee.com).

- +expertSettings+ -> Dictionary of custom options.

- +returnAbGroup+ -> If there is a custom AB-testing running, return the name of the group to which the request belongs.


122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/recombee_api_client/api/search_items.rb', line 122

def initialize(user_id, search_query, count, optional = {})
  @user_id = user_id
  @search_query = search_query
  @count = count
  optional = normalize_optional(optional)
  @scenario = optional['scenario']
  @cascade_create = optional['cascadeCreate']
  @return_properties = optional['returnProperties']
  @included_properties = optional['includedProperties']
  @filter = optional['filter']
  @booster = optional['booster']
  @logic = optional['logic']
  @expert_settings = optional['expertSettings']
  @return_ab_group = optional['returnAbGroup']
  @optional = optional
  @timeout = 3000
  @ensure_https = false
  @optional.each do |par, _|
    fail UnknownOptionalParameter.new(par) unless ["scenario","cascadeCreate","returnProperties","includedProperties","filter","booster","logic","expertSettings","returnAbGroup"].include? par
  end
end

Instance Attribute Details

#boosterObject (readonly)

Returns the value of attribute booster.



26
27
28
# File 'lib/recombee_api_client/api/search_items.rb', line 26

def booster
  @booster
end

#cascade_createObject (readonly)

Returns the value of attribute cascade_create.



26
27
28
# File 'lib/recombee_api_client/api/search_items.rb', line 26

def cascade_create
  @cascade_create
end

#countObject (readonly)

Returns the value of attribute count.



26
27
28
# File 'lib/recombee_api_client/api/search_items.rb', line 26

def count
  @count
end

#ensure_httpsObject

Returns the value of attribute ensure_https.



28
29
30
# File 'lib/recombee_api_client/api/search_items.rb', line 28

def ensure_https
  @ensure_https
end

#expert_settingsObject (readonly)

Returns the value of attribute expert_settings.



26
27
28
# File 'lib/recombee_api_client/api/search_items.rb', line 26

def expert_settings
  @expert_settings
end

#filterObject (readonly)

Returns the value of attribute filter.



26
27
28
# File 'lib/recombee_api_client/api/search_items.rb', line 26

def filter
  @filter
end

#included_propertiesObject (readonly)

Returns the value of attribute included_properties.



26
27
28
# File 'lib/recombee_api_client/api/search_items.rb', line 26

def included_properties
  @included_properties
end

#logicObject (readonly)

Returns the value of attribute logic.



26
27
28
# File 'lib/recombee_api_client/api/search_items.rb', line 26

def logic
  @logic
end

#return_ab_groupObject (readonly)

Returns the value of attribute return_ab_group.



26
27
28
# File 'lib/recombee_api_client/api/search_items.rb', line 26

def return_ab_group
  @return_ab_group
end

#return_propertiesObject (readonly)

Returns the value of attribute return_properties.



26
27
28
# File 'lib/recombee_api_client/api/search_items.rb', line 26

def return_properties
  @return_properties
end

#scenarioObject (readonly)

Returns the value of attribute scenario.



26
27
28
# File 'lib/recombee_api_client/api/search_items.rb', line 26

def scenario
  @scenario
end

#search_queryObject (readonly)

Returns the value of attribute search_query.



26
27
28
# File 'lib/recombee_api_client/api/search_items.rb', line 26

def search_query
  @search_query
end

#timeoutObject

Returns the value of attribute timeout.



27
28
29
# File 'lib/recombee_api_client/api/search_items.rb', line 27

def timeout
  @timeout
end

#user_idObject (readonly)

Returns the value of attribute user_id.



26
27
28
# File 'lib/recombee_api_client/api/search_items.rb', line 26

def user_id
  @user_id
end

Instance Method Details

#body_parametersObject

Values of body parameters as a Hash



150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# File 'lib/recombee_api_client/api/search_items.rb', line 150

def body_parameters
  p = Hash.new
  p['searchQuery'] = @search_query
  p['count'] = @count
  p['scenario'] = @optional['scenario'] if @optional.include? 'scenario'
  p['cascadeCreate'] = @optional['cascadeCreate'] if @optional.include? 'cascadeCreate'
  p['returnProperties'] = @optional['returnProperties'] if @optional.include? 'returnProperties'
  p['includedProperties'] = @optional['includedProperties'] if @optional.include? 'includedProperties'
  p['filter'] = @optional['filter'] if @optional.include? 'filter'
  p['booster'] = @optional['booster'] if @optional.include? 'booster'
  p['logic'] = @optional['logic'] if @optional.include? 'logic'
  p['expertSettings'] = @optional['expertSettings'] if @optional.include? 'expertSettings'
  p['returnAbGroup'] = @optional['returnAbGroup'] if @optional.include? 'returnAbGroup'
  p
end

#methodObject

HTTP method



145
146
147
# File 'lib/recombee_api_client/api/search_items.rb', line 145

def method
  :post
end

#pathObject

Relative path to the endpoint



174
175
176
# File 'lib/recombee_api_client/api/search_items.rb', line 174

def path
  "/{databaseId}/search/users/#{@user_id}/items/"
end

#query_parametersObject

Values of query parameters as a Hash. name of parameter => value of the parameter



168
169
170
171
# File 'lib/recombee_api_client/api/search_items.rb', line 168

def query_parameters
  params = {}
  params
end