DEVONthink: Indexing デボンシンク: インデックスする

DEVONthink is a “personal information manager” (PIM) with a powerful feature called “indexing.” Indexing provides one way to keep data accessible from other apps while still giving access to everything DEVONthink has to offer. This is a revised version of a post I made many moons ago.

Indexing vs. Importing

Indexing works something like this: a mirror image of a file or folder on your drive is created inside your DEVONthink database. Instead of copying files or moving something into the DEVONthink database (called “importing”), the app generates a representation of it inside your database. You can think of it as something like the “alias” feature on the Mac or the “shortcut” feature on Windows. When you open a file in DEVONthink to modify it, the changes are actually made in the file that exists outside of the database. When you move a file from one location to another or fiddle around with folder names, though… things get complicated. More on that at the end of the post.

Suffice to say, managing an indexed file or folder can be tricky. You have to be careful about the various idiosyncrasies and possibly unfamiliar behaviors involved with it. Because of the additional complexity, DEVONthink users have widely divergent opinions on whether you should import or index files. Personally, I’ve found indexing on a single computer to be no hassle at all. Your mileage may vary, of course, but read on to find out if you think it’d be worth a try.

Use Cases

  • The Cloud: Indexing comes in especially handy when using popular cloud services such as Dropbox or SpiderOak. For example, one of my databases is located inside of SpiderOak, and whenever I want to access the contents from a Windows computer (DEVONthink is only available on Mac) I can easily do so, because everything remains in place.
  • Other Apps: Alternatively, I can continue using and enjoying other apps I like while also being able to see and manipulate the same data in DEVONthink. Find and Replace? No problem. DEVONthink cannot search and replace characters in a few thousand notes at once, but BBEdit can, and it’s a simple task to accomplish when you index your stuff. Are you a Scrivener user? Sync your files to an external folder and index that with DEVONthink — I have my folder in Dropbox so that I can sync to the content with Notesy on the iPad as well. Basically, DEVONthink plays well with others, and you don’t have to abandon other apps by placing your data in a proprietary database closed off to everything else (I’m talking about you OneNote).
  • Redundancy: Finally, another benefit provided by indexing is that files seem less likely to suffer from some kind of catastrophic problem — a database can (on rare occasions) become corrupted during regular use, even to the point that it can no longer be opened. With indexed files, the files are outside of the database, safe from harm, and freely accessible.

1. Choose a Folder or File

I am currently using Dropbox. However, anything is fine for the purposes of indexing. Please remember, though, not to put your DEVONthink database itself inside any cloud services. Everything within a folder (subfolders and files) will also be indexed.

2. Index the Folder or File

This is the simple part. When you’re done, everything looks almost identical to how it would appear if you had imported the content directly into the database. The only visible difference is the small arrow mark next to each indexed file or folder. However, remember that when you create things in DEVONthink or move things about, those modifications will only appear within DEVONthink. You need to save files into the external folder in order to have them be visible in Finder.

Final Word: Mirror-ish

Although I used the word “mirror” at the beginning of this post to explain what indexing does, it may not be an appropriate word choice. First, I should say that the DEVONthink database will probably not look *exactly* like what you see in Finder. DEVONthink is much more flexible and capable than Finder, and so it is neither possible nor desirable to try and have an exact replica. Rest assured, all of your data will be safe and sound in the indexed location — it might just be a little out of place.

Second, things are a bit more complicated than the word “mirror” suggests. “Korm,” an experienced DEVONthink user with a far better grasp on the topic than I do, has this to say about it:

Actually, a “mirror image” is not created in the database. Within the .dtMeta files [a set of ten index files named with the suffix “.dtMeta” inside the database package] the database contains a concordance of the words in the indexed file, and certain other metadata is copied, but there is no “image” of the file. When you view an indexed file you are viewing the actual file in situ in the filesystem. DEVONthink uses available Quick Look [an Apple OSX preview feature] plugins to display the content — if there is no plugin there is no display. (This is the same result as selecting a file in Finder and pressing Space to see the preview.)

When you change an indexed file it is not the case that changes are made in the database and “also in the file existing outside the app”. There is only one file, and only one change — to the file in the filesystem outside the database. So, there is no “mirror” except in a metaphorical sense.

Indexing and aliasing are different technologies. With aliasing, OS X tracks where the original is located. If you move the original, OS X has no trouble finding it. Indexed files, however, are not tracked. DEVONthink stores the path of that file at the time of indexing but has no means (currently) to track it or to change the address.

It’s a lot to digest, but knowing these additional details might help you avoid some pitfalls in the future. Many thanks to Korm for providing the explanation and the diagram. As you can probably already tell from this and other information provided by users on the DEVONthink forums, there is a vibrant, friendly, and helpful user community for DEVONthink that can help you whenever you have any questions about putting it to work for your use case.