Org-roam-search

search org roam database using org-ql type syntax.
For example, the following query
tag:tag1,tag2 title:title1,title2 both:query1,query2 query3 query4

searches for file with tag tag1,tag2,query1,query2,query3 and query4 and has in titles/aliases title1,title2,query3 and query4.

alpha software. I have been using it daily as a drop-in replacement for org-roam-find-file.

works with org-roam version 1. It can be easily ported to org-roam verison 2.

3 Likes

Very cool! @KirillR and I have been thinking about something like this wrt org-roam-ui. Do you think this could somehow:

  1. Do queries like: have tag X and be linked to files/nodes with tag Y?
  2. Eventually be combined with org-ql like queries? So you could do something like: show all nodes with tag X and Deadline Y? This could probably already be done in here, since org-roam stores all org properties, but there are probably things org-ql can look for that aren’t stored in the org-roam-db
1 Like

@ThomasFKJorna

It uses org-ql like queries. Search string to sexp conversion code is from org-ql. Like org-ql, you can define custom search types.
Both features you propose are possible. You would need to define a search type and appropriate transform and stringify form for it.
Transfrom converts the search type into a searchable entity. For example, the search term
tag:tag1,tag2 is transformed to

(and  (like tags:tags tag1)
      (like tags:tags tag2))

which is a valid where clause for emacs-sql.

Stringify form displays the search term appropriately within helm or consult. for example, the search string tag:tag1,tag2 query1 query2
is stringified to
(tag1,tag2) query1 query2
look at org-roam-search/org-roam-search.el at 679da10768fb651bf74b6729c448b3dd74a24689 · natask/org-roam-search · GitHub