Hello Max,
an implementation of IndexStore has a getBasicExpressionFactory(). Depending on how the index store is registered (as propertiesindexer or contentindexer) the index store the expression factory must be able to handle the <DAV:contains> expression for content or all the other for properties searching.
The LuceneExpressionFactory (in 2.2) translates dasl basicsearch queries to lucene expressions. But consider that the translation is done with respect to the structure of the lucene index that the LuceneContentIndexer/LucenePropertiesIndexer creates, i.e. how property names are mapped to lucene fields etc. So if you are using LuceneContentIndexer/LucenePropertiesIndexer or equivaliant to create the index you can use LuceneExpressionFactory, otherwise I think you have to write your own expression factory and return it from your index store implementation.
Regarding the ACL evaluation there is no progress. In 2.2 the result of a lucene based query (and other queries to) is scanned sequentially, and for each resource found, the permissions are checked.
The problem with Lucene filters will be, to calculate an independend data structure (to transform it to a bit set) that represents the permissions in your namespace.
If youo have any ideas on this field, I'm really interested to hear about.
Regards, Stefan
Max Pfingsthorn wrote:
Hello Devs,
I am very interested in the new meta-data search using lucene in 2.2. In our production environment, we have one slide instance serve 10+ namespaces, some counting more than 100.000 documents, all using the JDBCStore. Unfortunately, the DASL searches take a long time on these contexts (especially using <d:contains>), while a lucene search alone would be much faster. Since we use slide 2.1-final in our environment and 2.2 is not mature enough for us, I would like to use the new search implementation in our 2.1 installation.
We already have our custom IndexStore implementation, so my question is where to hook up the LuceneExpressionFactory. I am generally a bit lost on how exactly the IBasicExpressionFactory instance is obtained during the evaluation of the SearchMethod and IBasicQueryImpl. Is it enough if our IndexStore implementation returns a LuceneExpressionFactory instead of a TextContainsExpressionFactory? Any tips would be highly appreciated.
Another problem of us are the ACLs and their evaluation while searching. Is there any progress on this? I was thinking that a lucene implementation may use Filters (http://lucene.apache.org/java/docs/api/org/apache/lucene/search/Filter.html) representing the user's effective privilege set (mainly 'read', I guess) on all documents, which may be cached and therefore quite efficient. Any ideas?
Thanks in advance for your help!
Best regards,
Max Pfingsthorn
Hippo
Oosteinde 11 1017WT Amsterdam The Netherlands Tel +31 (0)20 5224466 ------------------------------------------------------------- [EMAIL PROTECTED] / www.hippo.nl --------------------------------------------------------------
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
-- Stefan L�tzkendorf -- [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
