Sergiu,

I've done a LuceneIndexProfile that's quite different from your  
description:
   
http://svn.activemath.org/intergeo/Platform/i2gCurriki/plugins/lucene/src/main/java/com/xpn/xwiki/plugin/lucene/LuceneIndexProfile.java

The idea of this interface is that it is given to the IndexUpdater and  
data-objects so that they query how to best index, how to best ignore  
documents or fields (important for memory usage limitation), and maybe  
for custom indexing strategy.

I am not sure I grasp your cascade proposal. Which steps would it  
involve?
Sure I could migrate this strategy to "abstract entities" as you  
describe them but I am making this for i2geo.net which runs the  
curriki 1.8 branch which uses xwiki 1.5.4... so i need to be somewhat  
long backwards compatible.

thanks

paul

PS: when I said central-field I meant an XWikiPrefererence field  
similar to the Notification field: a reference to a groovy page  
containing a class implementing the given interface. I would love to  
use this for the lucene-index-profile custom class (for now I'd just  
need to call the setter within the first-called-page).


Le 31-janv.-10 à 20:32, Sergiu Dumitriu a écrit :
>> Probably the nicest way I see this would be the way the notifications
>> are done: a central field indicates the page of a groovy source which
>> should implement such an interface as "LuceneIndexProfile" which  
>> would
>> add such questions (maybe even including some more such as the Data
>> classes).
> I'm not sure I understood your approach, could you explain it in more
> detail? What do you mean by "central field"?
>
>
> The way I see it, each indexed field will have a reference, given by
> some coordinates (this is related to the thread about object and
> properties references), such as
> "wiki:Space.Document^classname[index].property". There should be a
> collection of filters (components implementing LuceneIndexFilter)  
> which
> have the following method:
>
> boolean filter(Reference entity, LuceneIndexProfile profile);
>
> The meaning is the following:
> - entity is the entity to process (could be a document, an object
> property, an attachment)
> - profile is the indexing profile built by the filters, initialized  
> with
> some default values in the Lucene Plugin, and modified by the  
> filters as
> it passes through them
> - returning true means that the filtering process should stop, since  
> the
> current filter decided that the profile is ready (for example if a
> filter decided that the document should not be indexed due to security
> restrictions, then it's useless to run all the other filters); by
> default filters return false, letting the other filters to adjust the
> profile
> - each filter looks at the reference and, based on some internal  
> rules,
> decides if it should alter the filter for this entity, and if it
> considers that no more filtering is useful/needed
>
> After the filtering is done, the plugin indexes (or not) the entity
> according to the values in the profile.
>
> This means that we could have several components affecting the Lucene
> behavior, each one with particular goals in mind (security,  
> performance,
> searchability), and each one with its own configuration.
>
>
> So, what needs to be done (except writing the code) is define the
> possible settings in the LuceneIndexProfile, define the filters  
> needed,
> decide how to configure them. XML files on the server are an option,  
> but
> one not flexible enough. Maybe objects inside the wiki will give more
> flexibility to application developers. So, another thing to do is  
> decide
> the fields needed in such a class.
>
> Of course, if somebody needs a new filter, it's easy to add a new  
> jar or
> write a new Groovy page in the wiki.
>
> -- 
> Sergiu Dumitriu
> http://purl.org/net/sergiu/
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to