search
If there isn’t enough data for Frequently Bought Together, it’s better to show a different type of
recommendation, for example, related products.
Examples
public class Product
{
public string ObjectID { get; set; }
public string Name { get; set; }
public string Category { get; set; }
public float Price { get; set; }
}
public class RecommendedProduct : Product, Algolia.Search.Models.Recommend.IRecommendHit
{
public float Score { get; set; }
}
var requests = new List<Algolia.Search.Models.Recommend.BoughtTogetherRequest> {
new Algolia.Search.Models.Recommend.BoughtTogetherRequest {
IndexName = "INDEX_NAME",
ObjectID = "your_object_id",
}
}
var recommendations =
recommendClient.GetFrequentlyBoughtTogether<RecommendedProduct>(requests);
// Asynchronous
var recommendations =
await recommendClient.GetFrequentlyBoughtTogetherAsync<RecommendedProduct>(requests);
options := recommend.NewBoughtTogetherOptions("IndexName", "B018APC4LE", 0, nil, nil)
res, err = recommendClient.GetFrequentlyBoughtTogether([]recommend.FrequentlyBoughtTogetherOptions{options})
class Product implements RecommendHit {
String objectID;
String name;
Float score;
@Nonnull
@Override
public Float getScore() { return score;}
public void setScore(Float score) { this.score = score;}
public String getObjectID() { return objectID; }
public void setObjectID(String objectID) { this.objectID = objectID; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
FrequentlyBoughtTogetherQuery query = new FrequentlyBoughtTogetherQuery("yourIndexName", "yourObjectID");
// Synchronous
List<RecommendationsResult<Product>> recommendations = recommendClient.getFrequentlyBoughtTogether(Arrays.asList(query), Product.class);
// Asynchronous
CompletableFuture<List<RecommendationsResult<Product>>> recommendations = recommendClient.getFrequentlyBoughtTogetherAsync(Arrays.asList(query), Product.class);
recommendClient
.getFrequentlyBoughtTogether([
{
indexName: "INDEX_NAME",
objectID: "your_object_id",
},
])
.then(({ results }) => {
console.log(results);
})
.catch((err) => {
console.log(err);
});
val request = FrequentlyBoughtTogetherQuery(
indexName = IndexName("yourIndexName"),
objectID = ObjectID("yourObjectID"),
)
recommendClient.getFrequentlyBoughtTogether(requests = listOf(request))
$recommendations = $recommend_client->getFrequentlyBoughtTogether([
[
'indexName' => 'INDEX_NAME',
'objectID' => 'your_object_id',
],
]);
recommendations = recommend_client.get_frequently_bought_together(
[
{
"indexName": "INDEX_NAME",
"objectID": "your_object_id",
},
]
)
recommendations = recommend_client.get_frequently_bought_together(
[
{
indexName: "INDEX_NAME",
objectID: "your_object_id"
}
]
)
recommendClient.execute {
val query = FrequentlyBoughtTogetherQuery(
indexName = "yourIndexName",
objectID = "yourObjectID"
)
get frequentlyBoughtTogether List(query)
}
let options = RecommendationsOptions(indexName: "IndexName", objectID: "B018APC4LE")
recommendClient.getFrequentlyBoughtTogether(options: [options]) { result in
if case .success(let response) = result {
print("Response: \(response)")
}
}
Parameters
object[]
required
Show child attributes
Show child attributes
string
required
The name of the target index.
string
required
The object ID of the item for which to get recommendations.
number
required
Threshold for the recommendations confidence score (between 0 and 100).
Only recommendations with a greater score are returned.
integer
The maximum number of recommendations to retrieve.
Depending on the available recommendations and the other request parameters,
the actual number of hits might be lower.
If
maxRecommendations isn’t provided or set to 0,
all matching recommendations are returned,
and no fallback request is performed.object
List of search parameters,
except:
page, hitsPerPage, offset, and length.Response
object[]
List of results in the order they were submitted, one per query.Example:
JSON
{
"results": [
{
"hits": [
{
// ...,
"_score": 32.72
}
]
}
]
}
Show child attributes
Show child attributes
number
The confidence score of the recommended item, the closer it is to 100, the more relevant it is.
Response as JSON
This section shows the JSON response returned by the API. Each API client wraps this response in language-specific objects, so the structure may vary. To view the response, use thegetLogs method.
Don’t rely on the order of properties—JSON objects don’t preserve key order.
JSON
{
"results": [
{
"hits": [
{
"_highlightResult": {
"category": {
"matchLevel": "none",
"matchedWords": [],
"value": "Men - T-Shirts"
},
"image_link": {
"matchLevel": "none",
"matchedWords": [],
"value": "https://example.org/image/D05927-8161-111-F01.jpg"
},
"name": {
"matchLevel": "none",
"matchedWords": [],
"value": "Jirgi Half-Zip T-Shirt"
}
},
"_score": 32.72,
"category": "Men - T-Shirts",
"image_link": "https://example.org/image/D05927-8161-111-F01.jpg",
"name": "Jirgi Half-Zip T-Shirt",
"objectID": "D05927-8161-111",
"position": 105,
"url": "men/t-shirts/d05927-8161-111"
}
],
"processingTimeMS": 1
}
]
}