Ao consultar dados, defina parâmetros de destaque para retornar trechos de texto que contenham a string de busca com o termo pesquisado em evidência. O recurso de resumo e destaque é compatível apenas com campos do tipo Text.
Pré-requisitos
Uma instância OTSClient foi inicializada. Para mais informações, consulte Inicializar uma instância OTSClient.
Uma tabela de dados foi criada e preenchida. Para mais informações, consulte Criar tabelas de dados e Gravar dados.
Um índice de busca foi criado para a tabela de dados. Para mais informações, consulte Criar um índice de busca.
Observações de uso
O Tablestore SDK for Node.js V5.5.0 ou posterior oferece suporte ao recurso de destaque. Antes de utilizar esse recurso, certifique-se de ter obtido o Tablestore SDK for Node.js V5.5.0 ou superior. Para mais detalhes sobre o histórico de versões do Tablestore SDK for Node.js, consulte Histórico de versões do Tablestore SDK for Node.js.
Caso você ative o destaque em uma consulta de correspondência (match query) ou de frase exata (match phrase query), as strings de busca nos resultados podem ser realçadas usando múltiplas tags de abertura (preTag) e fechamento (postTag).
Se o método de tokenização de um campo Text for baseado na unidade semântica máxima (MaxWord), o recurso de destaque não será suportado durante consultas de frase exata nesse campo.
Quando configurado para retornar múltiplos fragmentos, as strings de busca podem ser divididas entre eles. Nessa situação, o destaque das strings pode não ocorrer corretamente.
Parâmetros
Parâmetro | Descrição | |
highlightEncoder | Método de codificação para os fragmentos de texto destacados. Valores válidos:
| |
fieldHighlightParams | Configurações de destaque do campo. Configure este parâmetro apenas para campos que contenham as strings de busca especificadas nos objetos SearchQuery. | |
HighlightParameter | numberOfFragments | Número máximo de fragmentos de texto destacados a serem retornados. Recomendamos definir este parâmetro como 1. |
fragmentSize | Comprimento de cada fragmento de texto retornado. Valor padrão: 100. Importante O comprimento real do fragmento de texto retornado pode diferir do valor definido neste parâmetro. | |
preTag | Tag de abertura usada para destacar a string de busca. Exemplos: | |
postTag | Tag de fechamento usada para destacar a string de busca. Exemplos: | |
highlightFragmentOrder | Regra de ordenação dos fragmentos de texto destacados retornados.
| |
Exemplos
O exemplo abaixo demonstra como usar MatchQuery para localizar dados onde a coluna Col_Text corresponde a hangzhou shanghai e como destacar a string de busca nos resultados. A coluna Col_Text é do tipo Text.
client.search({
tableName: "<TABLE_NAME>",
indexName: "<SEARCH_INDEX_NAME>",
searchQuery: {
offset: 0,
limit: 10, // To query only the number of rows that meet the query conditions without returning specific data, set the limit parameter to 0.
query: { // Set the query type to MatchQuery.
queryType: TableStore.QueryType.MATCH_QUERY,
query: {
fieldName: "Col_Text", // Specify the field that you want to match.
text: "hangzhou shanghai" // Specify the query string that you want to match.
}
},
highlight:{
highlightEncoder:TableStore.HighlightEncoder.PLAIN_MODE,
highlightParameters:[
{
fieldName:"Col_Text",
preTag: "<b>",
postTag: "</b>",
fragmentsOrder: TableStore.HighlightFragmentOrder.TEXT_SEQUENCE,
fragmentSize: 20,
numberOfFragments: 3,
}
],
},
getTotalCount: true // Specify whether to return the total number of rows that meet the query conditions. Default value: false.
},
columnToGet: { // Specify the columns that you want to return. You can set the parameter to RETURN_SPECIFIED to return specific columns, RETURN_ALL to return all columns, RETURN_ALL_FROM_INDEX to return all columns in the search index, or RETURN_NONE to return only the primary key 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, "");
});
/**
* Display the content that meets the query conditions.
* @param searchHits searchHits
* If the output uses the @param prefix Nested structure, add the prefix to display the hierarchy 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 + " ");
}
});
}
Referências
Para informações sobre o recurso de destaque, consulte Destaque.
Para saber como usar o recurso de destaque ao consultar campos aninhados, consulte Consulta aninhada.