Lors d'une interrogation de données, définissez des paramètres de mise en surbrillance pour renvoyer des extraits de texte contenant la requête de recherche et mettre celle-ci en évidence. La fonctionnalité de résumé et de mise en surbrillance n'est prise en charge que pour les champs de type Text.
Prérequis
Initialisez une instance OTSClient. Pour plus d'informations, consultez la rubrique Initialiser une instance OTSClient.
Créez une table de données et écrivez-y des données. Pour plus d'informations, consultez les rubriques Créer des tables de données et Écrire des données.
Créez un index de recherche pour la table de données. Pour plus d'informations, consultez la rubrique Créer un index de recherche.
Remarques
La fonctionnalité de mise en surbrillance des requêtes est disponible à partir de la version 5.5.0 du kit SDK Tablestore pour Node.js. Assurez-vous d'utiliser une version compatible du SDK. Pour plus d'informations sur l'historique des versions du SDK Node.js, consultez la rubrique Historique des versions du SDK Node.js.
Lorsque vous utilisez la fonctionnalité de mise en surbrillance avec une requête MatchQuery ou MatchPhraseQuery, plusieurs balises ouvrantes et fermantes peuvent mettre la requête de recherche en surbrillance.
Si un champ Text utilise la tokenisation sémantique maximale, la fonctionnalité de mise en surbrillance n'est pas prise en charge pour les requêtes MatchPhraseQuery.
Le sharding peut diviser la requête au sein du texte source, auquel cas la mise en surbrillance ne s'applique pas.
Paramètres
Paramètre | Description | |
highlightEncoder | La méthode d'encodage du contenu original des fragments mis en surbrillance. Valeurs possibles :
| |
fieldHighlightParams | Les paramètres de mise en surbrillance d'un champ. Définissez ce paramètre uniquement pour les champs inclus dans une requête par mot-clé au sein de SearchQuery. | |
HighlightParameter | numberOfFragments | Le nombre maximal de fragments mis en surbrillance à renvoyer. Nous recommandons de définir cette valeur sur 1. |
fragmentSize | La longueur de chaque fragment. Valeur par défaut : 100. Important La longueur des fragments renvoyés peut différer légèrement de cette valeur. | |
preTag | La balise ouvrante pour mettre en surbrillance la requête de recherche, par exemple | |
postTag | La balise fermante pour mettre en surbrillance la requête de recherche, par exemple | |
highlightFragmentOrder | La règle de tri des fragments lorsque plusieurs fragments sont renvoyés pour un champ mis en surbrillance.
| |
Exemple
L'exemple suivant utilise une requête de correspondance pour récupérer les lignes dont le champ description contient le terme tablestore. Il entoure les termes correspondants dans les fragments renvoyés par <b> et </b>. Le champ description est un champ de type Text pour lequel le résumé et la mise en surbrillance sont activés.
client.search({
tableName: "<TABLE_NAME>",
indexName: "<SEARCH_INDEX_NAME>",
searchQuery: {
offset: 0,
limit: 10, // To get only the row count without any specific data, set limit to 0. This prevents any rows from being returned.
query: { // Set the query type to MatchQuery.
queryType: TableStore.QueryType.MATCH_QUERY,
query: {
fieldName: "Col_Text", // Set the column to match.
text: "hangzhou shanghai" // Set the value to match.
}
},
highlight:{
highlightEncoder:TableStore.HighlightEncoder.PLAIN_MODE,
highlightParameters:[
{
fieldName:"Col_Text",
preTag: "",
postTag: "",
fragmentsOrder: TableStore.HighlightFragmentOrder.TEXT_SEQUENCE,
fragmentSize: 20,
numberOfFragments: 3,
}
],
},
getTotalCount: true // TotalCount in the results indicates the total number of rows in the table. The default value is false, which means the total count is not returned.
},
columnToGet: { // The columns to return. Valid values: RETURN_SPECIFIED (return custom columns), RETURN_ALL (return all columns), RETURN_ALL_FROM_INDEX (return all columns from the search index), and RETURN_NONE (return no columns).
returnType: TableStore.ColumnReturnType.RETURN_ALL
}
}, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', JSON.stringify(data.rows, null, 2));
printSearchHit(data.searchHits, "");
});
/**
* Print the content of searchHits.
* @param searchHits The search hits.
* @param prefix The prefix to add for nested structures to print hierarchical information.
*/
function printSearchHit(searchHits, prefix) {
TableStore.util.arrayEach(searchHits, function (searchHit) {
if (searchHit.highlightResultItem != null) {
console.log(prefix + "Highlight: \n");
var strBuilder = ""
for (const [key,val] of searchHit.highlightResultItem.highlightFields.entries()) {
strBuilder += key + ":[";
strBuilder += val.fragments.join(",") + "]\n";
console.log(strBuilder);
}
}
for (const [key,val] of searchHit.searchInnerHits.entries()) {
console.log(prefix + "Path: " + key + "\n");
console.log(prefix + "InnerHit: \n");
printSearchHit(val.subSearchHits, prefix + " ");
}
});
}
Références
Pour plus d'informations sur la fonctionnalité de mise en surbrillance des requêtes, consultez la rubrique Résumé et mise en surbrillance.
Pour plus d'informations sur l'utilisation de la fonctionnalité de mise en surbrillance avec un champ imbriqué, consultez la rubrique Requête imbriquée.