Para Desenvolvedores

Busca por todos os termos (AND)

Resolvido

No serviço padrão de busca do Portal, por default, a busca por mais de um termo retorna todos os resultados que tenham algum dos termos (se não for especificado os operadores).

É possível mudar o comportamento para que retorne apenas os resultados que têm todos os termos inseridos.

Por Fórum Lumis

Em 15/04/19 16:59

Acompanhar pergunta

1 resposta(s):

Ordenar por:

Basicamente existem duas soluções para este problema:

  1. Formatar parametros no frontend

    Seria forçar "AND" entre as palavras no front-end.  Na interface de busca quando o usuário escreve múltiplas palavras, ao perder focus do input, processar as palavras em javascript colocando um "+" no começo de cada palavra.

    exemplo:
    quando o usuário busca para:  Conta Corrente
    ao perder foco do input text, um javascript deve mudar o valor para: +Conta +Corrente

    O menos traumático seria customizar o template do controle lum_inputText, para que o operador seja inserido via JavaScript num campo oculto e seja passado para a busca.
     

  2. Customizar serviço de Busca

    Customizar pra forçar um AND, ele pode criar um serviço (clone da busca padrão) que tenha um data provider que estenda lumis.doui.search.SearchDataProvider.

    Nessa classe customizada, ele deve sobrescrever o método lumis.doui.search.SearchDataProvider.parseUserQuery(String) chamando o super e criar um novo ParsedUserQuery alterando só o userQuery para prefixar cada palavra com um "+".

    O contra desta solução seria que algumas melhorias disponibilizadas em futuras versões do produto não estarão automaticamente disponíveis mesmo após o upgrade de versão.

Por Fórum Lumis

Em 15/04/19 17:05

Entrar

Interaja com a comunidade e tenha acesso a conteúdos exclusivos.

Houve algum erro ao acessar o banco de dados. Tente novamente mais tarde.