it-swarm-pt.tech

Interface do usuário da caixa de pesquisa - "todas as palavras", "correspondência parcial", "frase exata"

Estou projetando um aplicativo de desktop (material de contabilidade chato) e tenho um recurso de "produto de pesquisa".

Quero ter uma caixa de pesquisa "inteligente" agradável, mas simples. Atualmente, a caixa de pesquisa funciona dividindo todas as palavras especificadas e procurando todos os registros que correspondem parcialmente a qualquer deles.

Agora, estou enfrentando o seguinte dilema: Eu realmente quero fornecer uma maneira de especificar se o usuário deseja corresponder qualquer ou todos as palavras especificadas. Qual seria uma boa abordagem?

Outra questão é que talvez um usuário deseja executar uma correspondência exata. Mais uma vez, quero que o aplicativo seja simples de usar.

No momento, joguei três botões de rádio no formulário, mas me sinto suja por dentro ... alguma opinião?

21
Leonardo Herrera

O Google resolveu isso há muito tempo - não adianta reinventar a roda. ;)

Sugiro que você remova a necessidade de escolher e faça três pesquisas ao mesmo tempo: "frase exata" , "corresponde a todas as palavras" , AND "corresponde a qualquer" . Em seguida, una (SQL "union") esses resultados nessa ordem e apresente-os ao usuário.

Desvantagens:

  • mais carga no seu banco de dados.

Positivos:

  • mais natural para o usuário: se alguém digitar várias palavras, provavelmente saberá o que está procurando; eles não estão atirando no escuro tentando acertar pelo menos uma palavra
  • corresponde à experiência nos mecanismos de pesquisa
  • economiza um clique na interação = economiza tempo.

Certifique-se de remover as palavras de ruído da frase de pesquisa e normalizar casos/conjugações, etc .; ajudará a encontrar os resultados que seus usuários precisam, mesmo se digitarem as palavras de pesquisa no caso/tempo errado/no artigo errado.

Verifique também se a pesquisa funciona apenas com o teclado (ou seja, sem forçar o usuário a usar o mouse. <search phrase> <Enter> deve ser suficiente para obter resultados).

26
Erion

Minha opinião pessoal é que você deve fornecer uma maneira de o usuário refinar a pesquisa, porque:

  1. Você o definiu como seu objetivo ("Eu realmente quero ...") e, independentemente da abordagem automática adotada, você não permitirá que o usuário escolha.
  2. O Gmail (que é um aplicativo - mais semelhante ao seu próprio aplicativo do que a pesquisa na web) permite mostrar e refinar as opções de pesquisa.
  3. Mesmo a pesquisa regular do Google permite ao usuário refinar os resultados manualmente, ou seja, se a sequência de pesquisa estiver entre aspas, ela será pesquisada como um todo.
  4. Como usuário experiente, se eu conhecer meus critérios, tomar decisões automáticas por mim e embaralhar meus resultados de acordo com algum algoritmo que eu não conheço, realmente funciona contra mim.

A maneira que eu sugeriria fazer isso é um pouco semelhante ao que Chris sugeriu.

Retirado de DeepDyvealt text

Depois de pressionar o botão "refinar", você pode abrir uma lista suspensa imediatamente ou até usar uma pequena caixa de diálogo se, no futuro, pretender adicionar mais opções de pesquisa.

5
Dan Barak

Se o espaço é a principal preocupação, você já pensou em usar um menu suspenso? Embora talvez não seja uma solução brilhante (pois exige mais cliques), ocuparia menos espaço do que um conjunto de botões de opção.

A opção atual seria exibida com o expansor para permitir as outras opções.

       +-----------------+---+ +---------------------+ +----+
Search | exact phrase    | V | |                     | | Go |
       +-----------------+---+ +---------------------+ +----+
       | all words           |
       | any words           |
       | exact phrase        |
       +---------------------+

(desculpe a má arte ASCII)

Um refinamento pode ser executar a lista suspensa quando o mouse passa o mouse sobre o expansor, em vez de o usuário ter que clicar, mas, novamente, não é a solução ideal.

4
ChrisF

Eu mataria as opções de pesquisa - acho que não é assim que seus usuários pensam, mas, conforme o mantra da interface do usuário, teste com usuários reais e veja o que eles pensam.

Geralmente, os mecanismos de pesquisa priorizam assim:

  1. Tente encontrar a coisa toda (o AND)
  2. Experimente e encontre a presença de palavras individuais juntas
  3. Tente encontrar fragmentos das palavras (hastes - você digita 'chutando' e 'chute' também)
2
Julian H

Concordo definitivamente com Erion - não é necessário que o usuário escolha esse tipo de coisa - faça com que seu mecanismo de pesquisa (seja o que for) faça isso por você.

Independentemente da tecnologia usada pelo back-end para a pesquisa, existem maneiras de priorizar os resultados de acordo com os critérios desejados (ou seja, exatamente como o Google). Alguns podem ser mais difíceis de configurar do que outros para esse tipo de coisa, mas mesmo uma indexação básica de texto completo do SQL Server pode fornecer esse nível de organização dos resultados de pesquisa.

Apenas tome a decisão para obter a melhor experiência do usuário e peça a seus engenheiros (ou desenvolvedores, se necessário) que funcionem. É para isso que eles estão lá. Como também sou engenheiro, posso dizer isso :)

1
Charles Boyung

Se você estiver curioso, os mecanismos de pesquisa de texto completo funcionam mais comumente usando a pontuação TD-IDF. Isso significa Frequência de termo inversa à frequência do documento . O ponto principal é que um documento é mais relevante se o termo de pesquisa aparecer com muita frequência; isso é descontado pelo número de documentos em que o Word aparece no geral.

0
CambridgeMike