Skip to content

arduino-cli lib search should display nearest names #107

Closed
@s-celles

Description

@s-celles

Hello,

Currently arduino-cli can find a library when searched name match exactly lib name (lowercased):

$ ./arduino-cli lib search ArduinoJSON
Name: "ArduinoJson"
  Author:  Benoit Blanchon <blog.benoitblanchon.fr>
  Maintainer:  Benoit Blanchon <blog.benoitblanchon.fr>
  Sentence:  An efficient and elegant JSON library for Arduino.
  Paragraph:  ArduinoJson supports ✔ serialization, ✔ deserialization, ✔ MessagePack, ✔ fixed allocation, ✔ zero-copy, ✔ streams, and more. It is the most popular Arduino library on GitHub ❤❤❤❤❤. Check out arduinojson.org for a comprehensive documentation.
  Website:  https://arduinojson.org/?utm_source=meta&utm_medium=library.properties
  Category:  Data Processing
  Architecture:  *
  Types:  Contributed
  Versions:  [4.0.0, 5.0.0, 5.0.1, 5.0.2, 5.0.3, 5.0.4, 5.0.5, 5.0.6, 5.0.7, 5.0.8, 5.1.0-beta.1, 5.1.0-beta.2, 5.1.0, 5.1.1, 5.2.0, 5.3.0, 5.4.0, 5.5.0, 5.5.1, 5.6.0, 5.6.1, 5.6.2, 5.6.3, 5.6.4, 5.6.5, 5.6.6, 5.6.7, 5.7.0, 5.7.1, 5.7.2, 5.7.3, 5.8.0, 5.8.1, 5.8.2, 5.8.3, 5.8.4, 5.9.0, 5.10.0, 5.10.1, 5.11.0, 5.11.1, 5.11.2, 5.12.0, 5.13.0, 5.13.1, 5.13.2, 5.13.3, 5.13.4, 6.0.0-beta, 6.0.1-beta, 6.1.0-beta, 6.2.0-beta, 6.2.1-beta, 6.2.2-beta, 6.2.3-beta, 6.3.0-beta, 6.4.0-beta, 6.5.0-beta, 6.6.0-beta, 6.7.0-beta]

But not when it's slightly different

$ ./arduino-cli lib search ArduinoJason
No library found matching `arduinojason` search query

Maybe Arduino CLI could find nearest library named (or 5 nearest library name)

$ ./arduino-cli lib search ArduinoJason
No library found matching `arduinojason` search query
Did you mean?
ArduinoJson
...

I did something quite similar in https://github.com/scls19fr/arduino_libraries_search/blob/master/utils.py#L110-L127

using a similarity measurement named Sørensen–Dice coefficient

Other metrics / edit distance may be considered
https://en.wikipedia.org/wiki/String_metric

Kind regards

PS : quite similar to this Julia Pkg issue JuliaLang/Pkg.jl#616
PS2 : https://github.com/danieldk/editdistance may help because it implements Levenshtein algorithm in Go

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions