Use o Tablestore SDK for Python para retornar fragmentos de campos Text que contenham tokens correspondentes e marcar esses tokens.
Pré-requisitos
Instale o Tablestore SDK for Python e inicialize um cliente.
O recurso de resumo e destaque exige a versão 6.0.0 ou posterior do SDK. Recomendamos o uso da versão mais recente.
Ao criar o search index, defina enable_highlighting como True para o campo Text desejado.
Descrição
O recurso de resumo e destaque extrai fragmentos de texto ao redor dos tokens correspondentes e marca esses tokens com tags de abertura e fechamento. Esse recurso é compatível apenas com campos Text. Em uma consulta, use SearchQuery.highlight para especificar os campos e as configurações de fragmento.
A versão 6.4.6 do Tablestore SDK for Python oferece suporte a resumo e destaque para TermQuery, TermsQuery, PrefixQuery, WildcardQuery, RangeQuery, BoolQuery, MatchQuery e MatchPhraseQuery. Para BoolQuery, é possível destacar campos usados por tipos de subconsultas compatíveis. No caso de NestedQuery, configure o destaque das linhas filhas correspondentes em InnerHits.highlight. Para obter mais informações, consulte Nested query.
Com MatchQuery ou MatchPhraseQuery, múltiplos pares de tags de abertura e fechamento podem marcar um token correspondente. O MatchPhraseQuery não oferece suporte a destaque para campos Text que usam o analisador semântico máximo. Além disso, o limite de um fragmento pode dividir um token correspondente e impedir seu destaque.
O exemplo a seguir consulta o token tablestore no campo description e marca os tokens correspondentes nos fragmentos com <b> e </b>.
query = MatchQuery("description", "tablestore")
highlight = Highlight(
[
HighlightParameter(
"description",
number_of_fragments=1,
fragment_size=100,
pre_tag="<b>",
post_tag="</b>",
)
],
HighlightEncoder.PLAIN_MODE,
)
response = client.search(
"example_table",
"example_index",
SearchQuery(query, limit=10, highlight=highlight),
)
for hit in response.search_hits:
for field in hit.highlight_result.highlight_fields:
print(field.field_name, field.field_fragments)
Parâmetros
search_query.highlight é do tipo Highlight. A tabela a seguir usa caminhos completos para descrever os dois níveis de configuração de Highlight e HighlightParameter.
|
Nome |
Tipo |
Descrição |
|
highlight_parameters (obrigatório) |
|
Configurações de fragmentos destacados para os campos. Cada campo deve ter o destaque ativado e participar de um tipo de consulta compatível com esse recurso. |
|
highlight_encoder (opcional) |
|
Modo de codificação do texto do fragmento. O modo |
|
highlight_parameters[].field_name (obrigatório) |
|
Nome do campo |
|
highlight_parameters[].number_of_fragments (opcional) |
|
Número máximo de fragmentos a retornar para um campo. Recomenda-se o valor |
|
highlight_parameters[].fragment_size (opcional) |
|
Comprimento alvo do fragmento. Valor padrão: |
|
highlight_parameters[].pre_tag (opcional) |
|
Tag de abertura para tokens correspondentes. Valor padrão: |
|
highlight_parameters[].post_tag (opcional) |
|
Tag de fechamento para tokens correspondentes. Valor padrão: |
|
highlight_parameters[].fragments_order (opcional) |
|
Ordem de classificação dos fragmentos. A opção |
Resposta
Os resultados de destaque estão disponíveis em SearchResponse.search_hits[].highlight_result e têm a seguinte estrutura.
|
Campo |
Tipo |
Descrição |
|
search_hits |
|
Os resultados da busca. |
|
search_hits[].row |
|
A linha correspondente. |
|
search_hits[].highlight_result |
|
Resultado do resumo e destaque para a linha. O valor estará vazio se nenhum destaque for retornado. |
|
search_hits[].highlight_result.highlight_fields |
|
Destaques para os campos da linha. |
|
highlight_fields[].field_name |
|
Nome do campo destacado. |
|
highlight_fields[].field_fragments |
|
Fragmentos destacados. As tags configuradas marcam os tokens correspondentes. |
Resposta compatível com tupla
A partir da versão 5.2.0 do Tablestore SDK for Python, as APIs de busca retornam objetos de resposta em vez de tuplas. As versões 5.1.0 e anteriores retornam tuplas diretamente. Na versão 5.2.1 e posteriores, chame SearchResponse.v1_response() para obter uma tupla compatível com versões anteriores. Para novos códigos, acesse os atributos de SearchResponse diretamente para evitar erros de desempacotamento caso novos campos sejam adicionados à resposta.
(
rows,
next_token,
total_count,
is_all_succeed,
agg_results,
group_by_results,
search_hits,
) = response.v1_response()