Monitoramentos

Tipos de consulta

  • must: A consulta deve aparecer nos documentos retornados e contribui para a pontuação.
  • filter: A consulta deve aparecer nos documentos retornados mas não contribui para pontuação. Filtros são executados antes das demais consultas reduzindo o escopo da busca.
  • should: São opcionais mas aumentam a pontuação dos documentos. O Index utiliza a configuração de match mínimo = 1 para evitar que consultas should isoladas retornem resultados inválidos.
  • must not: A consulta não deve aparecer nos documentos retornados pela busca.

Sintaxe das consultas

As consultas dos monitoramentos no sistema IndexBr utilizam a sintaxe "query string" do Elasticsearch para buscar artigos pelo conteúdo de seu título e texto.

Consultas são compostas por tokens e operadores.

Toda consulta de texto simples é interpretada como uma sequência tokens separados por espaços:

Tribunal de Justiça

Caso não haja operador especificado os tokens serão interligados com o operador padrão (OR). Tornando a consulta anterior equivalente a:

Tribunal OR de OR Justiça

Matches: qualquer documento que contenha ao menos uma das três palavras

Com o uso de aspas (") é possível interpretar uma frase como um token único preservando a ordem das palavras durante a busca:

"Tribunal de Justiça"

Wildcards (Coringas)

  • ? para um caratere
  • * para zero ou mais caracters

Ex.: deputad?

Matches: deputado, deputada

Ex.: flor*

Matches: flor, florido

Busca por proximidade

O operador ~ permite busca de proximidade por distância de edição.

A distância de edição é definida pela quantidade de mudanças de um caracter para transformar um termo em outro. Essas mudanças podem incluir as seguintes operações:

  • Trocar um caractere (gato → gado)
  • Remover um caractere (preto → reto)
  • Inserir um caractere (som → soma)
  • Transpor dois caracteres adjacentes (apto → pato)

Ex.: gato~ pato~ orta~

O valor padrão de distância é de 2 caracteres mas pode ser redefinido após o operador:

Ex.: gato~1

Quando aplicado a frases o operador ~ permite que as palavras apareçam separadas ou em ordem diferente nos resultados da busca. A distância de edição passa a ser relativa as palavras e não mais aos caracteres.

Ex.: "gato preto"~5

Matches: gato preto, gato de rua preto

Nota: A busca por proximidade não pode ser usada em conjunto com wildcards

Boosting

O operador de boost ^ pode ser usado para aumentar a relevância de um termo.

Ex.: gato^2 preto

O valor padrão de impulsionamento é 1 mas pode ser definido como qualquer decimal positivo. Valores entre 0 e 1 reduzem a relevância.

O impulsionamento também pode ser aplicado a frases e grupos:

Ex.: "gato preto"^2, (gato preto)^4

Operadores booleanos

Operadores suportados: OR, AND, NOT

Termos e operadores podem agrupados com o uso de parênteses:

Ex.: ("Ministério Público da Bahia" OR "MP-BA") AND Trânsito

Sintaxe alternativa

O Elasticsearch oferece uma sintaxe simplificada para expressar as relações booleanas baseada em prefixos:

  • + para termos que devem aparecer na busca
  • - para termos que não devem aparecer na busca
  • termos sem prefixo utilizam o operador padrão (OR) e portanto são opcionais na busca

O exemplo anterior pode ser reescrito utilizando operadores prefixos:

Ex.: +("Ministério Público da Bahia" "MP-BA") +Trânsito

Busca excluindo o termo Trânsito:

Ex.: +("Ministério Público da Bahia" "MP-BA") -Trânsito

Espaçamento

Os termos e frases podem ser separados por espaços ou quebras de linha sem qualquer prejúizo a semântica da consulta. A formatação fica a preferência do usuário:

+("Ministério Público da Bahia" "MP-BA") +Trânsito

ou

+("Ministério Público da Bahia"
"MP-BA")
+Trânsito