hoard icon indicating copy to clipboard operation
hoard copied to clipboard

Fuzzy search commands

Open Hyde46 opened this issue 3 years ago • 6 comments

Hyde46 avatar Sep 19 '21 15:09 Hyde46

I'm willing to work on this as well.

PurpleMyst avatar Oct 17 '21 22:10 PurpleMyst

Could I get some more specification? Do you want me to use fuzzy matching anytime we're matching on a name, or to implement the search subcommand in a particular way?

PurpleMyst avatar Oct 17 '21 22:10 PurpleMyst

Excited that you're interested!

This might be a bit more involved, since the current search is quite simple and not smart in any capacity. When running hoard list and typing any charactacter, apply_search is called. The search matches any string which is contained in any struct field of all HoardCommand of the currently selected namespace.

The main goal would be to get fuzzy matching of these struct fields. The search subcommand you are referencing is a leftover to remove since I don't see any real use for it given the GUI exists.

I think there are several ways to approach this. One of them being as follows. Implement fuzzy_search method for the CommandTrove ( Which is just a container for all HoardCommands ). So, something like

pub fn fuzzy_search(query_string: &str, namespace_filter: Option<String>) -> SearchResult

Where SearchResults contains the matching command ( And optimaly a way of indicating which characters matched to later color them appropriately in the GUI, though this could be implemented as a separate PR )

Plugging this functionality into the code would happen here and here For example like this:

&trove.fuzzy_search( &app.input, Some(selected_tab) )

( Or None for the namespace_filter if the selected tab is "All" )

I'm open for any changes, or totally different approaches! Do you have input on this?

Hyde46 avatar Oct 18 '21 19:10 Hyde46

I think this looks good, but I've a question: should fuzzy matching be the only option or should "exact" matching be kept as an option?

PurpleMyst avatar Oct 19 '21 16:10 PurpleMyst

Good call with keeping exact matching an Option. Maybe either a toggle able or with some kind of marker in the query string indicating that part of the string or the whole query has to match exactly

Hyde46 avatar Oct 19 '21 16:10 Hyde46

@PurpleMyst still considering working on this item?

Hyde46 avatar Nov 15 '21 19:11 Hyde46