Re: Bookmark Queryable
- From: Debajyoti Bera <dbera web gmail com>
- To: dashboard-hackers gnome org, mada gautier org
- Subject: Re: Bookmark Queryable
- Date: Sat, 16 Sep 2006 22:05:25 -0400
> Also, I forgot to add:
>
> 7.) Define a plugin model for queryables to be developed and distributed
> outside of beagle.
It is possible to build a queryable outside of beagle. its just not well
documented. Assuming you understand the distinction between a QueryDriver
(one which queries existing data sources) and a Queryable (which finds the
data to index and takes care of indexing), here is a very stupid Queryable
------- >8 --------- UselessQueryable.cs ---- (watch for word wrap) ------
using System;
using System.IO;
using System.Threading;
using System.Collections;
using Beagle.Daemon;
using Beagle.Util;
namespace Beagle.Daemon.MyQyeryable {
[QueryableFlavor (Name="MyMy", Domain=QueryDomain.Local,
RequireInotify=false)]
public class MyQueryable : LuceneQueryable {
public MyQueryable () : base ("MyMyIndex")
{
// Initialization e.g.
// Setting path of data
}
public override void Start ()
{
base.Start ();
ExceptionHandlingThread.Start (new ThreadStart
(StartWorker));
}
private void StartWorker ()
{
// Setup Inotify
// Find data e.g. by crawling files
// Add an object to the index
Indexable indexable = new Indexable (
new Uri (String.Format (
"foo://bar")));
indexable.MimeType = "text/plain";
indexable.HitType = "FooType";
indexable.Timestamp = DateTime.Now;
// Some random properties
indexable.AddProperty (Property.New
("dc:title", "Dummy first item"));
indexable.AddProperty (Property.NewKeyword
("dc:version", "v1.0"));
indexable.AddProperty (Property.NewUnsearched
("fixme:md5", "U7SD67676F7"));
// Add text data
StringReader st = new StringReader ("This is not a
very long string");
indexable.SetTextReader (st);
// Send indexable to scheduler
Scheduler.Task task;
task = NewAddTask (indexable);
task.Tag = "sometag";
ThisScheduler.Add (task);
}
public string StatusName {
get { return "Working"; }
}
}
}
----------------------------------- >8 -----------------------------
* Compile this as
$mcs -debug -nowarn:0162,0164,0168,0169,0219,0436 -out:MyBackend.dll -target:library
UselessQueryable.cs -r:$PREFIXlib/beagle/BeagleDaemonLib.dll -r:
$PREFIXlib/beagle/Util.dll -r:$PREFIXlib/beagle/Beagle.dll
* Copy MyBackend.dll to $PREFIX/lib/beagle/Backends
* Verify using beagled --list-backends that the backend MyMy is loaded.
* Start using MyMy backend
* WARNING! The backend is extremely dumb (it doesnt do _anything_ useful) and
unhealthy for beagle (whenever started, it throws all data to the scheduler -
ideally all indexables should be added to the scheduler queue by
IIndexableGenerator and all text handling should preferably be done by the
Filters)
For more information on Queryables, Querydrivers and Filters, check the Wiki.
There are docs here and there on those issues.
> 8.) Build a plugin mechanism in the UI and libbeagle
What do you mean by plugin for libbeagle ? What kind of plugins are you
looking for ?
- dBera
--
-----------------------------------------------------
Debajyoti Bera @ http://dbera.blogspot.com
beagle / KDE fan
Mandriva / Inspiron-1100 user
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]