Jump to content
Mpco

DEVONthink Pro Search

Recommended Posts

e2e02d7902639b523e513fac4898b609.png.173c0a5c14035d934b1d6cc9796469a1.png

 

Usage

  • Type dnt + keywords to search in all opened databases.
  • Type dnd to choose which datebase to search
    • Press Enter, then type in keywords to search in the chosen database.
    • Press ⌘Command + Enter to list all tags in the database, then choose a tag and press Enter to list all documents which have the tag.
  • Type dnm + tag1, tag2, ... to list all documents which have these tags in all database. Tags inputed must be exact. For example, Tag aBcD can't be inputed as aBc or abcd

After documents were listed,

  • Press Enter to open the selected result with DEVONthink.
  • Press ⌘Command + Enter to open with external editor.
  • Press ⌥Option + Enter to reveal result in DEVONthink.

 

You can download it from Github

Edited by QqzgpCAo
add screenshot

Share this post


Link to post

Many thanks for sharing.  I'm having an issue where the general dnt search (of DT Pro) isn't responding or returning any results, whereas a dnd search of a particular database works fine.

Share this post


Link to post

It freezes - dnt logs this:

Starting debug for 'DEVONthink Pro Search'

 

[2018-12-04 09:12:50][input.scriptfilter] Queuing argument 's'

[2018-12-04 09:12:50][input.scriptfilter] Queuing argument 'so'

[2018-12-04 09:12:50][input.scriptfilter] Queuing argument 'sot'

[2018-12-04 09:12:50][input.scriptfilter] Queuing argument 'soth'

[2018-12-04 09:12:50][input.scriptfilter] Queuing argument 'sothe'

[2018-12-04 09:12:50][input.scriptfilter] Queuing argument 'sotheo'

[2018-12-04 09:12:51][input.scriptfilter] Queuing argument 'sothe'

[2018-12-04 09:12:51][input.scriptfilter] Queuing argument 'sothew'

[2018-12-04 09:12:51][input.scriptfilter] Queuing argument 'sothewo'

[2018-12-04 09:12:51][input.scriptfilter] Queuing argument 'sothewor'

[2018-12-04 09:12:51][input.scriptfilter] Queuing argument 'sothewort'

[2018-12-04 09:12:52][input.scriptfilter] Queuing argument 'sotheworth'

 

I have some large databases (>3 gigs) containing indexed folders themselves pointing to gigabytes of files, and I think that's where the script is failing, as a dnd search of that particular database also times out.

Share this post


Link to post
On 12/5/2018 at 1:16 AM, lutefish said:

It freezes - dnt logs this:

Starting debug for 'DEVONthink Pro Search'

 

[2018-12-04 09:12:50][input.scriptfilter] Queuing argument 's'

[2018-12-04 09:12:50][input.scriptfilter] Queuing argument 'so'

[2018-12-04 09:12:50][input.scriptfilter] Queuing argument 'sot'

[2018-12-04 09:12:50][input.scriptfilter] Queuing argument 'soth'

[2018-12-04 09:12:50][input.scriptfilter] Queuing argument 'sothe'

[2018-12-04 09:12:50][input.scriptfilter] Queuing argument 'sotheo'

[2018-12-04 09:12:51][input.scriptfilter] Queuing argument 'sothe'

[2018-12-04 09:12:51][input.scriptfilter] Queuing argument 'sothew'

[2018-12-04 09:12:51][input.scriptfilter] Queuing argument 'sothewo'

[2018-12-04 09:12:51][input.scriptfilter] Queuing argument 'sothewor'

[2018-12-04 09:12:51][input.scriptfilter] Queuing argument 'sothewort'

[2018-12-04 09:12:52][input.scriptfilter] Queuing argument 'sotheworth'

 

I have some large databases (>3 gigs) containing indexed folders themselves pointing to gigabytes of files, and I think that's where the script is failing, as a dnd search of that particular database also times out.

 

Sorry, I don't have the large databases and can't test. But I attach a script file to search in all opened devonthink databases which is the core of dnt. You can download it, uncompress,  open, and then press ⌘Cmd-R to run. You can also change the search keyword theKeywords in second line of the script and test how long the searching in large databases.  Then paste the result here.

 

Download: https://github.com/mpco/AlfredWorkflow-DEVONthink-Search/files/2651576/coreSearchScript.zip

Share this post


Link to post

Mpco - many thanks. When I run the script you posted directly, it works fine, and takes only a few seconds for results to appear in the Script Editor window. But, running dnt directly still just fails silently with a time-out. Running dnd and choosing a database and searching works fine. Is it connected somehow to dnt coming after dnd, rather than being a toplevel option somehow?

