Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Novo algoritmo de busca #200

Merged
merged 8 commits into from
Oct 10, 2024
Merged

Novo algoritmo de busca #200

merged 8 commits into from
Oct 10, 2024

Conversation

george-gca
Copy link
Contributor

@george-gca george-gca commented Oct 4, 2024

Descrição de PR

Mudei um pouco o algoritmo de busca, além de ordenar os resultados baseados na pontuação dos cards. A pontuação é calculada da seguinte forma:

  • se a string de busca está dentro de uma das palavras do título, acrescenta 10 pontos
  • se a string de busca não está no título, mas uma palavra muito parecida com ela está (ex: abstracao parece com abstração), acrescenta 10 - distância de Levenshtein entre as palavras, considerando somente a palavra do título com mais de 3 caracteres e que tenha uma distância de no máximo 3 mais parecida com a string de busca
  • multiplica esse valor por 10 (pra dar prioridade para o título), e faz o mesmo cálculo para as palavras da descrição

O algoritmo é bem rápido, usei a implementação que encontrei em https://github.com/gustf/js-levenshtein, adicionando os devidos créditos no cabeçalho do arquivo levenshtein.js

Issue relacionado

Resolve o #196

Motivações

Ter uma busca ordenada por palavras mais parecidas, priorizando o título e ainda dando margem para uma possível escrita errada ou preguiça de digitar os caracteres especiais como acentos e cedilha

Informações adicionais

Tenta realizar algumas buscas, vê se algum resultado não aparece em alguma ordem que deveria. Eu procurei fazer uns testes exaustivos, mas sempre pode ter passado algo despercebido.

Signed-off-by: George Araújo <george.gcac@gmail.com>
Signed-off-by: George Araújo <george.gcac@gmail.com>
…iption

Signed-off-by: George Araújo <george.gcac@gmail.com>
Signed-off-by: George Araújo <george.gcac@gmail.com>
Signed-off-by: George Araújo <george.gcac@gmail.com>
Copy link

netlify bot commented Oct 4, 2024

Deploy Preview for diciotech ready!

Name Link
🔨 Latest commit a22d7a1
🔍 Latest deploy log https://app.netlify.com/sites/diciotech/deploys/6707dd32d991a100083cc0b9
😎 Deploy Preview https://deploy-preview-200--diciotech.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@george-gca george-gca marked this pull request as draft October 4, 2024 15:03
… after exact match

Signed-off-by: George Araújo <george.gcac@gmail.com>
@george-gca george-gca marked this pull request as ready for review October 4, 2024 18:38
@george-gca
Copy link
Contributor Author

george-gca commented Oct 4, 2024

Fiz mais algumas mudanças:

  • agora o algoritmo quebra a string de busca e calcula o score por palavra
  • só considera o melhor caso pra cada palavra de busca
    • se a palavra for igual já para de calcular o score da palavra e vai pra próxima
    • se a palavra for uma substring, dá um valor pra isso e continua pra ver se tem um match perfeito
    • se a palavra não for substring e ainda não achou uma que ela seja substring, calcula a distância de levenshtein pra considerar possibilidade de palavra escrita errada (ex: sem acentos)

Talvez seja porque eu tinha marcado a PR como draft e depois que voltei pra ready for review, mas o netlify não gerou um preview do meu último commit, então tem que ser feito o teste localmente.

Signed-off-by: George Araújo <george.gcac@gmail.com>
@george-gca
Copy link
Contributor Author

Aumentei o score só pra ver se conseguia forçar o netlify a gerar a visualização, mas não deu certo.

@levxyca levxyca self-requested a review October 10, 2024 11:56
@levxyca levxyca added the enhancement New feature or request label Oct 10, 2024
@levxyca levxyca added this to the v2 milestone Oct 10, 2024
@levxyca levxyca linked an issue Oct 10, 2024 that may be closed by this pull request
@levxyca
Copy link
Owner

levxyca commented Oct 10, 2024

@george-gca aqui pra mim agora está aparecendo a visualização certinha, vou revisar o PR 🎆

Copy link
Owner

@levxyca levxyca left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sensacional demais! Obrigada pela sua contribuição 🚀

assets/js/levenshtein.js Show resolved Hide resolved
@levxyca levxyca merged commit 75583af into levxyca:main Oct 10, 2024
5 checks passed
@george-gca george-gca deleted the busca_levenshtein branch October 10, 2024 20:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

Alterar o algoritmo de busca para priorizar título
2 participants