La suggestion par liste déroulante est une fonctionnalité fondamentale d'OpenSearch. Lorsqu'un utilisateur saisit une requête, le système propose des requêtes candidates pour améliorer l'efficacité de la saisie et aider les utilisateurs à trouver du contenu pertinent plus rapidement.
Présentation
La fonctionnalité de suggestion par liste déroulante extrait les requêtes à partir du contenu de vos documents. Elle peut générer des requêtes candidates selon diverses méthodes de correspondance pour le chinois, notamment la correspondance par préfixe, l'épellation complète en Pinyin, les initiales en Pinyin, un mélange de caractères chinois et de Pinyin, les préfixes après tokenisation et les homophones.
Par exemple, vous pouvez rechercher la requête long dress comme suit :
Préfixe chinois :
连, 连衣, …Préfixe Pinyin (orthographe complète) :
l, li, lian, lianyi, lianyiqun, …Préfixe Pinyin (initiales) :
l, ly, lyq, …Caractères chinois plus Pinyin :
连yi, 连衣qun, …Préfixes après tokenisation :
long style, long style dress, dress long, …Homophones chinois et caractères incorrects au son similaire :
连衣群, 联谊群, …
Vous pouvez également utiliser une intervention manuelle pour influencer les résultats de suggestion. Pour consulter les indicateurs de performance clés de vos suggestions par liste déroulante, consultez le Rapport sur les suggestions par liste déroulante.
Sources de données
Les suggestions par liste déroulante utilisent les données issues des documents de votre application et des requêtes des utilisateurs finaux. Vous pouvez appliquer des filtres aux documents comme aux requêtes.
Requêtes candidates issues des documents de l'application
Vous pouvez sélectionner jusqu'à trois champs d'une application comme source de données pour chaque modèle de suggestion par liste déroulante. Lors du traitement, le système sélectionne un échantillon de documents (jusqu'à un million) et traite les champs sélectionnés selon les règles spécifiées afin de générer des requêtes candidates. Le système conserve ensuite un sous-ensemble en tant que suggestions finales. Deux règles de génération sont prises en charge : Extract et Retain original value.
Extract : Cette méthode utilise un analyseur NLP propriétaire d'Alibaba, entraîné sur de vastes quantités de données en langage naturel. Il applique une tokenisation au contenu du champ, extrait les termes significatifs et les combine pour former des requêtes candidates. Cette approche garantit que les suggestions générées permettent de récupérer les documents correspondants.
Retain original value : Cette méthode utilise le contenu brut d'un champ comme requête candidate sans tokenisation. Si le contenu dépasse 30 caractères, il est tronqué aux 30 premiers caractères. Cette méthode convient aux champs ne nécessitant pas de tokenisation, tels que les noms de magasins, les noms d'utilisateurs ou les titres de chansons, ou lorsque vous fournissez vos propres requêtes candidates pré-générées. Nous recommandons d'utiliser des champs au contenu court et clair.
Lorsque vous utilisez la règle Extract, vous pouvez également spécifier un extraction model pour le modèle de suggestion par liste déroulante. Une fois qu'un modèle d'extraction est spécifié, le système utilise un grand modèle de langage pour effectuer un filtrage supplémentaire des requêtes candidates extraites, supprimant ainsi les candidats dénués de sens et améliorant la qualité des suggestions. L'extraction model est une configuration optionnelle qui prend effet uniquement lorsqu'un champ utilise la règle Extract. Après l'activation du modèle d'extraction, la facturation est basée sur le nombre de jetons effectivement consommés par le modèle. Pour plus d'informations sur la facturation, consultez la section Facturation.
Requêtes candidates issues des requêtes des utilisateurs finaux
Le système analyse l'historique de recherche des utilisateurs sur les N derniers jours (7 par défaut) et prend en compte des métriques telles que la fréquence de recherche, le nombre moyen de résultats, les poids historiques des termes et les taux de réussite récents des requêtes. Sur la base de cette analyse, il sélectionne des requêtes représentatives comme suggestions candidates.
Fonctionnalité de requête de recherche historique : La fonctionnalité de suggestion par liste déroulante prend également en charge l'option de requête de recherche historique, qui priorise les suggestions en fonction des requêtes passées de l'utilisateur actuel (nécessite les paramètres raw_query et user_id dans les requêtes). La fonctionnalité de requête de recherche historique est une extension qui entraîne des frais de formation basés sur les heures de calcul consommées par chaque tâche de formation. La fonctionnalité de requête de recherche historique est en cours de suppression. L'option n'est plus affichée lors de la création d'un modèle de suggestion par liste déroulante. La description suivante s'applique uniquement aux modèles existants pour lesquels cette fonctionnalité est activée.
Pour désactiver la source de données des requêtes des utilisateurs finaux, vous pouvez définir une condition de filtre qui ne sera jamais satisfaite, telle que biz_type=not_exist.
Après avoir activé la fonctionnalité de requête de recherche historique, vous devez inclure le paramètre user_id dans vos requêtes de suggestion par liste déroulante afin de fournir des résultats personnalisés.
Les requêtes de recherche historiques sont propres à chaque utilisateur. Le système utilise le paramètre user_id pour distinguer les utilisateurs. Par exemple, si l'utilisateur A a récemment recherché dishwasher, il pourrait voir à nouveau dishwasher comme suggestion. En revanche, l'utilisateur B, qui n'a jamais effectué cette recherche, ne verra pas ce terme dans ses suggestions.
Intervention manuelle
Vous pouvez influencer manuellement les suggestions par liste déroulante de plusieurs façons :
Gérez les résultats des requêtes candidates à l'aide d'une liste de blocage et d'une liste d'autorisation.
Définissez une condition de filtre sur les documents source de l'application. Lorsque vous appliquez un filtre, le système utilise uniquement les documents répondant à la condition pour générer des suggestions candidates.
Paramètre | Description |
Condition de filtre | Spécifiez une condition de filtre basée sur les champs du schéma de votre application OpenSearch. Le filtre s'applique à tous les documents de l'application. Remarque :
Exemple : Si vous définissez la condition de filtre sur |
Sur la page Create Drop-down Suggestion Model de la console, vous pouvez configurer les paramètres suivants :
Target Application : Sélectionnez l'application contenant les données source pour les suggestions candidates.
Model Name : Saisissez un nom de 1 à 30 caractères. Il doit commencer par une lettre et peut contenir des lettres majuscules, des lettres minuscules, des chiffres et des traits de soulignement (_). Le nom doit être unique parmi tous vos modèles.
Training Fields : Sélectionnez les champs source de l'application cible et spécifiez une méthode de traitement pour chaque champ : Extract ou Retain original value.
Extraction Model : Il s'agit d'une configuration optionnelle. Le modèle d'extraction actuellement disponible est deepseek-v4-flash. Après avoir sélectionné un modèle d'extraction, le système utilise un grand modèle de langage pour filtrer les requêtes candidates extraites et supprimer les candidats dénués de sens. Cette configuration prend effet uniquement lorsqu'un champ utilise la règle Extract. Après l'activation du modèle d'extraction, la facturation est basée sur le nombre de jetons effectivement consommés par le modèle.
Doc Filter Condition et Query Filter Condition : Il s'agit des conditions de filtre qui s'appliquent respectivement à la source de données des documents de l'application et à la source de données des requêtes des utilisateurs finaux (par exemple,
status=1oubiz_type=phone). Pour les règles de syntaxe, consultez la description de la condition de filtre ci-dessus.
Contrôle des résultats de suggestion
Blocklist : La liste de blocage prend en charge la correspondance par contenu. Toute requête contenant un mot-clé figurant dans la liste de blocage est exclue des résultats de suggestion par liste déroulante. Si vous constatez des suggestions indésirables, ajoutez les mots-clés pertinents à la liste de blocage pour les bloquer.
Allowlist : Si une requête figurant dans la liste d'autorisation répond aux critères de recommandation, elle est priorisée dans les résultats de suggestion par liste déroulante. Si des requêtes de haute qualité n'apparaissent pas ou sont classées trop bas, ajoutez-les à la liste d'autorisation pour augmenter leur visibilité. Pour plus de détails sur la configuration des listes de blocage et d'autorisation, cliquez ici.
Les applications Standard ne prennent pas en charge la suggestion par liste déroulante. Cette fonctionnalité est disponible uniquement pour les applications Advanced.
Vous pouvez créer un maximum de 10 modèles de suggestion par liste déroulante par application.
Les noms de modèles doivent être uniques au sein de votre compte. Cela inclut les modèles de suggestion par liste déroulante, de popularité, de prédiction de catégorie, de recherche principale et d'indice.
Seuls les champs indexés de type TEXT, SHORT_TEXT, LITERAL ou INT peuvent être utilisés comme sources de données pour les suggestions par liste déroulante.
Vous pouvez sélectionner un maximum de trois champs de formation pour un seul modèle.
Lors de la modification du schéma d'une application, vous ne pouvez pas modifier les champs utilisés par un modèle de suggestion par liste déroulante.
Pour former un modèle de suggestion par liste déroulante, la table de l'application (y compris les données
raw_queryet les données stockées) doit contenir plus de 1 000 entrées. Sinon, la formation du modèle peut échouer en raison d'un volume de données insuffisant.La suppression d'une application entraîne également la suppression des modèles de suggestion par liste déroulante associés.
Pour une recherche par suggestion par liste déroulante, le paramètre
queryprend en charge une longueur maximale de 30 octets en encodage UTF-8 (soit jusqu'à 10 caractères chinois). Si la limite est dépassée, le système signale une erreur et ne renvoie aucun résultat.Dans une recherche par suggestion par liste déroulante, le paramètre hit doit être un entier compris entre 1 et 30 inclus. Si vous fournissez une valeur en dehors de cette plage (comme 0, -1 ou 31), le système utilise une valeur par défaut de 30 et renvoie un message d'erreur.
Une liste de blocage peut contenir un maximum de 500 mots-clés.
Une liste d'autorisation peut contenir un maximum de 500 requêtes.
En cas de conflit entre la liste de blocage et la liste d'autorisation, la liste de blocage est prioritaire.
Les modifications apportées aux listes de blocage et d'autorisation prennent effet en temps réel.
Après la création d'un modèle de suggestion par liste déroulante, la formation quotidienne planifiée est activée par défaut. Les données de suggestion sont mises à jour périodiquement à chaque cycle de formation.
La durée de formation d'un modèle de suggestion par liste déroulante dépend du volume de données et de la charge du système. Si la formation prend plus de 30 minutes, veuillez nous contacter.
La fonctionnalité de correspondance des homophones chinois est activée par défaut. Vous pouvez la désactiver en ajoutant le paramètre
re_search="disable"à votre requête.La fonctionnalité de base de suggestion par liste déroulante est actuellement gratuite. Les ressources de calcul et de stockage sont allouées par le système. Chaque modèle reçoit environ 100 QPS de ressources de calcul et un stockage pour environ 2 millions de requêtes candidates.
Nous recommandons de définir le paramètre
raw_querydans les requêtes de recherche pour aider le système à identifier la requête originale saisie par l'utilisateur. Pour plus d'informations, consultez la section Traitement des recherches.Si vous activez la fonctionnalité historical search query, vous êtes facturé pour chaque tâche de formation en fonction des heures de calcul consommées. Pour plus d'informations, consultez la section Facturation (cette fonctionnalité est en cours de suppression et n'est plus affichée lors de la création d'un modèle).
Après avoir configuré un extraction model, la facturation est basée sur le nombre de jetons effectivement consommés par le modèle. Pour plus d'informations, consultez la section Facturation.
Pour plus d'informations sur les paramètres raw_query, user_id et from_request_id, cliquez ici.
Pour activer par défaut la fonctionnalité high-frequency search query, les requêtes de recherche doivent soit inclure le paramètre raw_query, soit contenir l'index par défaut dans la clause de requête.
raw_query indépendant : Le paramètre
raw_queryrequis pour la formation de la promotion doit être une requête unique qui renvoie des résultats.Les données de formation du modèle de suggestion sont mises à jour quotidiennement (J+1). Les données téléchargées un jour donné deviennent effectives après la fin de la formation du jour suivant.
Dépannage des échecs de formation des modèles
Si la formation de votre modèle de suggestion par liste déroulante échoue, suivez ces étapes pour résoudre le problème :
Vérifiez le rapport d'anomalie : Sur la page des détails du modèle, dans la zone Basic Information, vérifiez le statut Latest Version Status. Si le statut est Training Failed ou Abnormal Data, la zone affiche une infobulle Anomaly Report. Survolez-la pour afficher les Exception Details et la Solution, et utilisez ces informations pour identifier la cause de l'échec de la formation.
Vérifiez le niveau d'exhaustivité et les conditions de mise à niveau : Dans la zone Data Verification de la page des détails du modèle, vérifiez le Completeness Level et les Upgrade Conditions correspondantes. Ajustez vos données en fonction des conditions de mise à niveau pour améliorer le niveau d'exhaustivité, puis relancez la formation du modèle.
Logique des données J-1 : La formation du modèle utilise les données statistiques de la veille (J-1). Lorsqu'un modèle nouvellement créé exécute sa première tâche de formation, le système peut signaler une erreur « Training field does not exist » car aucune donnée de la veille n'est encore disponible. Attendez le lendemain, une fois les données prêtes, puis relancez la formation du modèle.
-
Exigences de volume de données (conditions L1) : La formation du modèle nécessite les seuils minimaux de données suivants :
Le volume total de données (le total combiné des données
raw_queryet des données des documents de l'application) doit être d'au moins 1 000.Le nombre de valeurs
raw_queryuniques doit dépasser 100.
Vérification du format de la condition de filtre : Un format incorrect de la condition de filtre est une cause fréquente d'échec de la formation. Les noms de champs doivent correspondre aux champs définis dans le schéma de l'application pour lesquels des index ont été créés. Les opérateurs pris en charge sont <, >, <=, >=, = et !=. Plusieurs conditions ont une relation AND et doivent être séparées par des virgules (,). Pour la syntaxe complète des conditions de filtre, consultez la section Intervention manuelle ci-dessus.
Bonnes pratiques
Pour améliorer l'efficacité des suggestions par liste déroulante (par exemple, pour augmenter les recherches guidées par suggestion et les taux de clics), associez les requêtes de suggestion aux requêtes de recherche. Pour obtenir des instructions, consultez la section « Associer une requête de suggestion par liste déroulante à une requête de recherche » à la fin de cette rubrique.
Choisissez des champs au contenu concis et pertinent par rapport au sujet principal du document.
Utilisez les règles Extract et Retain original value de manière appropriée en fonction de vos besoins.
Dans la réponse,
suggestionscontient les résultats de recherche, tandis queerrorsindique si une erreur s'est produite. Un champerrorsnon vide ne signifie pas nécessairement que le champsuggestionsest vide. Par conséquent, lors de l'analyse de la réponse, vérifiez sisuggestionsest vide pour déterminer s'il faut afficher les données.
Procédure
1. Dans la console, accédez à Search Algorithm Center > Search Guidance > Drop-down Suggestions, puis cliquez sur Create.
2. Saisissez un Model Name, sélectionnez les Training Fields et une méthode d'extraction, choisissez un Extraction Model (facultatif), entrez les Filter Conditions (facultatif), puis cliquez sur Submit.
3. Sur la page de liste des suggestions par liste déroulante, localisez le modèle et cliquez sur Train pour lancer la formation.
4. La formation prend généralement entre 20 et 30 minutes.
5. Une fois le modèle formé, vous pouvez tester les suggestions. Voici un exemple utilisant la méthode Retain original value :
Retain original value :
Cliquez sur le bouton Effect Preview dans le coin supérieur droit de la page des détails du modèle. Dans la zone de recherche contextuelle, saisissez une requête (par exemple, la lettre E). Les suggestions correspondantes apparaissent ci-dessous (telles que « Eifini » et « ELF SACK »). À droite, vous pouvez définir les paramètres user id et display count.
6. Pour interroger les requêtes candidates en ligne, consultez la démonstration ci-dessous. Pour des informations détaillées sur l'API, consultez le Guide de développement des suggestions par liste déroulante.
Référence de la page des suggestions par liste déroulante
Page de liste des suggestions par liste déroulante
Dans la console OpenSearch, accédez à Search Algorithm Center > Search Guidance > Drop-down Suggestions pour accéder à la page de liste.
La page de liste affiche les informations de chaque modèle de suggestion par liste déroulante, y compris le Model Name, le Creation Time, le Model Status, le Last Training Start Time et le Latest Version Status (qui peut être Pending Training, Scheduling, Training, Trained and Passed, Training Failed ou Abnormal Data). La colonne Actions vous permet de consulter les détails, de lancer une formation ou d'effectuer d'autres opérations sur le modèle.
Page des détails du modèle de suggestion par liste déroulante
Le haut de la page des détails du modèle affiche la zone Basic Information, indiquant l'heure de création, le statut du modèle et le statut de la dernière version. Le coin supérieur droit comporte un bouton Effect Preview. La page comprend trois onglets : Drop-down Suggestion, Top Search & Hint et Blocklist/Allowlist.
La zone Basic Information affiche l'heure de création du modèle, le statut du modèle, l'heure de début de la dernière formation et le statut de la dernière version. Si le statut est Training Failed ou Abnormal Data, une infobulle Anomaly Report est affichée dans cette zone.
La section Configuration Information affiche les champs de formation configurés et leurs méthodes de traitement, le modèle d'extraction, la Doc filter condition, la Query filter condition, la liste de blocage/liste d'autorisation et les tâches planifiées. Cliquez sur le bouton Configure dans le coin supérieur droit pour modifier ces paramètres.
La section Data Verification affiche l'exhaustivité des données et le niveau d'exhaustivité pour la formation du modèle.
La section Training History affiche l'historique des formations du modèle.
Données des métriques principales
Vous pouvez sélectionner différentes plages de temps pour afficher les métriques principales du modèle de suggestion par liste déroulante, présentées sous forme de tableau et de graphique linéaire.
Remarque : Pour les définitions des métriques spécifiques, consultez le Rapport sur les suggestions par liste déroulante.
Démonstration du SDK
API :
GET v3/openapi/suggestions/{suggestion_name}/actions/search?hit=10&query={your_query}&re_search=homonym&user_id=xxx
Java SDK Dépendance Maven :
<dependency>
<groupId>com.aliyun.opensearch</groupId>
<artifactId>aliyun-sdk-opensearch</artifactId>
<version>4.0.0</version>
</dependency>
Lien connexe : Notes de version
Exemple de code :
package com.example.opensearch;
import com.aliyun.opensearch.OpenSearchClient;
import com.aliyun.opensearch.SuggestionClient;
import com.aliyun.opensearch.sdk.generated.OpenSearch;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchClientException;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.nio.charset.Charset;
public class SuggestDemo {
static private final String accesskey = "YOUR_ACCESSKEY_ID";
static private final String secret = "YOUR_ACCESSKEY_SECRET";
static private final String host = "THE_ENDPOINT_OF_THE_REGION_WHERE_YOUR_APP_IS_LOCATED";
OpenSearch openSearch;
OpenSearchClient openSearchClient;
static private final byte hits = 8; // The maximum number of suggestions to return.
static private final String suggestionName = "YOUR_SUGGESTION_MODEL_NAME"; // The name of your drop-down suggestion model.
@Before
public void setUp() {
// Initialize the OpenSearch object.
openSearch = new OpenSearch(accesskey, secret, host);
openSearchClient = new OpenSearchClient(openSearch);
}
@Test
public void TestEnv() {
// View the file and default encoding formats.
System.out.println(String.format("file.encoding: %s", System.getProperty("file.encoding")));
System.out.println(String.format("defaultCharset: %s", Charset.defaultCharset().name()));
// Create a SuggestionClient object.
SuggestionClient suggestionClient = new SuggestionClient("YOUR_APP_NAME", suggestionName, openSearchClient);
String query = "YOUR_SEARCH_QUERY";
try {
SuggestParams suggestParams = new SuggestParams();
suggestParams.setQuery(query); // Set the query.
suggestParams.setHits(10); // Set the maximum number of suggestions to return.
suggestParams.setUserId("12345678"); // Set the user ID.
// The Chinese homophone matching feature is enabled by default. You can adjust this by using the re_search parameter.
// To disable this feature, use ReSearch.findByValue(1). It is enabled by default (equivalent to ReSearch.findByValue(0) or omitting the parameter).
suggestParams.setReSearch(ReSearch.findByValue(1));
SearchResult result = suggestionClient.execute(suggestParams);
System.out.println(result); // Print the results.
} catch (OpenSearchException e) {
e.printStackTrace();
} catch (OpenSearchClientException e) {
e.printStackTrace();
}
}
@After
public void clean() {
openSearch.clear();
}
}
Pour plus de détails sur le SDK Java des suggestions par liste déroulante, consultez la démonstration des suggestions par liste déroulante.
Exemple de réponse :
{
"request_id": "159851481919726888064081",
"searchtime": 0.006246,
"suggestions": [
{
"suggestion": "trendy skirts"
},
{
"suggestion": "dresses for petite women"
},
{
"suggestion": "polka dot dresses"
},
{
"suggestion": "youthful skirts"
},
{
"suggestion": "polka dot skirt"
},
{
"suggestion": "skirts for petite women"
},
{
"suggestion": "polka dot skirts for petite women"
}
]
}
Remarque : L'identifiant request_id renvoyé dans la réponse peut être utilisé pour associer la suggestion à une requête de recherche ultérieure.
Association des requêtes de suggestion et de recherche
L'association des requêtes de suggestion aux requêtes de recherche présente les avantages suivants :
Elle vous permet de collecter des métriques pour mesurer l'impact des suggestions par liste déroulante sur les performances de recherche. Ces métriques incluent les PV de recherche guidés par suggestion, les taux de clics et les taux de résultats nuls/faibles. Pour plus de détails, consultez le Rapport sur les suggestions par liste déroulante.
-
Les données de requête associées fournissent des informations, telles que les données de clic sur les suggestions, qui peuvent être utilisées pour optimiser le modèle de classement des suggestions et améliorer l'efficacité des recherches guidées par suggestion.
Méthode d'association :
Si un utilisateur lance une recherche en sélectionnant une suggestion par liste déroulante, incluez le paramètre
from_request_id={from_request_id}dans la requête de recherche. Le paramètrefrom_request_idindique la source de la recherche. Si la requête actuelle provient d'une liste de recommandations, telle qu'une suggestion par liste déroulante, un modèle de recherche principale ou un modèle d'indice, vous pouvez attribuer l'identifiantrequest_idde cette requête de recommandation à ce paramètre. En associant ces événements, vous pouvez calculer les métriques clés des fonctionnalités en amont, mesurer leur efficacité et collecter des données pour l'optimisation. Ce paramètre est également décrit dans la documentation sur le traitement des recherches.
Exemple :
Supposons qu'un appel API de suggestion par liste déroulante renvoie un identifiant request_id de 159851481919726888064081. Vous pouvez l'associer à une requête de recherche comme indiqué ci-dessous :
SearchParams searchParams = new SearchParams(config);
searchParams.setQuery("title:'skirts for petite women'"); // Query guided by a drop-down suggestion.
// Add the from_request_id parameter.
Map<String, String> customParam =new HashMap<>();
customParam.put("from_request_id","159851481919726888064081");
searchParams.setCustomParam(customParam);
// Execute the query and return a SearchResult object.
SearchResult execute = searcherClient.execute(searchParams);
// Return the query data as a string.
String result = execute.getResult();
System.out.println(result);