Share this post


Link to post
16 hours ago, lutefish said:

Mpco - many thanks. When I run the script you posted directly, it works fine, and takes only a few seconds for results to appear in the Script Editor window. But, running dnt directly still just fails silently with a time-out. Running dnd and choosing a database and searching works fine. Is it connected somehow to dnt coming after dnd, rather than being a toplevel option somehow?

 

Hi, download this version https://github.com/mpco/AlfredWorkflow-DEVONthink-Search/files/2657674/DEVONthink.Pro.Search.zip and test dnt.

I changed some configs in it.

Share this post


Link to post

Mpco - I just downloaded the most recent release - thanks so much for keeping this up to date. I started seeing very slow searches in DT3b3 and still in DT3b4. It's not timing out. I tried running the script with logging enabled, and there's fully 7 or so seconds between when I enter text and results are returned: 

[11:23:10.768] Logging Started...

[11:23:17.517] DEVONthink Search[Script Filter] Queuing argument 'c'

[11:23:18.774] DEVONthink Search[Script Filter] Queuing argument 'chancery'

[11:23:24.083] DEVONthink Search[Script Filter] Script with argv 'chancery' finished

 

Thanks for a brilliant workflow - just wanted to draw your attention to the issue.

Share this post


Link to post
1 hour ago, lutefish said:

Thanks for a brilliant workflow - just wanted to draw your attention to the issue.

 

There's really not much that can be done to actually improve the speed of the search: calling applications via AppleScript is fundamentally slow.

 

However, you might be able to get faster results by changing the Script Filter to only search once. Open the Script Filter, click the Run Behaviour button and change the Queue Delay settings. For slow-ish searches, I find that setting Queue Delay to "Automatic delay after last character typed" provides the best results.

 

Share this post


Link to post

Many thanks for the suggestion. That option was already set, and changing Run Behaviour to various settings didn't change things. But, again, thanks - it was worth a try.

Share this post


Link to post

What is the script that I can use to enter a keyword and have Alfred search within a pre-defined database? 

Share this post


Link to post
On 7/23/2019 at 11:24 PM, slyfox said:

What is the script that I can use to enter a keyword and have Alfred search within a pre-defined database? 

 

The Script Filter whose keyword is dnt gets the selected database from the variables passed to it.

 

If you want to setup a keyword to search within a predefined database, you can follow the steps below.

1. add a Trigger-Hotkey, a Utilities-Arg and Vars object.

2. connect Hotkey to Arg&Vars, connect Arg&Vars to Script Filter whose keyword is dnt.

3. In Hotkey object, setup hotkey.

4. In Arg&Vars object, remove {query} from Argument text box; add "selectedDbName" variable whose value is name of database; add "selectedDbUUID" variable whose value is uuid of database. You can get uuid by Copy Database Link in DEVONthink.

5. Done.

 

1754181277_ScreenShot2019-08-12at11_15_37.png.fbf81331ed03a4f9bb193e47254b6e13.png

 

1764548150_ScreenShot2019-08-12at11_15_12.png.7c7cda7cfb234edbc3eca18cacbf4144.png

Share this post


Link to post
Posted (edited)

Almost there.

 

Instead of using a hotkey, what is best way to setup keyword as trigger? For example, for my notes search, I want to setup  "nt" keyword input + sear argument  will result in searching for the argument in a specific database?

Edited by slyfox

Share this post


Link to post
48 minutes ago, slyfox said:

Almost there.

 

Instead of using a hotkey, what is best way to setup keyword as trigger? For example, for my notes search, I want to setup  "nt" keyword input + sear argument  will result in searching for the argument in a specific database?

Sorry, I got it wrong. Just replace the Hotkey object with a Keyword object.

Share this post


Link to post

@Mpco

 

Keyword trigger has a bump in-between. Something is not right.

 

Entering a keyword with "search argument" does not pass the "search argument" to "dnt" script filter. It just triggers it. I then have to enter the search keyword once dnt is triggered.

Screen Shot 2019-08-12 at 2.18.10 PM.png

Share this post


Link to post
15 hours ago, slyfox said:

@Mpco

 

Keyword trigger has a bump in-between. Something is not right.

 

Entering a keyword with "search argument" does not pass the "search argument" to "dnt" script filter. It just triggers it. I then have to enter the search keyword once dnt is triggered.

 

add {query} to Argument text box of Arg&Vars object.

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...