Example usage for org.apache.lucene.index IndexReader close

List of usage examples for org.apache.lucene.index IndexReader close

Introduction

In this page you can find the example usage for org.apache.lucene.index IndexReader close.

Prototype

@Override
public final synchronized void close() throws IOException 

Source Link

Document

Closes files associated with this index.

Usage

From source file:org.alfresco.repo.search.impl.lucene.index.IndexInfo.java

License:Open Source License

public void destroyInstance() {
    getWriteLock();/*from  www  . j a v  a  2  s  .  c  o m*/
    try {
        if (mainIndexReader != null) {
            try {
                ((ReferenceCounting) mainIndexReader).setInvalidForReuse();
            } catch (IOException e) {
                // OK filed to close
            }
            mainIndexReader = null;

            for (IndexReader reader : referenceCountingReadOnlyIndexReaders.values()) {
                ReferenceCounting referenceCounting = (ReferenceCounting) reader;
                try {
                    referenceCounting.setInvalidForReuse();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }

        for (IndexReader reader : indexReaders.values()) {
            try {
                reader.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        indexReaders.clear();

        for (IndexWriter writer : indexWriters.values()) {
            try {
                writer.close();
            } catch (CorruptIndexException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        indexWriters.clear();

        if (indexInfoRAF != null) {
            try {
                indexInfoRAF.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        if (indexInfoBackupRAF != null) {
            try {
                indexInfoBackupRAF.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        // TODO: should set some running flag .... to abort ungoing stuff
        // at the moment it will die ungracefully ....
    } finally {
        releaseWriteLock();
    }
}

From source file:org.alfresco.repo.search.impl.lucene.index.IndexInfo.java

License:Open Source License

/**
 * Manage closing and unregistering an index reader.
 * /*  w  ww  .  ja v a2 s . c om*/
 * @param id String
 * @throws IOException
 */
public void closeDeltaIndexReader(String id) throws IOException {
    if (id == null) {
        throw new IndexerException("\"null\" is not a valid identifier for a transaction");
    }

    // No lock required as the delta applied to one thread. The delta is
    // still active.
    IndexReader reader = indexReaders.remove(id);
    if (reader != null) {
        reader.close();
    }
}

From source file:org.alfresco.repo.search.impl.lucene.index.IndexInfo.java

License:Open Source License

public int getNumberOfDocuments() throws IOException {
    IndexReader reader = getMainIndexReferenceCountingReadOnlyIndexReader();
    try {/*from   ww  w . j  av  a  2 s  .  com*/
        return reader.numDocs();
    } finally {
        reader.close();
    }
}

From source file:org.alfresco.repo.search.impl.lucene.index.IndexInfo.java

License:Open Source License

public int getNumberOfFields() throws IOException {

    IndexReader reader = getMainIndexReferenceCountingReadOnlyIndexReader();
    try {//ww w  .  j  a  v a2s. co  m
        return reader.getFieldNames(IndexReader.FieldOption.ALL).size();
    } finally {
        reader.close();
    }
}

From source file:org.alfresco.repo.search.impl.lucene.index.IndexInfo.java

License:Open Source License

public int getNumberOfIndexedFields() throws IOException {
    IndexReader reader = getMainIndexReferenceCountingReadOnlyIndexReader();
    try {//w ww.  ja  v a2 s .c om
        return reader.getFieldNames(IndexReader.FieldOption.INDEXED).size();
    } finally {
        reader.close();
    }
}

From source file:org.alfresco.repo.search.impl.lucene.index.IndexInfoTest.java

License:Open Source License

public void testCreateAndSearch() throws IOException {
    System.setProperty("disableLuceneLocks", "true");

    // no deletions - create only
    HashSet<String> deletions = new HashSet<String>();
    for (int i = 0; i < 0; i++) {
        deletions.add(new NodeRef(new StoreRef("woof", "bingle"), GUID.generate()).toString());
    }//  w  w  w  . j  av a 2s  .  co m

    File tempLocation = TempFileProvider.getTempDir();
    File testArea = new File(tempLocation, "IndexInfoTest");
    File testDir = new File(testArea, "" + System.currentTimeMillis());
    final IndexInfo ii = IndexInfo.getIndexInfo(testDir, null);

    for (int i = 0; i < WORD_LIST.length; i++) {
        IndexReader reader = ii.getMainIndexReferenceCountingReadOnlyIndexReader();
        assertEquals(reader.numDocs(), i);
        reader.close();

        String guid = GUID.generate();
        ii.setStatus(guid, TransactionStatus.ACTIVE, null, null);
        IndexWriter writer = ii.getDeltaIndexWriter(guid, new AlfrescoStandardAnalyser());

        Document doc = new Document();
        for (int k = 0; k < 15; k++) {
            doc.add(new Field("ID" + k, guid, Field.Store.NO, Field.Index.UN_TOKENIZED, Field.TermVector.NO));
        }
        doc.add(new Field("TEXT", WORD_LIST[i], Field.Store.NO, Field.Index.UN_TOKENIZED, Field.TermVector.NO));
        writer.addDocument(doc);

        ii.closeDeltaIndexWriter(guid);
        ii.setStatus(guid, TransactionStatus.PREPARING, null, null);
        ii.setPreparedState(guid, deletions, Collections.<String>emptySet(), 1, false);
        ii.getDeletions(guid);
        ii.setStatus(guid, TransactionStatus.PREPARED, null, null);

        reader = ii.getMainIndexReferenceCountingReadOnlyIndexReader();
        assertEquals(reader.numDocs(), i);
        for (int j = 0; j < WORD_LIST.length; j++) {
            TermDocs tds = reader.termDocs(new Term("TEXT", WORD_LIST[j]));
            if (j < i) {
                assertTrue(tds.next());
                assertEquals(tds.doc(), j);
            } else {
                assertFalse(tds.next());
            }
            tds.close();
        }
        reader.close();

        reader = ii.getMainIndexReferenceCountingReadOnlyIndexReader(guid, deletions,
                Collections.<String>emptySet(), false);
        assertEquals(reader.numDocs(), i + 1);
        for (int j = 0; j < WORD_LIST.length; j++) {
            TermDocs tds = reader.termDocs(new Term("TEXT", WORD_LIST[j]));
            if (j <= i) {
                assertTrue(tds.next());
                assertEquals(tds.doc(), j);
            } else {
                assertFalse(tds.next());
            }
            tds.close();
        }
        reader.close();

        ii.setStatus(guid, TransactionStatus.COMMITTING, null, null);
        ii.setStatus(guid, TransactionStatus.COMMITTED, null, null);

        reader = ii.getMainIndexReferenceCountingReadOnlyIndexReader();
        assertEquals(reader.numDocs(), i + 1);
        for (int j = 0; j < WORD_LIST.length; j++) {
            TermDocs tds = reader.termDocs(new Term("TEXT", WORD_LIST[j]));
            if (j <= i) {
                assertTrue(tds.next());
                assertEquals(tds.doc(), j);
            } else {
                assertFalse(tds.next());
            }
            tds.close();
        }
        reader.close();

    }

}

From source file:org.alfresco.repo.search.impl.lucene.index.IndexInfoTest.java

License:Open Source License

public void testCreateDeleteAndSearch() throws IOException {
    assertEquals(CREATE_LIST.length, UPDATE_LIST.length);

    StoreRef storeRef = new StoreRef("woof", "bingle");

    System.setProperty("disableLuceneLocks", "true");

    // no deletions - create only
    ArrayList<NodeRef> nodeRefs = new ArrayList<NodeRef>();

    File tempLocation = TempFileProvider.getTempDir();
    File testArea = new File(tempLocation, "IndexInfoTest");
    File testDir = new File(testArea, "" + System.currentTimeMillis());
    final IndexInfo ii = IndexInfo.getIndexInfo(testDir, null);

    for (int i = 0; i < CREATE_LIST.length; i++) {
        IndexReader reader = ii.getMainIndexReferenceCountingReadOnlyIndexReader();
        assertEquals(reader.numDocs(), i);
        reader.close();

        String guid = GUID.generate();
        ii.setStatus(guid, TransactionStatus.ACTIVE, null, null);
        IndexWriter writer = ii.getDeltaIndexWriter(guid, new AlfrescoStandardAnalyser());

        Document doc = new Document();
        for (int k = 0; k < 15; k++) {
            doc.add(new Field("ID" + k, guid, Field.Store.NO, Field.Index.UN_TOKENIZED, Field.TermVector.NO));
        }/*from   w w  w  . j av a 2  s .  c om*/
        doc.add(new Field("TEXT", CREATE_LIST[i], Field.Store.NO, Field.Index.UN_TOKENIZED,
                Field.TermVector.NO));
        NodeRef nodeRef = new NodeRef(storeRef, GUID.generate());
        nodeRefs.add(nodeRef);
        doc.add(new Field("ID", nodeRef.toString(), Field.Store.NO, Field.Index.UN_TOKENIZED,
                Field.TermVector.NO));
        writer.addDocument(doc);

        ii.closeDeltaIndexWriter(guid);

        ii.setStatus(guid, TransactionStatus.PREPARING, null, null);
        ii.setPreparedState(guid, Collections.<String>emptySet(), Collections.<String>emptySet(), 1, false);
        ii.getDeletions(guid);
        ii.setStatus(guid, TransactionStatus.PREPARED, null, null);

        reader = ii.getMainIndexReferenceCountingReadOnlyIndexReader();
        assertEquals(reader.numDocs(), i);
        for (int j = 0; j < CREATE_LIST.length; j++) {
            TermDocs tds = reader.termDocs(new Term("TEXT", CREATE_LIST[j]));
            if (j < i) {
                assertTrue(tds.next());
                assertEquals(tds.doc(), j);
            } else {
                assertFalse(tds.next());
            }
            tds.close();
        }
        reader.close();

        reader = ii.getMainIndexReferenceCountingReadOnlyIndexReader(guid, Collections.<String>emptySet(),
                Collections.<String>emptySet(), false);
        assertEquals(reader.numDocs(), i + 1);
        for (int j = 0; j < CREATE_LIST.length; j++) {
            TermDocs tds = reader.termDocs(new Term("TEXT", CREATE_LIST[j]));
            if (j <= i) {
                assertTrue(tds.next());
                assertEquals(tds.doc(), j);
            } else {
                assertFalse(tds.next());
            }
            tds.close();
        }
        reader.close();

        ii.setStatus(guid, TransactionStatus.COMMITTING, null, null);
        ii.setStatus(guid, TransactionStatus.COMMITTED, null, null);

        reader = ii.getMainIndexReferenceCountingReadOnlyIndexReader();
        assertEquals(reader.numDocs(), i + 1);
        for (int j = 0; j < CREATE_LIST.length; j++) {
            TermDocs tds = reader.termDocs(new Term("TEXT", CREATE_LIST[j]));
            if (j <= i) {
                assertTrue(tds.next());
                assertEquals(tds.doc(), j);
            } else {
                assertFalse(tds.next());
            }
            tds.close();
        }
        reader.close();

    }

    for (int i = 0; i < CREATE_LIST.length; i++) {
        HashSet<String> deletions = new HashSet<String>();
        deletions.add(nodeRefs.get(i).toString());

        IndexReader reader = ii.getMainIndexReferenceCountingReadOnlyIndexReader();
        assertEquals(reader.numDocs(), CREATE_LIST.length - i);
        reader.close();

        String guid = GUID.generate();
        ii.setStatus(guid, TransactionStatus.ACTIVE, null, null);
        ii.closeDeltaIndexWriter(guid);
        ii.setStatus(guid, TransactionStatus.PREPARING, null, null);
        ii.setPreparedState(guid, deletions, Collections.<String>emptySet(), 1, false);
        ii.getDeletions(guid);
        ii.setStatus(guid, TransactionStatus.PREPARED, null, null);

        reader = ii.getMainIndexReferenceCountingReadOnlyIndexReader();
        assertEquals(reader.numDocs(), CREATE_LIST.length - i);
        int lastDoc = -1;
        for (int j = 0; j < CREATE_LIST.length; j++) {
            TermDocs tds = reader.termDocs(new Term("TEXT", CREATE_LIST[j]));
            if (j >= i) {
                assertTrue(tds.next());
                assertTrue(tds.doc() > lastDoc);
                lastDoc = tds.doc();
            } else {
                assertFalse(tds.next());
            }
            tds.close();
        }
        reader.close();

        reader = ii.getMainIndexReferenceCountingReadOnlyIndexReader(guid, deletions,
                Collections.<String>emptySet(), false);
        assertEquals(reader.numDocs(), UPDATE_LIST.length - i - 1);
        lastDoc = -1;
        for (int j = 0; j < CREATE_LIST.length; j++) {
            TermDocs tds = reader.termDocs(new Term("TEXT", CREATE_LIST[j]));
            if (j > i) {
                assertTrue(tds.next());
                assertTrue(tds.doc() > lastDoc);
                lastDoc = tds.doc();
            } else {
                assertFalse(tds.next());
            }
            tds.close();
        }

        reader.close();

        ii.setStatus(guid, TransactionStatus.COMMITTING, null, null);
        ii.setStatus(guid, TransactionStatus.COMMITTED, null, null);

        reader = ii.getMainIndexReferenceCountingReadOnlyIndexReader();
        assertEquals(reader.numDocs(), UPDATE_LIST.length - i - 1);
        lastDoc = -1;
        for (int j = 0; j < CREATE_LIST.length; j++) {
            TermDocs tds = reader.termDocs(new Term("TEXT", CREATE_LIST[j]));
            if (j > i) {
                assertTrue(tds.next());
                assertTrue(tds.doc() > lastDoc);
                lastDoc = tds.doc();
            } else {
                assertFalse(tds.next());
            }
            tds.close();
        }

        reader.close();

        IndexReader reader1 = ii.getMainIndexReferenceCountingReadOnlyIndexReader();
        IndexReader reader2 = ii.getMainIndexReferenceCountingReadOnlyIndexReader();
        IndexReader reader3 = ii.getMainIndexReferenceCountingReadOnlyIndexReader();
        reader3.close();
        reader2.close();
        reader1.close();

    }

}

From source file:org.alfresco.repo.search.impl.lucene.index.IndexInfoTest.java

License:Open Source License

public void testCreateUpdateAndSearch() throws IOException {
    assertEquals(CREATE_LIST.length, UPDATE_LIST.length);

    StoreRef storeRef = new StoreRef("woof", "bingle");

    System.setProperty("disableLuceneLocks", "true");

    // no deletions - create only
    ArrayList<NodeRef> nodeRefs = new ArrayList<NodeRef>();

    File tempLocation = TempFileProvider.getTempDir();
    File testArea = new File(tempLocation, "IndexInfoTest");
    File testDir = new File(testArea, "" + System.currentTimeMillis());
    final IndexInfo ii = IndexInfo.getIndexInfo(testDir, null);

    for (int i = 0; i < CREATE_LIST.length; i++) {
        IndexReader reader = ii.getMainIndexReferenceCountingReadOnlyIndexReader();
        assertEquals(reader.numDocs(), i);
        reader.close();

        String guid = GUID.generate();
        ii.setStatus(guid, TransactionStatus.ACTIVE, null, null);
        IndexWriter writer = ii.getDeltaIndexWriter(guid, new AlfrescoStandardAnalyser());

        Document doc = new Document();
        for (int k = 0; k < 15; k++) {
            doc.add(new Field("ID" + k, guid, Field.Store.NO, Field.Index.UN_TOKENIZED, Field.TermVector.NO));
        }// w  w w .ja v a 2 s .  c o  m
        doc.add(new Field("TEXT", CREATE_LIST[i], Field.Store.NO, Field.Index.UN_TOKENIZED,
                Field.TermVector.NO));
        NodeRef nodeRef = new NodeRef(storeRef, GUID.generate());
        nodeRefs.add(nodeRef);
        doc.add(new Field("ID", nodeRef.toString(), Field.Store.NO, Field.Index.UN_TOKENIZED,
                Field.TermVector.NO));
        writer.addDocument(doc);

        ii.closeDeltaIndexWriter(guid);
        ii.setStatus(guid, TransactionStatus.PREPARING, null, null);
        ii.setPreparedState(guid, Collections.<String>emptySet(), Collections.<String>emptySet(), 1, false);
        ii.getDeletions(guid);
        ii.setStatus(guid, TransactionStatus.PREPARED, null, null);

        reader = ii.getMainIndexReferenceCountingReadOnlyIndexReader();
        assertEquals(reader.numDocs(), i);
        for (int j = 0; j < CREATE_LIST.length; j++) {
            TermDocs tds = reader.termDocs(new Term("TEXT", CREATE_LIST[j]));
            if (j < i) {
                assertTrue(tds.next());
                assertEquals(tds.doc(), j);
            } else {
                assertFalse(tds.next());
            }
            tds.close();
        }
        reader.close();

        reader = ii.getMainIndexReferenceCountingReadOnlyIndexReader(guid, Collections.<String>emptySet(),
                Collections.<String>emptySet(), false);
        assertEquals(reader.numDocs(), i + 1);
        for (int j = 0; j < CREATE_LIST.length; j++) {
            TermDocs tds = reader.termDocs(new Term("TEXT", CREATE_LIST[j]));
            if (j <= i) {
                assertTrue(tds.next());
                assertEquals(tds.doc(), j);
            } else {
                assertFalse(tds.next());
            }
            tds.close();
        }
        reader.close();

        ii.setStatus(guid, TransactionStatus.COMMITTING, null, null);
        ii.setStatus(guid, TransactionStatus.COMMITTED, null, null);

        reader = ii.getMainIndexReferenceCountingReadOnlyIndexReader();
        assertEquals(reader.numDocs(), i + 1);
        for (int j = 0; j < CREATE_LIST.length; j++) {
            TermDocs tds = reader.termDocs(new Term("TEXT", CREATE_LIST[j]));
            if (j <= i) {
                assertTrue(tds.next());
                assertEquals(tds.doc(), j);
            } else {
                assertFalse(tds.next());
            }
            tds.close();
        }
        reader.close();

    }

    for (int i = 0; i < UPDATE_LIST.length; i++) {
        HashSet<String> deletions = new HashSet<String>();
        deletions.add(nodeRefs.get(i).toString());

        IndexReader reader = ii.getMainIndexReferenceCountingReadOnlyIndexReader();
        assertEquals(reader.numDocs(), UPDATE_LIST.length);
        reader.close();

        String guid = GUID.generate();
        ii.setStatus(guid, TransactionStatus.ACTIVE, null, null);
        IndexWriter writer = ii.getDeltaIndexWriter(guid, new AlfrescoStandardAnalyser());

        Document doc = new Document();
        for (int k = 0; k < 15; k++) {
            doc.add(new Field("ID" + k, guid, Field.Store.NO, Field.Index.UN_TOKENIZED, Field.TermVector.NO));
        }
        doc.add(new Field("TEXT", UPDATE_LIST[i], Field.Store.NO, Field.Index.UN_TOKENIZED,
                Field.TermVector.NO));
        writer.addDocument(doc);

        ii.closeDeltaIndexWriter(guid);
        ii.setStatus(guid, TransactionStatus.PREPARING, null, null);
        ii.setPreparedState(guid, deletions, Collections.<String>emptySet(), 1, false);
        ii.getDeletions(guid);
        ii.setStatus(guid, TransactionStatus.PREPARED, null, null);

        reader = ii.getMainIndexReferenceCountingReadOnlyIndexReader();
        assertEquals(reader.numDocs(), UPDATE_LIST.length);
        int lastDoc = -1;
        for (int j = 0; j < CREATE_LIST.length; j++) {
            TermDocs tds = reader.termDocs(new Term("TEXT", CREATE_LIST[j]));
            if (j >= i) {
                assertTrue(tds.next());
                assertTrue(tds.doc() > lastDoc);
                lastDoc = tds.doc();
            } else {
                assertFalse(tds.next());
            }
            tds.close();
        }
        for (int j = 0; j < UPDATE_LIST.length; j++) {
            TermDocs tds = reader.termDocs(new Term("TEXT", UPDATE_LIST[j]));
            if (j < i) {
                assertTrue(tds.next());
                assertTrue(tds.doc() > lastDoc);
                lastDoc = tds.doc();
            } else {
                assertFalse(tds.next());
            }
            tds.close();
        }
        reader.close();

        reader = ii.getMainIndexReferenceCountingReadOnlyIndexReader(guid, deletions,
                Collections.<String>emptySet(), false);
        assertEquals(reader.numDocs(), UPDATE_LIST.length);
        lastDoc = -1;
        for (int j = 0; j < CREATE_LIST.length; j++) {
            TermDocs tds = reader.termDocs(new Term("TEXT", CREATE_LIST[j]));
            if (j > i) {
                assertTrue(tds.next());
                assertTrue(tds.doc() > lastDoc);
                lastDoc = tds.doc();
            } else {
                assertFalse(tds.next());
            }
            tds.close();
        }
        for (int j = 0; j < UPDATE_LIST.length; j++) {
            TermDocs tds = reader.termDocs(new Term("TEXT", UPDATE_LIST[j]));
            if (j <= i) {
                assertTrue(tds.next());
                assertTrue(tds.doc() > lastDoc);
                lastDoc = tds.doc();
            } else {
                assertFalse(tds.next());
            }
            tds.close();
        }

        reader.close();

        ii.setStatus(guid, TransactionStatus.COMMITTING, null, null);
        ii.setStatus(guid, TransactionStatus.COMMITTED, null, null);

        reader = ii.getMainIndexReferenceCountingReadOnlyIndexReader();
        assertEquals(reader.numDocs(), UPDATE_LIST.length);
        lastDoc = -1;
        for (int j = 0; j < CREATE_LIST.length; j++) {
            TermDocs tds = reader.termDocs(new Term("TEXT", CREATE_LIST[j]));
            if (j > i) {
                assertTrue(tds.next());
                assertTrue(tds.doc() > lastDoc);
                lastDoc = tds.doc();
            } else {
                assertFalse(tds.next());
            }
            tds.close();
        }
        for (int j = 0; j < UPDATE_LIST.length; j++) {
            TermDocs tds = reader.termDocs(new Term("TEXT", UPDATE_LIST[j]));
            if (j <= i) {
                assertTrue(tds.next());
                assertTrue(tds.doc() > lastDoc);
                lastDoc = tds.doc();
            } else {
                assertFalse(tds.next());
            }
            tds.close();
        }
        reader.close();

    }

}

From source file:org.apache.blur.manager.writer.BlurIndexCloser.java

License:Apache License

private void closeInternal(final IndexReader reader) {
    if (reader.getRefCount() == 0) {
        // Already closed.
        return;/*from  www  .  j a  va2  s  .  c o m*/
    }
    executorService.submit(new Runnable() {
        @Override
        public void run() {
            try {
                long s = System.currentTimeMillis();
                reader.close();
                long e = System.currentTimeMillis();
                LOG.debug("Size [{0}] time to close [{1}] Closing indexreader [{2}].", readers.size(), (e - s),
                        reader);
            } catch (Exception e) {
                readers.add(reader);
                LOG.error("Error while trying to close indexreader [" + reader + "].", e);
            }
        }
    });
}

From source file:org.apache.clerezza.rdf.cris.LuceneTools.java

License:Apache License

/**
 * Returns a IndexSearcher//w w  w. j  a  v a2 s  . c  o m
 *
 */
public IndexSearcher getIndexSearcher() throws RuntimeException {
    //TODO make sure a current version is returned
    if (indexReader == null) {
        try {
            indexReader = DirectoryReader.open(indexDirectory);
            indexSearcher = new IndexSearcher(indexReader);
        } catch (IOException ex) {
            throw new RuntimeException(ex);
        }

    } else {
        try {
            DirectoryReader newReader = DirectoryReader.openIfChanged(indexReader);
            if (newReader != null) {
                final IndexReader oldReader = indexReader;
                indexReader = newReader;
                //would be better to use ScheduledThreadPoolExecutor
                new Thread() {

                    @Override
                    public void run() {
                        try {
                            Thread.sleep(1000);
                        } catch (InterruptedException ex) {
                            Thread.currentThread().interrupt();
                        }
                        try {
                            oldReader.close();
                        } catch (IOException ex) {
                            throw new RuntimeException(ex);
                        }
                    }

                };
            }
            indexSearcher = new IndexSearcher(indexReader);
        } catch (IOException ex) {
            throw new RuntimeException(ex);
        }
    }
    return indexSearcher;
}