Contents

A Xesam-based D-Bus interface for Beagle

Current Progress

  • A list of pending issues (i.e., on-going and future work) can be found in the ISSUES file distrbuted with the code

An Introduction to the Project

The Problem

Most search tools are based on a client-server model. Beagle can be seen as a server with two types of clients (this is a broad simplification) -- backends and search clients. Backends connect to the server (beagled) and feed it data to index. Search clients connect to beagled and pass it queries from the user, and retrieve results. My project deals with how search clients talk to beagled.

Currently, Beagle provides it's own custom interface to clients, using XML over Unix domain sockets. There has recently been a spate of search tools (Strigi, Tracker, Pinot, ...). Each of this presents it's own custom interface for searching. The job of all these search clients is pretty much the same -- pass searches to the core, get results back, do interesting stuff. Of course, there are also "live searches" which try to hide the time it takes to search by returning results as they are found. The point, though, is that the people developing the search clients are supposed to be focusing on the last item -- "do interesting stuff". They either need to pick a single search tool (thereby narrowing their audience), or spend time supporting a reasonably large set of such tools. This is clearly not very pleasant.

The Solution

Enter Xesam. Xesam (pronunciation similar to "sesame") is a specification (it's in the draft stage right now) to provide a standard interface to search tools. There is a protocol defined to perform searches over the D-Bus message-passing interface. It will also cover the actual format of the metadata returned by tools in due time.

So this is my task -- to have Beagle support Xesam as a search interface. This will be divided into stages. First, I will implement a small tool that will accept searches over the Xesam/D-Bus interface, and convert this to Beagle's XML/Unix interface. This will help understand the specification and see how well it fits with the way Beagle works. The second task is to move this interface into Beagle itself, in parallel with the current interface.

Stage 3 involves performance testing of these two interfaces and comparing them. One important aspect of this is scalability. If I perform a search that returns several thousand results, or there are multiple concurrent searches with a very large number of results, how do the two interfaces cope up? Which is better? Can either or both be improved upon? Finally, if the Xesam interface turns out to be better (in terms of usability and scalabilty), I will replace the XML/Unix interface with the Xesam interface. This will mean changes to all existing clients, so an appropriate method of transition will have to be devised.

ArunRaghavan 02:37, 19 April 2007 (EDT)

Using the adaptor

To test this, you need the DBus service and 'beagled' running. You also need the 'ndesk-dbus' and 'ndesk-dbus-glib' packages (available in all major Linux distributions and http://www.ndesk.org).

  • Install the adaptor using the standard procedure (./configure && make && make install).
  • The adaptor is run using the command 'beagle-xesam-adaptor'.
  • Once up and running, you can send queries to the beagle-xesam-adaptor using Xesam specifications.

This page was last modified 12:42, 18 June 2008. This page has been accessed 2,901 times.

  
MediaWiki

Copyright © 2004-2007