Podpowiadanie komend w przypadku wybrania niepoprawnej komendy

Podpowiadanie komend w przypadku wybrania niepoprawnej komendy

Wątek przeniesiony 2023-02-03 13:12 z Inżynieria oprogramowania przez Riddle.

heyyou
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 192
0

hej, w niektorych konsolach przy popełenieniu literówki dostajemy info, ze nie znaleziono komendy/programu i czy nie chodzi nam przypadkiem o (i tutaj poprawna nazwa) - przykładowo w node, kubernetes i wielu wielu innych

screenshot-20230202184159.png

Ciekawi mnie jak to jest zrobione od strony kodu - czy są robione słowniki typu
poprawne:install
niepopnrawne: insrall,instal, iinstall
?

LukeJL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8488
7

np. można użyć Levenshtein distance i wybrać najbliższą opcję.

S9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 415
2

Możesz np traktować ten problem jak problem przeszukiwania skierowanego grafu acyklicznego w którym węzły grafu reprezentują możliwe sekwencje korekcji, a krawędzie reprezentują przekształcenia od jednej poprawki do drugiej. Wtedy celem jest znalezienie ścieżki, która prowadzi do optymalnej korekty przy jak najmniejszej liczbie kroków (przekształceń). Korzystasz wtedy z algorytmu Dijkstry albo A *, które znajdują tą najkrótszą ścieżkę w grafie przy najmniejszym koszcie.

DM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 288
0

Biblioteki full text search mają takie opcję np. Apache Lucene.

Oczywiście, może to być zbyt ciężkie rozwiązanie dla narzędzia z wiersza poleceń.

Wiele wyszukiwarek korzysta z ES który jest zbudowany na Apache Lucene i właśnie tak działa. Wpisujesz błędnie plaase a w podpowiedzy dostajesz please itd.

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10230
2
heyyou napisał(a):

Ciekawi mnie jak to jest zrobione od strony kodu - czy są robione słowniki typu
poprawne:install
niepopnrawne: insrall,instal, iinstall

:D

Nie, tak na pewno nie robią.

enedil
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1028
4
Riddle napisał(a):
heyyou napisał(a):

Ciekawi mnie jak to jest zrobione od strony kodu - czy są robione słowniki typu
poprawne:install
niepopnrawne: insrall,instal, iinstall

:D

Nie, tak na pewno nie robią.

Jak to nie, dokładnie tak to robią:
https://github.com/npm/cli/blob/cb721c4c2d02d2b318d8b0aa2c9beadedcc49fa4/lib/utils/cmd-list.js#L53

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10230

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.