leon-thomm / Ryven

Flow-based visual scripting for Python
https://ryven.org
MIT License
3.77k stars 439 forks source link

Proposal for UX ehancement - filtering #74

Open ddevz opened 3 years ago

ddevz commented 3 years ago

The list of possible nodes to insert is a bit long, and I expect will get longer as more libraries are written.

I propose we add some kind of filtering. Some example filters could be: "show me just the node types that are inputs" "show me just the node types that came from the linalg library" "show me just the node types that are outputs"

maybe a search by parameter and result type? Like: "show me all node types that accept at least one parameter of type 'matrix'" and "show me all node types that accept at least one parameter of type string"?

Just a thought

leon-thomm commented 3 years ago

Yep, that makes sense, thanks! The types you propesed (other than package origin) cannot necessarily be determined, but for now we could provide filters for the node packages and active/passive nodes, and then auxiliary fields in node definitions could be introduced to provide further categorisation as you suggested. A keywords field for nodes is already on my TODO for ryvencore. I will probably also try to add a nodes list widget on the left in the editor where you can do this too and drag them unto the scene.

dumblob commented 3 years ago

A keywords field for nodes is already on my TODO for ryvencore.

And the search should be (very) fuzzy (e.g. using Sørensen–Dice coefficient and not Levenshtein-derived ones).

Btw. this is one of the worst things many keywords/tags/... implementations do - that they do not provide top-notch fuzzy search essentially rendering tagging useless (because it concentrates a lot of information in one word - and mostly one is looking for some very specific "subitem" which doesn't even resemble the wording, so ideally the fuzzy search is not just "fuzzy" but rather a "semantical proximity search" but for an app like Ryven a good fuzzy search should be enough for now).

leon-thomm commented 3 years ago

Thanks a lot!

leon-thomm commented 2 years ago

Using textdistance I implemented a simple prototype for v3.1, see here. Nodes can now have tags which are considered for a Sørensen-Dice based priority search. However, the implementation is quite primitive and I'm not entirely happy with the matching. if someone wants to work on that, see linked file above. performance seems OK so far, but might use some improvement too