Como detectar um erro de digitação em uma pesquisa de produtos e sugerir correções possíveis?
-
20-08-2019 - |
Pergunta
Dado um grande banco de dados de nomes de produtos, como você detectar possíveis erros de digitação em buscas do usuário e sugerir possíveis correções (Kinda como a forma como o Google apresenta-los)?
por exemplo.
O usuário digita "Handels garfo" e 'Pesquisa' prensas.
Eles voltar
"Nenhum resultado. Você quis dizer 'alças garfo'?"
Solução
Existem várias abordagens para este problema:
- Manter uma tabela de erros de ortografia mais populares em seu banco de dados. Se você precisa de alguns erros comuns: aqui )
- Usando um algoritmo baseado no editar distância : Em informações teoria e ciência da computação, a distância de edição entre duas cadeias de caracteres é o número de operações necessárias para transformar um deles para o outro. Existem vários algoritmos diferentes para definir ou calcular essa métrica. Leia o href="http://en.wikipedia.org/wiki/Levenshtein_distance" rel="noreferrer"> artigo por exemplo.
- Se você estiver usando Lucene para pesquisa de texto completo, aqui é um artigo agradável que mostra como implementar o "você quis dizer" recurso.
- Se você ver essa característica como de correção ortográfica simples, aqui estão alguns agradável, implementações muito curtos em várias línguas: Como escrever um Spelling Corrector
Outras dicas
Você pode usar um fonética algoritmo , como Soundex para encontrar correspondências que soam similar.
PostgreSQL tem um módulo chamado fuzzystrmatch , com os documentos mostrando exemplos do uso de Soundex, Levenshtein, Metaphone, e Double Metaphone.
Eu estou certo que eu li que o Google mantém uma lista do que um usuário retypes quando eles não obter nenhum resultado. Você poderia manter um mapeamento desses valores (dizer se a cadeia retyped começa com a mesma letra).