Requêter les API Pertinence.
L'API Search permet de rechercher les résultats pertinents dans votre index.
Base URL + Endpoint :
Variables POST à envoyer dans le corps du message HTTP :
login : votre identifiant communiqué par l'équipe PertinenceL'API Compatibility permet d'évaluer le score de compatibilité entre des critères et des documents (résultats).
Base URL + Endpoint :
Variables POST à envoyer dans le corps du message HTTP :
login : votre identifiant communiqué par l'équipe PertinenceL'API peut retourner les codes HTTP suivants :
200 : succès de la requête. Réponse JSON envoyéeSi la requête est correcte, l'API retourne un JSON. Exemple :
{
"execution_time": "53 ms",
"total_results": {
"operator": "greater_than_or_equal",
"value": 10000
},
"provided_results": {
"from": 0,
"size": 20
},
"results": [
{
"matching": {
"matched_criteria": [2, 5, 6, 9],
"matched_fields": ["price", "name", "region", "date"],
"unmatched_criteria": [4, 10],
"unmatched_fields": ["rating", "color"],
"scoring_percentage": 87
},
"fields": {
"id": 125,
"region": "France",
"color": "red",
"price": 25000
}
}, {
"matching": {
"matched_criteria": [2, 10],
"matched_fields": ["price", "color"],
"unmatched_criteria": [4, 5, 6, 9],
"unmatched_fields": ["rating", "name", "region", "date"],
"scoring_percentage": 61
},
"fields": {
"id": 95,
"region": "France",
"color": "blue",
"price": 21500
}
},
...
]
}
Propriété | Type | Commentaire |
---|---|---|
execution_time | string | Temps (en ms) mis par le moteur pour trouver les résultats pertinents |
total_results | object | Nombre total de résultats disponibles pour la query exécutée |
total_results.operator | string | Le moteur limite le nombre de résultats disponibles à 10000 au maximum. Lorsqu'il y a plus de 10000 résultats disponibles alors operator vaut greater_than_or_equal et value vaut 10000. Sinon, operator vaut equal et value vaut le nombre total de résultats disponibles |
total_results.value | integer | |
provided_results | object | Pagination des résultats |
provided_results.from | integer | Offset du premier résultat du tableau results |
provided_results.size | integer | Nombre de résultats du tableau results |
results | array | Liste des résultats |
results[n].matching | object | Objet qui détaille le matching entre le résultat et la query |
results[n].matching.matched_criteria | array | Liste d'index des critères (du tableau criteria de la query) qui ont matché avec le résultat. |
results[n].matching.matched_fields | array | Liste des noms de champs (du tableau criteria de la query) qui ont matché avec le résultat. |
results[n].matching.unmatched_criteria | array | Liste d'index des critères (du tableau criteria de la query) qui n'ont pas matché avec le résultat. |
results[n].matching.unmatched_fields | array | Liste des noms de champs (du tableau criteria de la query) qui n'ont pas matché avec le résultat. |
results[n].matching.scoring_percentage | integer | Score en pourcentage (%) entre les critères de la query et le résultat trouvé. Ce score est calculé par un algorithme propre au moteur Pertinence. Il dépend notamment de la pondération du critère et de sa priorité |
fields | object | Liste des Champs / Valeurs (du document matché) demandées en retour de l'API dans la query via la propriété return.fields |
Exemples de requêtes vers l'API Search qui se basent sur l'index de la démo en ligne pour l'immobilier
curl -XPOST 'https://pertinence.io/api/v1/search/' -d 'login=pertinence&key=ymqs8ngTkAK5H5vNMWR9bqwcENeevaFexEcR4WbN95tbKsTddjhW6LPhSE8Yx4Ed&query={"return":{"fields":["id","title_formatted","price"],"from":0,"size":20,"sort":[{"field":"updated_date","order":"desc"}]},"criteria":[{"field":"region_name","priority_weight":"necessary","priority_order":"default","clause":[{"operator":"match","expression":"Occitanie"}]},{"field":"price","priority_weight":"mandatory","priority_order":1,"clause":[{"operator":"greater_than_or_equal","expression":1000000}]}]}'
✎ Éditer ou exécuter cette requête en ligne : https://reqbin.com/c-h6q33csk
<?php
//Url of the API
$url = "https://pertinence.io/api/v1/search/";
//Variables in the body of the post request
$login = "pertinence";
$key = "ymqs8ngTkAK5H5vNMWR9bqwcENeevaFexEcR4WbN95tbKsTddjhW6LPhSE8Yx4Ed";
$query = '{"return":{"fields":["id","title_formatted","price"],"from":0,"size":20,"sort":[{"field":"updated_date","order":"desc"}]},"criteria":[{"field":"region_name","priority_weight":"necessary","priority_order":"default","clause":[{"operator":"match","expression":"Occitanie"}]},{"field":"price","priority_weight":"mandatory","priority_order":1,"clause":[{"operator":"greater_than_or_equal","expression":1000000}]}]}';
$postdata = http_build_query(
array(
'login' => $login,
'key' => $key,
'query' => $query
)
);
//Request options
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
)
);
//Make request
$context = stream_context_create($opts);
$result = file_get_contents($url, false, $context);
//Response
echo $result;
?>
✎ Éditer ou exécuter cette requête en ligne : http://tpcg.io/eSWXKAe3
Vous souhaitez implémenter du Matching ou du Scoring sur votre site ou votre application ? Nous sommes à votre écoute pour vous accompagner.
Réponse rapide !