Metadata indexing

"Kevin O'Neill" <[email protected]> Tue, 25 Mar 2003 22:04:19 +1100
Newsgroups gmane.comp.belts.devel
Organization rocketred pty ltd
Message-ID <[email protected]>
The level of sophistication required for matching learning objects based
on their metadata has increased somewhat for version 1.1. I've been
looking at how we currently handle indexing and how we may extend the
indexing to encompass more complex needs.

First (for those not familiar with the code a little overview of the
current system.

All of the data objects in belts are expressed as java interfaces. For
most interfaces an immutable and mutable version exists (one with the
property getters the other with the property setters).

To index a object the indexer is passed the objects immutable interface
and the object instance to index. The indexer inspects the object and
finds its simple properties (for example the users given and family names)
and adds them to a lucene document that is placed in the index.

When a search is performed the index creates a proxy object that obeys the
immutable interface definition but is backed buy the information in the
lucene index.

This is working very well and is highly suited to the majority of simple
flat object searches we do. An issue arises though when we want to do more
complex searches based on the metadatas XML representation. What we want
there is a facility to match based on xpath expressions.

Enter exist (http://exist.sourceforge.net/). Exist is a native XML
datastore that allows you to locate stored documents that match a given
xpath expression (actually the xpath string matching is extended to allow
much stronger string matching, see
http://exist.sourceforge.net/xpath.html). Some rough initial tests show
that the matching speed is well within our tolerance levels (sub second
response times with a 10,000 document repository, three concurrent
clients).

As a bonus a exist jboss mbean service already exists :) so integration
into the server environment is eased.

Thoughts?

-k.

-- 
If you don't test then your code is only a collection of bugs which 
apparently behave like a working program. 

Website: http://www.rocketred.com.au/blogs/kevin/




-------------------------------------------------------
This SF.net email is sponsored by:
The Definitive IT and Networking Event. Be There!
NetWorld+Interop Las Vegas 2003 -- Register today!
http://ads.sourceforge.net/cgi-bin/redirect.pl?keyn0001en