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