deanishe / zothero

Rapidly search and cite Zotero entries from Alfred
MIT License
480 stars 31 forks source link

add fuzzy search support #31

Closed atanasj closed 4 years ago

atanasj commented 4 years ago

It would be good if this workflow had the ability to use fuzzy search, maybe with ripgrep or similar to find citations. Not sure if and how this would be done, but this feature to search bibliography entries could be helpful.

deanishe commented 4 years ago

It would be good if this workflow had the ability to use fuzzy search

I specifically didn't add it because fuzzy search tends to suck when you have a lot of items to search. So, I'll need a better argument than "it would be good", I'm afraid.

maybe with ripgrep

ripgrep searches filesystems, not databases. Neither it nor its algorithm are transferable to the workflow.

atanasj commented 4 years ago

No worries. I've been using Emacs recently which uses fuzzy search but I just realised it searches a bibtex file not the sqlite database.

What I liked about my experience with emacs was that it seems to offer more and better matched options before it runs out of citation suggestions.

deanishe commented 4 years ago

It's not possible to do a "smart" fuzzy search the way ripgrep and similar tools do with SQLite.

And a "dumb" fuzzy search (i.e. without ranking quality of match) leads to poor-quality results, not least because the workflow also searches abstracts and notes.

it seems to offer more and better matched options

In what way? If you're actually entering words that appear in the title/author/etc., the workflow should find them perfectly well, and Alfred will also remember your choices and bump previously-selected items to the top for the same query.

atanasj commented 4 years ago

It might actually be just my subjective experience. Overall, I'm very happy with what zothero and from what you seem to be saying is that it is not a feature that really would be that useful. I have no idea about the backend stuff (ripgrep, etc.), so this issue really a 'lets see what happens if I ask for this' kind of thing. I'm happy to close the issue if you don't think it's useful or relevant.

deanishe commented 4 years ago

It's more that it's not really possible to implement well (without a complete rewrite). The results would be crap. You can test it by inserting an asterisk between each character of your fuzzy query, e.g. *j*a*s*m*i* instead of jasmi.

The workflow uses SQLite's fulltext search, which is a more "traditional" search, i.e. you can do things like smith AND jones or search specific fields with authors:smith.