[ https://issues.apache.org/jira/browse/SOLR-5730?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15117693#comment-15117693 ]
Christine Poerschke commented on SOLR-5730: ------------------------------------------- bq. solrconfig.xml to support something like a <mergepolicy> element which will allow you to define a nested MP. I also had noticed the similarity between the with-class-attribute {{sortMerges}} element and the existing {{mergePolicy}} element. The elements within a {{mergePolicy}} currently can be only primitive elements and mergePolicy-within-mergePolicy elements might be confusing from a users perspective? \\ \\ ---- \\ If we want wrapper merge policies support then I would instead favour 'chaining' instead of 'nesting' of the solrconfig.xml elements, for example: {code} <indexConfig> <mergePolicy class="org.apache.lucene.index.TieredMergePolicy"> <int name="segmentsPerTier">42</int> </mergePolicy> <mergePolicy class="org.apache.lucene.index.SortingMergePolicy"> <str name="sort">timestamp desc</str> </mergePolicy> </indexConfig> {code} SolrIndexConfig.java code outline: {code} private MergePolicy buildMergePolicyChain(IndexSchema schema) { MergePolicy policy = null; for (PluginInfo mergePolicyInfo : mergePolicyInfos) { String mpClassName = mergePolicyInfo.className; Class<?> mpClass = schema.getResourceLoader().findClass(mpClassName, MergePolicy.class); NamedList initArgs = mergePolicyInfo.initArgs; if (LogMergePolicy.class.isAssignableFrom(mpClass)) { LogMergePolicy logMergePolicy = schema.getResourceLoader().newInstance(mpClassName, LogMergePolicy.class); // ... policy = logMergePolicy; } else if (TieredMergePolicy.class.isAssignableFrom(mpClass)) { TieredMergePolicy tieredMergePolicy = schema.getResourceLoader().newInstance(mpClassName, TieredMergePolicy.class); // ... policy = tieredMergePolicy; } else if (SortingMergePolicy.class.isAssignableFrom(mpClass)) { // clone initArgs so that we can remove the 'sort' element initArgs = mergePolicyInfo.initArgs.clone(); final Object sortArg = initArgs.remove("sort"); // now parse the 'sort' element final Sort mergeSort = SortSpecParsing.parseSortSpec((String)sortArg, schema).getSort(); // then construct the sorting merge policy log.info("Using {}(policy={},mergeSort={})", mpClassName, policy, mergeSort); SortingMergePolicy sortingMergePolicy = schema.getResourceLoader().newInstance(mpClassName, SortingMergePolicy.class, null, new Class[] { MergePolicy.class, Sort.class }, new Object[] { policy, mergeSort }); policy = sortingMergePolicy; } else { policy = schema.getResourceLoader().newInstance(mpClassName, MergePolicy.class); } SolrPluginUtils.invokeSetters(policy, initArgs); } return policy; } {code} > make Lucene's SortingMergePolicy and EarlyTerminatingSortingCollector > configurable in Solr > ------------------------------------------------------------------------------------------ > > Key: SOLR-5730 > URL: https://issues.apache.org/jira/browse/SOLR-5730 > Project: Solr > Issue Type: New Feature > Reporter: Christine Poerschke > Assignee: Christine Poerschke > Priority: Minor > Attachments: SOLR-5730-part1of2.patch, SOLR-5730-part1of2.patch, > SOLR-5730-part2of2.patch, SOLR-5730-part2of2.patch > > > *Example configuration (solrconfig.xml):* > {noformat} > <sortMerges enable="true"> > <str name="sort">timestamp desc</str> > </sortMerges> > {noformat} > *Example use (EarlyTerminatingSortingCollector):* > {noformat} > &sort=timestamp+desc&segmentTerminateEarly=true > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org