lenya-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andreas Hartmann <andr...@apache.org>
Subject Re: API for document search
Date Fri, 04 Apr 2008 14:46:27 GMT
Andreas Hartmann schrieb:
> Hi Lenya users,
> 
> I'd like to hear about your opinions regarding the search capabilities 
> Lenya should provide.

I have prepared a first draft for the search API:

http://lenya.zones.apache.org/drafts/searchapi/

Any questions and comments are very welcome. In my sandbox I also have a 
Lucene-based implementation which I'm testing at the moment.

-- Andreas


> 
> I have the requirement that it should be possible to issue a search for 
> documents from every Java service. For this purpose, I'd like to 
> introduce a service interface, e.g. DocumentSearcher, with a method that 
> returns a list of hits. But I'm not sure about the method signature yet. 
> IMO it has to be something like
> 
>   Hits find(Index index, Query query)
> 
> Should we abstract away Lucene, or should we just use the Lucene classes 
> Hits and Query? If we introduce our own hits interface, e.g. 
> DocumentHits, it would be easier to obtain the document from a hit:
> 
>   o.a.l.cms.publication.Document doc = hit.getDocument();
> 
> Otherwise, a helper would be needed:
> 
>   o.a.l.cms.publication.Document doc = searcher.getDocument(hit);
> 
> IMO the first version is preferrable.
> 
> The same question applies to the Query. That mainly depends on how we 
> want to build queries. If we use the Lucene Query interface, we could
> 
> a) use subclasses, e.g. MetaDataQuery (IMO preferrable)
> b) use helpers, e.g. SearchUtil.buildMetaDataQuery(…)
> 
> If we introduce our own Query syntax, things might become more 
> complicated. Another option would be to use just query strings, but this 
> requires us to define a syntax. Or we could just use the Lucene query 
> parser syntax. The signature would then be
> 
>   Hits find(Index index, String queryString)
> 
> 
> BTW, JCR uses the following API:
> 
>   QueryManager queryManager = workspace.getQueryManager();
> 
>   Query xPathQuery = queryManager.createQuery("//*", Query.XPATH);
>   Query sqlQuery = queryManager.createQuery("select * …", Query.SQL);
> 
>   QueryResult result = xPathQuery.execute();
> 
> 
> WDYT?
> 
> -- Andreas
> 


-- 
Andreas Hartmann, CTO
BeCompany GmbH
http://www.becompany.ch
Tel.: +41 (0) 43 818 57 01


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@lenya.apache.org
For additional commands, e-mail: user-help@lenya.apache.org


Mime
View raw message