public class RecommendItemsToItem extends Request
Modifier and Type | Field and Description |
---|---|
protected java.lang.String |
booster
Number-returning [ReQL](https://docs.recombee.com/reql.html) expression which allows you to boost recommendation rate of some items based on the values of their attributes.
|
protected java.lang.Boolean |
cascadeCreate
If item of given *itemId* or user of given *targetUserId* doesn't exist in the database, it creates the missing entity/entities and returns some (non-personalized) recommendations.
|
protected java.lang.Long |
count
Number of items to be recommended (N for the top-N recommendation).
|
protected java.lang.Double |
diversity
**Expert option** Real number from [0.0, 1.0] which determines how much mutually dissimilar should the recommended items be.
|
protected java.util.Map<java.lang.String,java.lang.Object> |
expertSettings
Dictionary of custom options.
|
protected java.lang.String |
filter
Boolean-returning [ReQL](https://docs.recombee.com/reql.html) expression which allows you to filter recommended items based on the values of their attributes.
|
protected java.lang.String[] |
includedProperties
Allows to specify, which properties should be returned when `returnProperties=true` is set.
|
protected java.lang.String |
itemId
ID of the item for which the recommendations are to be generated.
|
protected java.lang.String |
minRelevance
**Expert option** If the *targetUserId* is provided: Specifies the threshold of how much relevant must the recommended items be to the user.
|
protected java.lang.Boolean |
returnProperties
With `returnProperties=true`, property values of the recommended items are returned along with their IDs in a JSON dictionary.
|
protected java.lang.Double |
rotationRate
**Expert option** If the *targetUserId* is provided: If your users browse the system in real-time, it may easily happen that you wish to offer them recommendations multiple times.
|
protected java.lang.Double |
rotationTime
**Expert option** If the *targetUserId* is provided: Taking *rotationRate* into account, specifies how long time it takes to an item to recover from the penalization.
|
protected java.lang.String |
scenario
Scenario defines a particular application of recommendations.
|
protected java.lang.String |
targetUserId
ID of the user who will see the recommendations.
|
protected java.lang.Double |
userImpact
If *targetUserId* parameter is present, the recommendations are biased towards the user given.
|
Constructor and Description |
---|
RecommendItemsToItem(java.lang.String itemId,
java.lang.String targetUserId,
long count)
Construct the request
|
Modifier and Type | Method and Description |
---|---|
java.util.Map<java.lang.String,java.lang.Object> |
getBodyParameters()
Get body parameters
|
java.lang.String |
getBooster() |
boolean |
getCascadeCreate() |
long |
getCount() |
double |
getDiversity() |
java.util.Map<java.lang.String,java.lang.Object> |
getExpertSettings() |
java.lang.String |
getFilter() |
HTTPMethod |
getHTTPMethod() |
java.lang.String[] |
getIncludedProperties() |
java.lang.String |
getItemId() |
java.lang.String |
getMinRelevance() |
java.lang.String |
getPath() |
java.util.Map<java.lang.String,java.lang.Object> |
getQueryParameters()
Get query parameters
|
boolean |
getReturnProperties() |
double |
getRotationRate() |
double |
getRotationTime() |
java.lang.String |
getScenario() |
java.lang.String |
getTargetUserId() |
double |
getUserImpact() |
RecommendItemsToItem |
setBooster(java.lang.String booster) |
RecommendItemsToItem |
setCascadeCreate(boolean cascadeCreate) |
RecommendItemsToItem |
setDiversity(double diversity) |
RecommendItemsToItem |
setExpertSettings(java.util.Map<java.lang.String,java.lang.Object> expertSettings) |
RecommendItemsToItem |
setFilter(java.lang.String filter) |
RecommendItemsToItem |
setIncludedProperties(java.lang.String[] includedProperties) |
RecommendItemsToItem |
setMinRelevance(java.lang.String minRelevance) |
RecommendItemsToItem |
setReturnProperties(boolean returnProperties) |
RecommendItemsToItem |
setRotationRate(double rotationRate) |
RecommendItemsToItem |
setRotationTime(double rotationTime) |
RecommendItemsToItem |
setScenario(java.lang.String scenario) |
RecommendItemsToItem |
setUserImpact(double userImpact) |
getEnsureHttps, getTimeout, setTimeout
protected java.lang.String itemId
protected java.lang.String targetUserId
protected java.lang.Long count
protected java.lang.Double userImpact
protected java.lang.String filter
protected java.lang.String booster
protected java.lang.Boolean cascadeCreate
protected java.lang.String scenario
protected java.lang.Boolean returnProperties
protected java.lang.String[] includedProperties
protected java.lang.Double diversity
protected java.lang.String minRelevance
protected java.lang.Double rotationRate
protected java.lang.Double rotationTime
protected java.util.Map<java.lang.String,java.lang.Object> expertSettings
public RecommendItemsToItem(java.lang.String itemId, java.lang.String targetUserId, long count)
itemId
- ID of the item for which the recommendations are to be generated.targetUserId
- ID of the user who will see the recommendations.
Specifying the *targetUserId* is beneficial because:
* It makes the recommendations personalized
* Allows the calculation of Actions and Conversions
in the graphical user interface,
as Recombee can pair the user who got recommendations
and who afterwards viewed/purchased an item.
If you insist on not specifying the user, pass `null`
(`None`, `nil`, `NULL` etc. depending on language) to *targetUserId*.
Do not create some special dummy user for getting recommendations,
as it could mislead the recommendation models,
and result in wrong recommendations.
For anonymous/unregistered users it is possible to use for example their session ID.count
- Number of items to be recommended (N for the top-N recommendation).public RecommendItemsToItem setUserImpact(double userImpact)
userImpact
- If *targetUserId* parameter is present, the recommendations are biased towards the user given. Using *userImpact*, you may control this bias. For an extreme case of `userImpact=0.0`, the interactions made by the user are not taken into account at all (with the exception of history-based blacklisting), for `userImpact=1.0`, you'll get user-based recommendation. The default value is `0`.public RecommendItemsToItem setFilter(java.lang.String filter)
filter
- Boolean-returning [ReQL](https://docs.recombee.com/reql.html) expression which allows you to filter recommended items based on the values of their attributes.public RecommendItemsToItem setBooster(java.lang.String booster)
booster
- Number-returning [ReQL](https://docs.recombee.com/reql.html) expression which allows you to boost recommendation rate of some items based on the values of their attributes.public RecommendItemsToItem setCascadeCreate(boolean cascadeCreate)
cascadeCreate
- If item of given *itemId* or user of given *targetUserId* doesn't exist in the database, it creates the missing entity/entities and returns some (non-personalized) recommendations. This allows for example rotations in the following recommendations for the user of given *targetUserId*, as the user will be already known to the system.public RecommendItemsToItem setScenario(java.lang.String scenario)
scenario
- Scenario defines a particular application of recommendations. It can be for example "homepage", "cart" or "emailing". You can see each scenario in the UI separately, so you can check how well each application performs. The AI which optimizes models in order to get the best results may optimize different scenarios separately, or even use different models in each of the scenarios.public RecommendItemsToItem setReturnProperties(boolean returnProperties)
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 for easy displaying of the recommended items to the user.
Example response:
```
{
"recommId": "0c6189e7-dc1a-429a-b613-192696309361",
"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"
}
}
]
}
```public RecommendItemsToItem setIncludedProperties(java.lang.String[] includedProperties)
includedProperties
- Allows to specify, 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`:
```
{
"recommId": "6842c725-a79f-4537-a02c-f34d668a3f80",
"recomms":
[
{
"id": "tv-178",
"values": {
"description": "4K TV with 3D feature",
"price": 342
}
},
{
"id": "mixer-42",
"values": {
"description": "Stainless Steel Mixer",
"price": 39
}
}
]
}
```public RecommendItemsToItem setDiversity(double diversity)
diversity
- **Expert option** Real number from [0.0, 1.0] which determines how much mutually dissimilar should the recommended items be. The default value is 0.0, i.e., no diversification. Value 1.0 means maximal diversification.public RecommendItemsToItem setMinRelevance(java.lang.String minRelevance)
minRelevance
- **Expert option** If the *targetUserId* is provided: Specifies the threshold of how much relevant must the recommended items be to the user. Possible values one of: "low", "medium", "high". The default value is "low", meaning that the system attempts to recommend number of items equal to *count* at any cost. If there are not enough data (such as interactions or item properties), this may even lead to bestseller-based recommendations to be appended to reach the full *count*. This behavior may be suppressed by using "medium" or "high" values. In such case, the system only recommends items of at least the requested relevancy, and may return less than *count* items when there is not enough data to fulfill it.public RecommendItemsToItem setRotationRate(double rotationRate)
rotationRate
- **Expert option** If the *targetUserId* is provided: If your users browse the system in real-time, it may easily happen that you wish to offer them recommendations multiple times. Here comes the question: how much should the recommendations change? Should they remain the same, or should they rotate? Recombee API allows you to control this per-request in backward fashion. You may penalize an item for being recommended in the near past. For the specific user, `rotationRate=1` means maximal rotation, `rotationRate=0` means absolutely no rotation. You may also use, for example `rotationRate=0.2` for only slight rotation of recommended items.public RecommendItemsToItem setRotationTime(double rotationTime)
rotationTime
- **Expert option** If the *targetUserId* is provided: Taking *rotationRate* into account, specifies how long time it takes to an item to recover from the penalization. For example, `rotationTime=7200.0` means that items recommended less than 2 hours ago are penalized.public RecommendItemsToItem setExpertSettings(java.util.Map<java.lang.String,java.lang.Object> expertSettings)
expertSettings
- Dictionary of custom options.public java.lang.String getItemId()
public java.lang.String getTargetUserId()
public long getCount()
public double getUserImpact()
public java.lang.String getFilter()
public java.lang.String getBooster()
public boolean getCascadeCreate()
public java.lang.String getScenario()
public boolean getReturnProperties()
public java.lang.String[] getIncludedProperties()
public double getDiversity()
public java.lang.String getMinRelevance()
public double getRotationRate()
public double getRotationTime()
public java.util.Map<java.lang.String,java.lang.Object> getExpertSettings()
public HTTPMethod getHTTPMethod()
getHTTPMethod
in class Request
public java.lang.String getPath()
public java.util.Map<java.lang.String,java.lang.Object> getQueryParameters()
getQueryParameters
in class Request
public java.util.Map<java.lang.String,java.lang.Object> getBodyParameters()
getBodyParameters
in class Request