Currently Tracker plugin is based on CLI search tool (tracker-search). It launches the tool with necessary parameters, and parses the output. This approach strictly depends on the output format of tracker-search. If the format of tracker-search output changes, the plugin stops working properly. This has been the root cause for several bugs, and there's no guarantee this won't happen in future.
Tracker service provides a D-Bus interface, which can be used to perform searches. D-Bus API of tracker is documented, so the Tracker plugin can be easily implemented using it.
Bugs that were caused by incorrect parsing of tracker-search output:
Tracker D-Bus API:
I'm attaching a proof-of-concept implementation. It surely needs some code polishing / refactoring, and I'm not sure I've used the best practices for NDesk.DBus (I've got no experience in this field at all), but at least it works for me :)