Key Features
- Supports both free text search (like Beagle/Google) as well as structured searches using RDF Query.
- Responds in real time to filesystem changes, automaticaly keeping its metadata database up to date.
- Extracts file contents as plain text and indexes them.
- Can provide thumbnailing on the fly if a thumbnail does not currently exist.
- Uses multilingual word stemmers to help find more relevant results. For example a search for motorbikes (plural) will also return results relevant to motorbike (singular).
Desktop Neutral Design
- Adheres to freedesktop thumbail spec.
- Uses freedesktop technologies like DBus and XDGMime.
- Uses XDG utils like xdg-open.
- Implements the freedesktop specification for metadata (http://freedesktop.org/wiki/Standards/shared-filemetadata-spec).
- Supports the WC3's RDF Query syntax for querying that metadata.
Efficient and Stable
- Written in C for maximum efficiency.
- Designed and built to run well on lower-memory systems with typically 128MB or 256MB memory. Typical RAM usage is 3-9 MB.
- High performance indexer capable of indexing 100+ text files a second.
- Scheduled nicely so that you can work and use your machine without noticing any slow downs.
- Extractors run in separate processes, so a crash in one will not bring down the daemon.
Components
- Indexer, a lightweight daemon that extracts information from files (trackerd).
- Tracker Search Tool, a small GUI to search for indexed data.
- Command line tools for searching, querying the daemon status, and tagging.
- libtracker, a C wrapper around the DBus API.
- Full DBus API for application authors using different toolkits or programming languages.
Use Cases
- Application-neutral and desktop-neutral tagging. Tagging support 'for free' in any application that uses Tracker, such as Nautilus and file-chooser dialogs.
- A cross-application metadata database. If applications chooses to use Tracker as their metadata database and indexer, they would see signifigant improvements. Users would no longer need to add a MP3 they have downloaded to Rhythmbox, nor a photo they have taken to f-spot, these items would be detected and imported automatically.
- Users may completely move away from a folder-heirarchy based home folder, and instead organise their data into collections using tags. The combination of tagging support in the file-chooser, tagging awareness in Nautilus, or even a tag based filesystem using FUSE could allow radical exploration of new desktop ideas.
- Improved performance. With an always running indexer, application start-up time could be dramatically reduced in instances where applicaions scan or parse a numer of files on disk. For example, Alacarte could use it as its desktop file parser, or Rhythmbox as its song index. In addition, by using a DBus-based API, one can take advantage of asynchronous replies for improved GUI responsiveness.
Object store
Tracker can also provide a user definable object store (for things like notes, playlists, contacts, etc) complete with user-definable properties (metadata). Using Tracker as a storage base has a number of benefits:- Automatically indexed via crawler or notifications frameworks.
- Embedded metadata and text contents are fully extracted and indexed for storage and high speed search.
- Extensible metadata and tags. All entities can have an almost infinite number of properties which can be application or user-defined.
- Persistent internal storage of objects removes the need for storing them externally if desired.
- Link and define explicit relationships between different objects.
- Easily exploitable and shareable via high level and rich Dbus based interfaces.
- Searchable and queryable by content or by any criteria. Provides one of the richest and most powerful search frameworks currently available.
Tagging
Tags are one-word labels that you can assign to any file to help you categorize and remember them.- You can assign as many tags to a file as you like and rename or delete the tags later.
- You can organize, under a logical tag, several files in different folders and retrieve all of them using the common tag.