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

Podpowiadanie komend w przypadku wybrania niepoprawnej komendy

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
?

7

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

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.

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.

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ą.

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1