[ 
https://issues.apache.org/jira/browse/LUCENE-4560?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13500050#comment-13500050
 ] 

Shai Erera commented on LUCENE-4560:
------------------------------------

I don't see why you need to gradually migrate segments, rather than a one-off 
thing that you do when you decide to change the format of the index.

Is it really important to do this gradually? Or if there was a tool which 
allowed you to do an in-place upgrade of certain segments, that would be 
something to consider?
For instance, you can do something similar to:

{code}
Directory dir; // directory with indexed documents
IndexWriter writer; // your instance of IndexWriter
IndexReader r = YourIndexReader.open(dir);
writer.deleteAll();
writer.addIndexes(r);
writer.commit();
{code}

This is all transactional, so until you commit, searches don't see any of this 
work.

Note however that while it's seemingly done in-place, you need to copy all the 
segments, even if they don't need to be upgraded.

I guess that I just can't think of a good reason to do a gradual upgrade of 
segments. Whenever I had to upgrade old indexes, it was done as a one-off 
process and that's it. E.g. IndexUpgrader is such a tool -- upgrades the index 
in place.

Having said that, if others think that it might be useful to let one extend 
e.g. IndexWriter by providing different instances than SegmentReader 
(hard-coded in IW), then I prefer that route to the MergedSegmentFilter. Today 
it's SegmentMerger, tomorrow it will be something else. If we want to handle 
it, let's handle it from the root. SegmentMerger itself really has nothing to 
do with filtering readers. That way, you could write something like 
IndexUpgrader (or UpgradeMergePolicy) and upgrade the index as a one-off 
process, in place, touching only needed segments.
                
> Support Filtering Segments During Merge
> ---------------------------------------
>
>                 Key: LUCENE-4560
>                 URL: https://issues.apache.org/jira/browse/LUCENE-4560
>             Project: Lucene - Core
>          Issue Type: Improvement
>            Reporter: Tim Smith
>         Attachments: LUCENE-4560.patch
>
>
> Spun off from LUCENE-4557
> It is desirable to be able to filter segments during merge.
> Most often, full reindex of content is not possible.
> Merging segments can sometimes have negative consequences when fields are 
> have different options (most restrictive option is forced during merge)
> Being able to filter segments during merges will allow gradually migrating 
> indexed data to new index settings, support pruning/enhancing existing data 
> gradually
> Use Cases:
> * Migrate IndexOptions for fields (See LUCENE-4557)
> * Gradually Remove index fields no longer used
> * Migrate indexed sort fields to DocValues
> * Support converting data types for indexed data
> * and so on
> patch will be forthcoming

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to