⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testindexreader.java

📁 索引aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        // The reader should not see the new data        assertEquals("first docFreq", 100, reader.docFreq(searchTerm));        assertEquals("first docFreq", 0, reader.docFreq(searchTerm2));        assertTermDocsCount("first reader", reader, searchTerm, 100);        assertTermDocsCount("first reader", reader, searchTerm2, 0);        // DELETE DOCUMENTS CONTAINING TERM: aaa        // NOTE: the reader was created when only "aaa" documents were in        int deleted = 0;        try {            deleted = reader.delete(searchTerm);            fail("Delete allowed on an index reader with stale segment information");        } catch (IOException e) {            /* success */        }        // Re-open index reader and try again. This time it should see        // the new data.        reader.close();        reader = IndexReader.open(dir);        assertEquals("first docFreq", 100, reader.docFreq(searchTerm));        assertEquals("first docFreq", 100, reader.docFreq(searchTerm2));        assertTermDocsCount("first reader", reader, searchTerm, 100);        assertTermDocsCount("first reader", reader, searchTerm2, 100);        deleted = reader.delete(searchTerm);        assertEquals("deleted count", 100, deleted);        assertEquals("deleted docFreq", 100, reader.docFreq(searchTerm));        assertEquals("deleted docFreq", 100, reader.docFreq(searchTerm2));        assertTermDocsCount("deleted termDocs", reader, searchTerm, 0);        assertTermDocsCount("deleted termDocs", reader, searchTerm2, 100);        reader.close();        // CREATE A NEW READER and re-test        reader = IndexReader.open(dir);        assertEquals("deleted docFreq", 100, reader.docFreq(searchTerm));        assertEquals("deleted docFreq", 100, reader.docFreq(searchTerm2));        assertTermDocsCount("deleted termDocs", reader, searchTerm, 0);        assertTermDocsCount("deleted termDocs", reader, searchTerm2, 100);        reader.close();    }  private Directory getDirectory(boolean create) throws IOException {    return FSDirectory.getDirectory(new File(System.getProperty("tempDir"), "testIndex"), create);  }  public void testFilesOpenClose() throws IOException    {        // Create initial data set        Directory dir = getDirectory(true);        IndexWriter writer  = new IndexWriter(dir, new WhitespaceAnalyzer(), true);        addDoc(writer, "test");        writer.close();        dir.close();        // Try to erase the data - this ensures that the writer closed all files        dir = getDirectory(true);        // Now create the data set again, just as before        writer  = new IndexWriter(dir, new WhitespaceAnalyzer(), true);        addDoc(writer, "test");        writer.close();        dir.close();        // Now open existing directory and test that reader closes all files        dir = getDirectory(false);        IndexReader reader1 = IndexReader.open(dir);        reader1.close();        dir.close();        // The following will fail if reader did not close all files        dir = getDirectory(true);    }    public void testDeleteReaderReaderConflictUnoptimized() throws IOException{      deleteReaderReaderConflict(false);    }        public void testDeleteReaderReaderConflictOptimized() throws IOException{      deleteReaderReaderConflict(true);    }        private void deleteReaderReaderConflict(boolean optimize) throws IOException    {        Directory dir = getDirectory(true);        Term searchTerm1 = new Term("content", "aaa");        Term searchTerm2 = new Term("content", "bbb");        Term searchTerm3 = new Term("content", "ccc");        //  add 100 documents with term : aaa        //  add 100 documents with term : bbb        //  add 100 documents with term : ccc        IndexWriter writer  = new IndexWriter(dir, new WhitespaceAnalyzer(), true);        for (int i = 0; i < 100; i++)        {            addDoc(writer, searchTerm1.text());            addDoc(writer, searchTerm2.text());            addDoc(writer, searchTerm3.text());        }        if(optimize)          writer.optimize();        writer.close();        // OPEN TWO READERS        // Both readers get segment info as exists at this time        IndexReader reader1 = IndexReader.open(dir);        assertEquals("first opened", 100, reader1.docFreq(searchTerm1));        assertEquals("first opened", 100, reader1.docFreq(searchTerm2));        assertEquals("first opened", 100, reader1.docFreq(searchTerm3));        assertTermDocsCount("first opened", reader1, searchTerm1, 100);        assertTermDocsCount("first opened", reader1, searchTerm2, 100);        assertTermDocsCount("first opened", reader1, searchTerm3, 100);        IndexReader reader2 = IndexReader.open(dir);        assertEquals("first opened", 100, reader2.docFreq(searchTerm1));        assertEquals("first opened", 100, reader2.docFreq(searchTerm2));        assertEquals("first opened", 100, reader2.docFreq(searchTerm3));        assertTermDocsCount("first opened", reader2, searchTerm1, 100);        assertTermDocsCount("first opened", reader2, searchTerm2, 100);        assertTermDocsCount("first opened", reader2, searchTerm3, 100);        // DELETE DOCS FROM READER 2 and CLOSE IT        // delete documents containing term: aaa        // when the reader is closed, the segment info is updated and        // the first reader is now stale        reader2.delete(searchTerm1);        assertEquals("after delete 1", 100, reader2.docFreq(searchTerm1));        assertEquals("after delete 1", 100, reader2.docFreq(searchTerm2));        assertEquals("after delete 1", 100, reader2.docFreq(searchTerm3));        assertTermDocsCount("after delete 1", reader2, searchTerm1, 0);        assertTermDocsCount("after delete 1", reader2, searchTerm2, 100);        assertTermDocsCount("after delete 1", reader2, searchTerm3, 100);        reader2.close();        // Make sure reader 1 is unchanged since it was open earlier        assertEquals("after delete 1", 100, reader1.docFreq(searchTerm1));        assertEquals("after delete 1", 100, reader1.docFreq(searchTerm2));        assertEquals("after delete 1", 100, reader1.docFreq(searchTerm3));        assertTermDocsCount("after delete 1", reader1, searchTerm1, 100);        assertTermDocsCount("after delete 1", reader1, searchTerm2, 100);        assertTermDocsCount("after delete 1", reader1, searchTerm3, 100);        // ATTEMPT TO DELETE FROM STALE READER        // delete documents containing term: bbb        try {            reader1.delete(searchTerm2);            fail("Delete allowed from a stale index reader");        } catch (IOException e) {            /* success */        }        // RECREATE READER AND TRY AGAIN        reader1.close();        reader1 = IndexReader.open(dir);        assertEquals("reopened", 100, reader1.docFreq(searchTerm1));        assertEquals("reopened", 100, reader1.docFreq(searchTerm2));        assertEquals("reopened", 100, reader1.docFreq(searchTerm3));        assertTermDocsCount("reopened", reader1, searchTerm1, 0);        assertTermDocsCount("reopened", reader1, searchTerm2, 100);        assertTermDocsCount("reopened", reader1, searchTerm3, 100);        reader1.delete(searchTerm2);        assertEquals("deleted 2", 100, reader1.docFreq(searchTerm1));        assertEquals("deleted 2", 100, reader1.docFreq(searchTerm2));        assertEquals("deleted 2", 100, reader1.docFreq(searchTerm3));        assertTermDocsCount("deleted 2", reader1, searchTerm1, 0);        assertTermDocsCount("deleted 2", reader1, searchTerm2, 0);        assertTermDocsCount("deleted 2", reader1, searchTerm3, 100);        reader1.close();        // Open another reader to confirm that everything is deleted        reader2 = IndexReader.open(dir);        assertEquals("reopened 2", 100, reader2.docFreq(searchTerm1));        assertEquals("reopened 2", 100, reader2.docFreq(searchTerm2));        assertEquals("reopened 2", 100, reader2.docFreq(searchTerm3));        assertTermDocsCount("reopened 2", reader2, searchTerm1, 0);        assertTermDocsCount("reopened 2", reader2, searchTerm2, 0);        assertTermDocsCount("reopened 2", reader2, searchTerm3, 100);        reader2.close();        dir.close();    }    private void addDocumentWithFields(IndexWriter writer) throws IOException    {        Document doc = new Document();        doc.add(Field.Keyword("keyword","test1"));        doc.add(Field.Text("text","test1"));        doc.add(Field.UnIndexed("unindexed","test1"));        doc.add(Field.UnStored("unstored","test1"));        writer.addDocument(doc);    }    private void addDocumentWithDifferentFields(IndexWriter writer) throws IOException    {        Document doc = new Document();        doc.add(Field.Keyword("keyword2","test1"));        doc.add(Field.Text("text2","test1"));        doc.add(Field.UnIndexed("unindexed2","test1"));        doc.add(Field.UnStored("unstored2","test1"));        writer.addDocument(doc);    }    private void addDoc(IndexWriter writer, String value)    {        Document doc = new Document();        doc.add(Field.UnStored("content", value));        try        {            writer.addDocument(doc);        }        catch (IOException e)        {            e.printStackTrace();        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -