[ 
https://issues.apache.org/jira/browse/LUCENE-8489?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Namgyu Kim updated LUCENE-8489:
-------------------------------
    Description: 
Currently, Reader based on BaseCompositeReader(MultiReader, 
ParallelCompositeReader, DirectoryReader) does not support List type 
constructor.

In fact, this does not make a big difference in performance, but users will 
think positively if the API supports more variants.

I will add the following to support this.

1) MultiReader
{code:java}
public MultiReader(List<IndexReader> subReaders) throws IOException {
  this(subReaders, true);
}

public MultiReader(List<IndexReader> subReaders, boolean closeSubReaders) 
throws IOException {
  this((IndexReader[]) subReaders.toArray(), closeSubReaders);
}
{code}
2) ParallelCompositeReader
{code:java}
public ParallelCompositeReader(List<CompositeReader> readers) throws 
IOException {
  this(true, readers);
}

public ParallelCompositeReader(boolean closeSubReaders, List<CompositeReader> 
readers) throws IOException {
  this(closeSubReaders, readers, readers);
}

public ParallelCompositeReader(boolean closeSubReaders, List<CompositeReader> 
readers, List<CompositeReader> storedFieldReaders) throws IOException {
  this(closeSubReaders, (CompositeReader[]) readers.toArray(), 
(CompositeReader[]) storedFieldReaders.toArray());
}
{code}
3) DirectoryReader
{code:java}
protected DirectoryReader(Directory directory, List<LeafReader> segmentReaders) 
throws IOException {
  super(segmentReaders);
  this.directory = directory;
}
{code}
4) BaseCompositeReader
{code:java}
@SuppressWarnings("unchecked")
protected BaseCompositeReader(List<R> subReaders) throws IOException {
  this((R[]) subReaders.toArray());
}
{code}
5) Test
 I plan to write a test case in "TestParallelCompositeReader".
 After write the test case, I will upload the patch.

 

If you have any questions or requests, please left any comments :D

  was:
Currently, Reader based on BaseCompositeReader(MultiReader, 
ParallelCompositeReader, DirectoryReader) does not support List type 
constructor.

In fact, this does not make a big difference in performance, but users will 
think positively if the API supports more variants.

I will modify the following to support this.

1) MultiReader
{code:java}
public MultiReader(List<IndexReader> subReaders) throws IOException {
  this(subReaders, true);
}

public MultiReader(List<IndexReader> subReaders, boolean closeSubReaders) 
throws IOException {
  this((IndexReader[]) subReaders.toArray(), closeSubReaders);
}
{code}
2) ParallelCompositeReader
{code:java}
public ParallelCompositeReader(List<CompositeReader> readers) throws 
IOException {
  this(true, readers);
}

public ParallelCompositeReader(boolean closeSubReaders, List<CompositeReader> 
readers) throws IOException {
  this(closeSubReaders, readers, readers);
}

public ParallelCompositeReader(boolean closeSubReaders, List<CompositeReader> 
readers, List<CompositeReader> storedFieldReaders) throws IOException {
  this(closeSubReaders, (CompositeReader[]) readers.toArray(), 
(CompositeReader[]) storedFieldReaders.toArray());
}
{code}
3) DirectoryReader
{code:java}
protected DirectoryReader(Directory directory, List<LeafReader> segmentReaders) 
throws IOException {
  super(segmentReaders);
  this.directory = directory;
}
{code}
4) BaseCompositeReader
{code:java}
@SuppressWarnings("unchecked")
protected BaseCompositeReader(List<R> subReaders) throws IOException {
  this((R[]) subReaders.toArray());
}
{code}
5) Test
 I plan to write a test case in "TestParallelCompositeReader".
 After write the test case, I will upload the patch.

 

If you have any questions or requests, please left any comments :D


> Provide List type constructors for BaseCompositeReader based Readers
> --------------------------------------------------------------------
>
>                 Key: LUCENE-8489
>                 URL: https://issues.apache.org/jira/browse/LUCENE-8489
>             Project: Lucene - Core
>          Issue Type: Improvement
>          Components: core/index
>            Reporter: Namgyu Kim
>            Priority: Major
>              Labels: usability
>
> Currently, Reader based on BaseCompositeReader(MultiReader, 
> ParallelCompositeReader, DirectoryReader) does not support List type 
> constructor.
> In fact, this does not make a big difference in performance, but users will 
> think positively if the API supports more variants.
> I will add the following to support this.
> 1) MultiReader
> {code:java}
> public MultiReader(List<IndexReader> subReaders) throws IOException {
>   this(subReaders, true);
> }
> public MultiReader(List<IndexReader> subReaders, boolean closeSubReaders) 
> throws IOException {
>   this((IndexReader[]) subReaders.toArray(), closeSubReaders);
> }
> {code}
> 2) ParallelCompositeReader
> {code:java}
> public ParallelCompositeReader(List<CompositeReader> readers) throws 
> IOException {
>   this(true, readers);
> }
> public ParallelCompositeReader(boolean closeSubReaders, List<CompositeReader> 
> readers) throws IOException {
>   this(closeSubReaders, readers, readers);
> }
> public ParallelCompositeReader(boolean closeSubReaders, List<CompositeReader> 
> readers, List<CompositeReader> storedFieldReaders) throws IOException {
>   this(closeSubReaders, (CompositeReader[]) readers.toArray(), 
> (CompositeReader[]) storedFieldReaders.toArray());
> }
> {code}
> 3) DirectoryReader
> {code:java}
> protected DirectoryReader(Directory directory, List<LeafReader> 
> segmentReaders) throws IOException {
>   super(segmentReaders);
>   this.directory = directory;
> }
> {code}
> 4) BaseCompositeReader
> {code:java}
> @SuppressWarnings("unchecked")
> protected BaseCompositeReader(List<R> subReaders) throws IOException {
>   this((R[]) subReaders.toArray());
> }
> {code}
> 5) Test
>  I plan to write a test case in "TestParallelCompositeReader".
>  After write the test case, I will upload the patch.
>  
> If you have any questions or requests, please left any comments :D



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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

Reply via email to