I would like to know into what direction Alfresco is steering in future releases as far as a "general query language" for searching the repository is concerned?
We have been working intensively with Alfresco for 3 month and have been impressed by the many features that Alfresco's repository architecture offers. The only repository area where we have run into problems is the query/search services, and I would like to share our experiences – in the hope that this serves as feedback to the Alfresco development team and maybe brings together wishes from other Alfresco users.
What we would have needed is a programmatical query method that is
(a) very fast, and (b) provides features similar to the ones available in SQL.
Currently, Alfresco provides Lucene, XPath, and selectnodes to perform queries against the repository. The latter two are often rather slow, if you compare their performance to a simple SQL-based application that runs the query using SQL. Try for instance to find all values of a property using selectnode's "//@myroperty" – it takes rather long.
Lucene on the other hand only provides a restricted feature set and does not, I feel, qualify as a full "query language". For instance, you cannot search for all nodes whose date property my:d1 is smaller than date property my:d2.
If a future version of Alfresco can provide a very fast and moderately feature-rich query language, Alfresco would, in my opinion, be very, very widely applicable and would be an even more powerful product than it is now. A fast query language is, in my opinion, also very much needed to successfully position Alfresco in the web-world: features like AJAX require results in ms and the competition is using very simple MySQL-applications that can benefit from SQL, its expression power and indexing capabilities.
The Alfresco wiki provides someinformation on query languages but these notes are probably outdated (?). I would be very interested in more concrete plans!
See http://wiki.alfresco.com/wiki/CMIS. The draft specification is referenced from this page, where you will find the spec for the SQL 92 based query language.
The first cut implemenation is there. Compared with SQL there will be some short term oddities as we use tokenised versions of strings. So you may not get the exact match and ordering behaviour you may expect. This will be tidied up in later releases.