Search functionality in Joplin

Thanks a lot for a detailed reply and the suggestions!
Which search filters do you find the most useful?

1 Like

I honestly had no idea that any search filters existed until I happened to look at the search docs page yesterday. (Or that the "Goto Anything" command palette existed".) Definite lack of discoverability in both of those, although that's admittedly inherent in the command palette UI concept in the first place.

Given that, the only one I've tried to use so far is notebook:. Which does work, although it seems to have issues if the notebook name has spaces in it. notebook:Some Name doesn't work, neither does notebook:"Some Name". I think I managed to get notebook:*Name to cooperate, but that was ugly.

I can imagine having a lot of these exposed as UI controls (checkboxes, dropdowns, etc) in the notional full-text search UI I'm suggesting, although there's enough filter options that you probably wouldn't want to have separate UI controls for all of them. Having a popup help box listing all of the available filter commands would be useful, as would a way to auto-insert them - I'm picturing something like how https://regex101.com/ shows you a "Quick Reference" of available regular expression syntax, explains each one, and lets you insert it into the input.

2 Likes

I mostly use Goto Anything because:

I discovered its keyboard shortcut first. This may be the case for users familiar with command palette, Quick Open, or print shortcuts elsewhere.

Its overlay makes it clear when its focused compared to the search bar's blinking cursor.

It highlights search matches for titles and content without moving me away from my current note.

Its included help button explains it supports notebook (@notebook), tag (#tag), and command search (:command). In my testing, the search bar doesn't support these. These also populate Goto Anything with matching results. Compare that to the search bar, which requires longer operators (notebook:, etc.) that require exact matches.

Returning to my current note is one Back click away. Using the search bar requires clicking the In: notebook button first with CSS to hide the formatting bar by default applied.

As for basic search (which only works in the search bar, but should work elsewhere):

4 Likes

Goto Anything shows me the Notebook path of results, but more importantly it shows me a line of context where the search word occurs.

As already mentioned—although I do not know the inner workings of the search algorithm—it seems to do at least some of the following: take account of the age of the note, prefer results with the search target in the note title, place high on the list notes recently edited, take account of the number of occurrences of the search target—I don't know, but it consistently finds the most likely and relevant targets. Goto Anything has a generous size for text input which importantly keeps focus once called up, and the results are dynamic—I can hit the keyboard shortcut and immediately type, backspace, and try different search terms if necessary in a fluid way.

Another benefit of Goto Anything is if I type : I can search all available commands (although this function has a separate shortcut, it seems convenient to me to just use the same shortcut)

The search bar lists notes without context, and not in order of the most likely target. It has a small input area, and does not retain the focus when activated (once you pause it loses focus, this may not be the intended behaviour (bug?), but it makes if difficult to use, having to click it to restore the focus. It doesn't allow filtering for tags and notebook, so if I enter, for example, "@archive" it will return a list of all notes containing the word "archive", whereas Goto Anything will return only a list of notebooks containing the word "archive" in their titles.

The reason for using the search bar for specific characters is to search for literal markdown characters—for example notes with unfinished To-Dos in the body of the note, in this case Goto Anything will not find the string - [ ], whereas the search bar has the ability to do so (with the syntax /"- [ ]". There are other cases, but this is the one that comes to mind.

For me, the ideal would be if the abilities of the search bar were moved into Goto Anything, and the Goto Anything would have an expandable bottom section containing some check boxes and drop-down lists to use in cases where the search term returns too many results. It could contain items like, check box "Search for literal characters" when looking for something like - [ ], perhaps "Case Sensitive", between dates X and Y, "Current Notebook", and such like.

image

Edit: losing search box focus behaviour is down to one of my installed plugins, and is not a bug in the main Joplin app

2 Likes

I'm quite sure notebook:"Some Name" is working, because I use this frequently.

1 Like

I can't reproduce this, I know this was a bug several times. especially with plugins that changed the view/layout

1 Like

Saving queries and/or filters into clickable search templates with keyboard shortcuts would save time for repetitive use cases like searching for unfinished todos.

1 Like

You are correct, @JackGruber. I tried safe mode, and the losing search box focus behaviour is not present, so down to one of my installed plugins.

Muzak, yes. Here I use the Embed Search plugin, and pin these search notes to avoid having to repeatedly type commonly used searches—like show me notes for the last week, etc.—to serve that purpose, but the same idea.

I feel the search is technically powerful. Knowing the right syntax you can create complex queries. But it is not easy to learn and understand for this reason I stick to search for simple term and clicking around until I find the results. following topics are biggest drawbacks in my eyes

  • small default search bar (F6)
  • missing substring search (only exact search find things e.g. ip address doesn't find "ip addresses")
  • limiting search results after search (e.g. select notebooks or click on relevant tags to narrow down results)
  • search term matching a tag or title should have more weight than simple text match..
4 Likes

The joplin search do not work well in chinese english fused context. can we just use the search utility from VSCode? or make a extension to let vscode do the search?

1 Like

Thanks for the initiative.
I am mostly using Joplin on a mobile device and will share my experience from this perspective. I will not come back at the limitations shared above.
I find the search functionality very powerful but sometimes quite complex to use.
Because of the time it takes to write a proper query I mostly fallback using simple keyword search (here the substring limitation is really irritating).
For complex queries it would be very helpful if I could save most used ones and they would be synced across devices. If these queries could be saved to create virtual notebooks it would be even better.
Similarly if these queries can be callable as links from a note, it would be a nice feature.

5 Likes
  1. I usually use CMP+P to search, but the first note I press may not contain the info I need. Then I have to click the "search box" and type the text again to find more, which is not convenient.

Suggestion: Add a shortcut to go directly to the search box.

  1. When searching, if you click on a link inside the note, the search box will be cleared.

Suggestion: Add an option to prevent the search box from being cleared automatically.

  1. It would be great to allow plugins to update the search box.

For example, a plugin may provide a saved search feature in the side panel, or a plugin may add a link type to update the search box inside editor

1 Like

Hi,
My main concern is that, using the general search in the upper line, essentially on my Android phone, in some cases I cant fully understand(no special characters), some results aren't found : the list of selected notes doesn't always include all the occurrences of the search.
I tried joker characters as * or ? with no significative improvment.
As I'm testing Obsidian, I found this app very interesting and clear in its research menu , even on Android app.

Another subject, I didn't find in the above exchanges, except if I didn't pay enough attention, any remark about filtering tasks(naturally in the forum, some threads are discussing on this concern) , that have due (or creation or modification) date in the past, or between dates , or equals today or tomorrow.
My habit is to use patterns of searchs in a dedicated note, and adapt them. So a special submenu that could filter and sort the results by due date, creation or modification date would be of great interest for me. See examples in Evernote or even Obsidian that is showing all notes with due dates in the past at the very opening of the app.

2 Likes

It would be good to have a way to search within note attachments.

2 Likes

At first I was typing search terms in the search box. Frustrated by many absentee results, one of your colleagues suggested using Command-P for a more comprehensive search which has worked considerably better. For me, it would be desirable to not have to specify note title, content, or tag and have the search apply to all by default.

Many thanks!

1 Like

Already possible via search filters.

The filters are comprehensive, but it might be a good improvement to have them more easily available in the GUI via point and click, and allow setting the target dates via a calendar date picker, etc. Some users seem unaware of the filtering available for searching, or find it awkward to use.

However, it's fully understandable that limited development manpower will focus on core priorities, and that this kind of thing comes under the category of "would be nice to have"

2 Likes

I would like to see away to keep at lest 1 maybe 2 notes on the top of the All Notes. I have 1 note that I refer to a lot and now I have to always search for it. It would nice to have the note on top. Like Notes on IOS does.

A workaround for you might be the Home Note plugin

It will let you define a note, which you can quickly bring up by keyboard shortcut or toolbar icon.