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

📄 testdocument.java

📁 lucene2.2.0版本
💻 JAVA
字号:
package org.apache.lucene.document;import junit.framework.TestCase;import org.apache.lucene.store.RAMDirectory;import org.apache.lucene.document.Document;import org.apache.lucene.document.Field;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.index.IndexWriter;import org.apache.lucene.index.Term;import org.apache.lucene.search.Query;import org.apache.lucene.search.TermQuery;import org.apache.lucene.search.IndexSearcher;import org.apache.lucene.search.Searcher;import org.apache.lucene.search.Hits;/** * 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. *//** * Tests {@link Document} class. * * @author Otis Gospodnetic * @version $Id: TestDocument.java 472959 2006-11-09 16:21:50Z yonik $ */public class TestDocument extends TestCase{  String binaryVal = "this text will be stored as a byte array in the index";  String binaryVal2 = "this text will be also stored as a byte array in the index";    public void testBinaryField()    throws Exception  {    Document doc = new Document();    Fieldable stringFld = new Field("string", binaryVal, Field.Store.YES, Field.Index.NO);    Fieldable binaryFld = new Field("binary", binaryVal.getBytes(), Field.Store.YES);    Fieldable binaryFld2 = new Field("binary", binaryVal2.getBytes(), Field.Store.YES);        doc.add(stringFld);    doc.add(binaryFld);        assertEquals(2, doc.fields.size());        assertTrue(binaryFld.isBinary());    assertTrue(binaryFld.isStored());    assertFalse(binaryFld.isIndexed());    assertFalse(binaryFld.isTokenized());        String binaryTest = new String(doc.getBinaryValue("binary"));    assertTrue(binaryTest.equals(binaryVal));        String stringTest = doc.get("string");    assertTrue(binaryTest.equals(stringTest));        doc.add(binaryFld2);        assertEquals(3, doc.fields.size());        byte[][] binaryTests = doc.getBinaryValues("binary");            assertEquals(2, binaryTests.length);        binaryTest = new String(binaryTests[0]);    String binaryTest2 = new String(binaryTests[1]);        assertFalse(binaryTest.equals(binaryTest2));        assertTrue(binaryTest.equals(binaryVal));    assertTrue(binaryTest2.equals(binaryVal2));        doc.removeField("string");    assertEquals(2, doc.fields.size());        doc.removeFields("binary");    assertEquals(0, doc.fields.size());  }    /**   * Tests {@link Document#removeField(String)} method for a brand new Document   * that has not been indexed yet.   *   * @throws Exception on error   */  public void testRemoveForNewDocument() throws Exception  {    Document doc = makeDocumentWithFields();    assertEquals(8, doc.fields.size());    doc.removeFields("keyword");    assertEquals(6, doc.fields.size());    doc.removeFields("doesnotexists");      // removing non-existing fields is siltenlty ignored    doc.removeFields("keyword");		// removing a field more than once    assertEquals(6, doc.fields.size());    doc.removeField("text");    assertEquals(5, doc.fields.size());    doc.removeField("text");    assertEquals(4, doc.fields.size());    doc.removeField("text");    assertEquals(4, doc.fields.size());    doc.removeField("doesnotexists");       // removing non-existing fields is siltenlty ignored    assertEquals(4, doc.fields.size());    doc.removeFields("unindexed");    assertEquals(2, doc.fields.size());    doc.removeFields("unstored");    assertEquals(0, doc.fields.size());    doc.removeFields("doesnotexists");	// removing non-existing fields is siltenlty ignored    assertEquals(0, doc.fields.size());  }  public void testConstructorExceptions()  {    new Field("name", "value", Field.Store.YES, Field.Index.NO);  // okay    new Field("name", "value", Field.Store.NO, Field.Index.UN_TOKENIZED);  // okay    try {      new Field("name", "value", Field.Store.NO, Field.Index.NO);      fail();    } catch(IllegalArgumentException e) {      // expected exception    }    new Field("name", "value", Field.Store.YES, Field.Index.NO, Field.TermVector.NO); // okay    try {      new Field("name", "value", Field.Store.YES, Field.Index.NO, Field.TermVector.YES);      fail();    } catch(IllegalArgumentException e) {      // expected exception    }  }      /**     * Tests {@link Document#getValues(String)} method for a brand new Document     * that has not been indexed yet.     *     * @throws Exception on error     */    public void testGetValuesForNewDocument() throws Exception    {        doAssert(makeDocumentWithFields(), false);    }    /**     * Tests {@link Document#getValues(String)} method for a Document retrieved from     * an index.     *     * @throws Exception on error     */    public void testGetValuesForIndexedDocument() throws Exception    {        RAMDirectory dir = new RAMDirectory();        IndexWriter writer = new IndexWriter(dir, new StandardAnalyzer(), true);        writer.addDocument(makeDocumentWithFields());        writer.close();        Searcher searcher = new IndexSearcher(dir);	// search for something that does exists	Query query = new TermQuery(new Term("keyword", "test1"));	// ensure that queries return expected results without DateFilter first        Hits hits = searcher.search(query);	assertEquals(1, hits.length());         doAssert(hits.doc(0), true);         searcher.close();    }    private Document makeDocumentWithFields()    {        Document doc = new Document();        doc.add(new Field(  "keyword",   "test1", Field.Store.YES, Field.Index.UN_TOKENIZED));        doc.add(new Field(  "keyword",   "test2", Field.Store.YES, Field.Index.UN_TOKENIZED));        doc.add(new Field(     "text",      "test1", Field.Store.YES, Field.Index.TOKENIZED));        doc.add(new Field(     "text",      "test2", Field.Store.YES, Field.Index.TOKENIZED));        doc.add(new Field("unindexed", "test1", Field.Store.YES, Field.Index.NO));        doc.add(new Field("unindexed", "test2", Field.Store.YES, Field.Index.NO));        doc.add(new Field( "unstored",  "test1", Field.Store.NO, Field.Index.TOKENIZED));        doc.add(new Field( "unstored",  "test2", Field.Store.NO, Field.Index.TOKENIZED));        return doc;    }    private void doAssert(Document doc, boolean fromIndex)    {        String[] keywordFieldValues   = doc.getValues("keyword");        String[] textFieldValues      = doc.getValues("text");        String[] unindexedFieldValues = doc.getValues("unindexed");        String[] unstoredFieldValues  = doc.getValues("unstored");        assertTrue(keywordFieldValues.length   == 2);        assertTrue(textFieldValues.length      == 2);        assertTrue(unindexedFieldValues.length == 2);        // this test cannot work for documents retrieved from the index        // since unstored fields will obviously not be returned        if (! fromIndex)        {            assertTrue(unstoredFieldValues.length  == 2);        }        assertTrue(keywordFieldValues[0].equals("test1"));        assertTrue(keywordFieldValues[1].equals("test2"));        assertTrue(textFieldValues[0].equals("test1"));        assertTrue(textFieldValues[1].equals("test2"));        assertTrue(unindexedFieldValues[0].equals("test1"));        assertTrue(unindexedFieldValues[1].equals("test2"));        // this test cannot work for documents retrieved from the index        // since unstored fields will obviously not be returned        if (! fromIndex)        {            assertTrue(unstoredFieldValues[0].equals("test1"));            assertTrue(unstoredFieldValues[1].equals("test2"));        }    }}

⌨️ 快捷键说明

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