?> buildAutoComplete - WeAreCAS
searchAnalytics

buildAutoComplete

Description

L'action `buildAutoComplete` du CAS Action Set `searchAnalytics` est un outil puissant pour améliorer l'expérience utilisateur dans les applications de recherche. Son rôle est de construire un index spécialisé, optimisé pour les requêtes d'auto-complétion (ou saisie semi-automatique). Concrètement, à partir d'une table contenant une liste de termes (souvent générée au préalable par l'action `buildTermIndex`), elle crée une nouvelle table structurée pour répondre très rapidement aux suggestions de recherche. Par exemple, lorsqu'un utilisateur tape 'pro', le système peut instantanément suggérer 'produit', 'processus', 'projet'. Cette action est fondamentale pour créer des barres de recherche réactives et intelligentes dans les applications web ou les interfaces SAS Viya.

searchAnalytics.buildAutoComplete result=results status=rc / casOut={caslib="string", compress=TRUE | FALSE, indexVars={"variable-name-1" <, "variable-name-2", ...>}, label="string", lifetime=64-bit-integer, maxMemSize=64-bit-integer, memoryFormat="DVR" | "INHERIT" | "STANDARD", name="table-name", promote=TRUE | FALSE, replace=TRUE | FALSE, replication=integer, tableRedistUpPolicy="DEFER" | "NOREDIST" | "REBALANCE", threadBlockSize=64-bit-integer, timeStamp="string", where={"string-1" <, "string-2", ...>}}, index={caslib="string", computedOnDemand=TRUE | FALSE, computedVars={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, computedVarsProgram="string", dataSourceOptions={key-1=any-list-or-data-type-1 <, key-2=any-list-or-data-type-2, ...>}, groupBy={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, groupByMode="NOSORT" | "REDISTRIBUTE", importOptions={fileType="ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DELIMITED" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SOUND" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters}, name="table-name", orderBy={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, singlePass=TRUE | FALSE, vars={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, where="where-expression", whereTable={casLib="string", dataSourceOptions={adls_noreq-parameters | bigquery-parameters | cas_noreq-parameters | clouddex-parameters | db2-parameters | dnfs-parameters | esp-parameters | fedsvr-parameters | gcs_noreq-parameters | greenplum-parameters | hadoop-parameters | hana-parameters | hdfs-parameters | impala-parameters | informix-parameters | jdbc-parameters | mongodb-parameters | mysql-parameters | netezza-parameters | odbc-parameters | oracle-parameters | path-parameters | postgres-parameters | redshift-parameters | s3-parameters | sapiq-parameters | sforce-parameters | singlestore_standard-parameters | snowflake-parameters | spark-parameters | spde-parameters | sqlserver-parameters | ss_noreq-parameters | teradata-parameters | vertica-parameters | yellowbrick-parameters}, importOptions={fileType="ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DELIMITED" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SOUND" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters}, name="table-name", vars={{format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer}, {...}}, where="where-expression"}};
Paramètres
ParamètreDescription
indexSpécifie la table d'index de termes d'entrée. Cette table, généralement le résultat de `buildTermIndex` ou `tpParse`, contient les mots ou phrases à partir desquels l'index d'auto-complétion sera construit. C'est un paramètre obligatoire.
casOutSpécifie la table de sortie qui contiendra l'index d'auto-complétion. Cette table est optimisée pour être utilisée par l'action `searchAutoComplete`. C'est un paramètre obligatoire.
index.whereSous-paramètre de `index`. Permet de spécifier une clause WHERE pour filtrer les lignes de la table d'entrée. Très utile pour ne construire l'index qu'à partir d'un sous-ensemble de termes pertinents (par exemple, ceux avec une fréquence élevée).
index.groupBySous-paramètre de `index`. Permet de spécifier une ou plusieurs variables de regroupement. L'action créera des index d'auto-complétion distincts pour chaque combinaison unique des valeurs de ces variables. Idéal pour des suggestions contextuelles (par ex., par catégorie de produit).
casOut.replaceSous-paramètre de `casOut`. Si défini sur `True`, la table de sortie sera écrasée si elle existe déjà. Par défaut, l'action échoue si la table de sortie existe.
Préparation des Données
Création d'un index de termes de démonstration

Pour utiliser `buildAutoComplete`, nous avons besoin d'une table d'index de termes en entrée. Le code ci-dessous crée une table `casuser.my_term_index` qui simule une liste de termes extraits de documents, avec leur fréquence (`_N_`) et une catégorie (`Category`). Cette table servira de source pour construire notre index d'auto-complétion.

data casuser.my_term_index; 
 length _Term_ $ 50 Category $ 20; 
 infile datalines dsd; 
 input _Term_ $ _N_ Category $; 
 datalines; 
 sas viya, 15, Logiciel 
 sas 9, 8, Logiciel 
 programmation sas, 12, Compétence 
 science des données, 25, Compétence 
 apprentissage automatique, 18, Compétence 
 intelligence artificielle, 22, Compétence 
 procédure stockée, 4, Technique 
 processus métier, 9, Métier 
 projet analytique, 11, Métier 
 ; 
 run;

Exemples

Cet exemple de base montre comment utiliser l'action `buildAutoComplete` avec les paramètres minimaux. Nous prenons la table `my_term_index` en entrée et créons une nouvelle table `my_autocomplete_index` dans CASUSER.

Code SAS® / CAS
Copié !
1PROC CAS;
2 searchAnalytics.buildAutoComplete /
3 index={name='my_term_index'}
4 casOut={name='my_autocomplete_index', caslib='casuser'};
5RUN;
6QUIT;
Résultat :
L'action ne retourne pas de résultat visible dans le log SAS, mais elle crée une nouvelle table CAS nommée `my_autocomplete_index` dans la caslib `CASUSER`. Cette table est maintenant prête à être utilisée par l'action `searchAutoComplete` pour fournir des suggestions de recherche.

Ce scénario montre comment écraser une table d'auto-complétion existante en utilisant l'option `replace=True`. De plus, nous utilisons le paramètre `where` sur la table d'entrée pour n'inclure que les termes ayant une fréquence (`_N_`) supérieure à 10, optimisant ainsi la pertinence des suggestions.

Code SAS® / CAS
Copié !
1PROC CAS;
2 searchAnalytics.buildAutoComplete /
3 index={name='my_term_index', where='_N_ > 10'}
4 casOut={name='my_autocomplete_index', caslib='casuser', replace=True, label='Index pour termes fréquents'};
5RUN;
6QUIT;
Résultat :
La table `my_autocomplete_index` est écrasée si elle existait. Le nouvel index ne contiendra que les termes dont la fréquence est supérieure à 10 (par exemple, 'sas viya', 'programmation sas', 'science des données', etc.). La table portera également le libellé 'Index pour termes fréquents', visible dans l'explorateur de données SAS.

Cet exemple expert démontre la puissance du paramètre `groupBy`. Nous allons construire des index d'auto-complétion distincts pour chaque valeur de la colonne `Category`. Cela permet de créer des suggestions de recherche contextuelles, spécifiques à une catégorie de produits ou de documents.

Code SAS® / CAS
Copié !
1PROC CAS;
2 searchAnalytics.buildAutoComplete /
3 index={name='my_term_index', groupBy={'Category'}}
4 casOut={name='my_autocomplete_by_cat', caslib='casuser', replace=True};
5RUN;
6QUIT;
Résultat :
La table de sortie `my_autocomplete_by_cat` contiendra non seulement l'index d'auto-complétion, mais aussi la colonne `Category`. Cela signifie que l'index est segmenté. Lors de l'utilisation avec `searchAutoComplete`, on pourra filtrer les suggestions pour une catégorie spécifique (par exemple, ne suggérer que des termes de la catégorie 'Compétence'), offrant une expérience de recherche beaucoup plus ciblée.

FAQ

Quelle est la fonction principale de l'action `buildAutoComplete` ?
Quels sont les paramètres obligatoires pour cette action ?
À quoi sert le paramètre `index` ?
Comment spécifier la table de sortie où les résultats seront stockés ?