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

📄 testlazybug.java

📁 lucene2.2.0版本
💻 JAVA
字号:
package org.apache.lucene.index;/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License.  You may obtain a copy of the License at * *     http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */import junit.framework.TestCase;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.SimpleAnalyzer;import org.apache.lucene.document.*;import org.apache.lucene.store.Directory;import org.apache.lucene.store.RAMDirectory;import java.util.*;import java.lang.reflect.Array;/** * Test demonstrating EOF bug on the last field of the last doc  * if other docs have allready been accessed. */public class TestLazyBug extends TestCase {  public static int BASE_SEED = 13;  public static int NUM_DOCS = 500;  public static int NUM_FIELDS = 100;  private static String[] data = new String[] {    "now",    "is the time",    "for all good men",    "to come to the aid",    "of their country!",    "this string contains big chars:{\u0111 \u0222 \u0333 \u1111 \u2222 \u3333}",    "this string is a bigger string, mary had a little lamb, little lamb, little lamb!"  };  private static Set dataset = new HashSet(Arrays.asList(data));    private static String MAGIC_FIELD = "f"+(NUM_FIELDS/3);    private static FieldSelector SELECTOR = new FieldSelector() {      public FieldSelectorResult accept(String f) {        if (f.equals(MAGIC_FIELD)) {          return FieldSelectorResult.LOAD;        }        return FieldSelectorResult.LAZY_LOAD;      }    };    private static Directory makeIndex() throws RuntimeException {     Directory dir = new RAMDirectory();    try {      Random r = new Random(BASE_SEED + 42) ;       Analyzer analyzer = new SimpleAnalyzer();      IndexWriter writer = new IndexWriter(dir, analyzer, true);            writer.setUseCompoundFile(false);            for (int d = 1; d <= NUM_DOCS; d++) {        Document doc = new Document();        for (int f = 1; f <= NUM_FIELDS; f++ ) {          doc.add(new Field("f"+f,                             data[f % data.length]                             + '#' + data[r.nextInt(data.length)],                             Field.Store.YES,                             Field.Index.TOKENIZED));        }        writer.addDocument(doc);      }      writer.close();    } catch (Exception e) {      throw new RuntimeException(e);    }    return dir;  }    public static void doTest(int[] docs) throws Exception {    Directory dir = makeIndex();    IndexReader reader = IndexReader.open(dir);    for (int i = 0; i < docs.length; i++) {      Document d = reader.document(docs[i], SELECTOR);      String trash = d.get(MAGIC_FIELD);            List fields = d.getFields();      for (Iterator fi = fields.iterator(); fi.hasNext(); ) {        Fieldable f=null;        try {          f = (Fieldable) fi.next();          String fname = f.name();          String fval = f.stringValue();          assertNotNull(docs[i]+" FIELD: "+fname, fval);          String[] vals = fval.split("#");          if (!dataset.contains(vals[0]) || !dataset.contains(vals[1])) {                    fail("FIELD:"+fname+",VAL:"+fval);          }        } catch (Exception e) {          throw new Exception(docs[i]+" WTF: "+f.name(), e);        }      }    }    reader.close();  }  public void testLazyWorks() throws Exception {    doTest(new int[] { 399 });  }    public void testLazyAlsoWorks() throws Exception {    doTest(new int[] { 399, 150 });  }  public void testLazyBroken() throws Exception {    doTest(new int[] { 150, 399 });  }}

⌨️ 快捷键说明

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