blob: 5c1cd0b0062db1d8ad34b5d38eae1b11fcbcdc3f [file] [log] [blame]
/*
* 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.
*/
package org.apache.lucene.luke.models.documents;
import java.io.IOException;
import java.nio.file.Path;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.FieldType;
import org.apache.lucene.document.SortedSetDocValuesField;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexOptions;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.RandomIndexWriter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.NumericUtils;
import org.junit.After;
import org.junit.Before;
public abstract class DocumentsTestBase extends LuceneTestCase {
protected IndexReader reader;
protected Directory dir;
protected Path indexDir;
@Override
@Before
public void setUp() throws Exception {
super.setUp();
createIndex();
dir = newFSDirectory(indexDir);
reader = DirectoryReader.open(dir);
}
protected void createIndex() throws IOException {
indexDir = createTempDir();
Directory dir = newFSDirectory(indexDir);
RandomIndexWriter writer = new RandomIndexWriter(random(), dir, new StandardAnalyzer());
FieldType titleType = new FieldType();
titleType.setIndexOptions(IndexOptions.DOCS_AND_FREQS);
titleType.setStored(true);
titleType.setTokenized(true);
titleType.setOmitNorms(true);
FieldType authorType = new FieldType();
authorType.setIndexOptions(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS);
authorType.setStored(true);
authorType.setTokenized(true);
authorType.setOmitNorms(false);
FieldType textType = new FieldType();
textType.setIndexOptions(IndexOptions.DOCS_AND_FREQS);
textType.setStored(false);
textType.setTokenized(true);
textType.setStoreTermVectors(true);
textType.setOmitNorms(false);
FieldType downloadsType = new FieldType();
downloadsType.setDimensions(1, Integer.BYTES);
downloadsType.setStored(true);
Document doc1 = new Document();
doc1.add(new Field("title", "Pride and Prejudice", titleType));
doc1.add(new Field("author", "Jane Austen", authorType));
doc1.add(new Field("text",
"It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife.",
textType));
doc1.add(new SortedSetDocValuesField("subject", new BytesRef("Fiction")));
doc1.add(new SortedSetDocValuesField("subject", new BytesRef("Love stories")));
doc1.add(new Field("downloads", packInt(28533), downloadsType));
writer.addDocument(doc1);
Document doc2 = new Document();
doc2.add(new Field("title", "Alice's Adventures in Wonderland", titleType));
doc2.add(new Field("author", "Lewis Carroll", authorType));
doc2.add(new Field("text", "Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, ‘and what is the use of a book,’ thought Alice ‘without pictures or conversations?’",
textType));
doc2.add(new SortedSetDocValuesField("subject", new BytesRef("Fantasy literature")));
doc2.add(new Field("downloads", packInt(18712), downloadsType));
writer.addDocument(doc2);
Document doc3 = new Document();
doc3.add(new Field("title", "Frankenstein; Or, The Modern Prometheus", titleType));
doc3.add(new Field("author", "Mary Wollstonecraft Shelley", authorType));
doc3.add(new Field("text", "You will rejoice to hear that no disaster has accompanied the commencement of an enterprise which you have regarded with such evil forebodings. I arrived here yesterday, and my first task is to assure my dear sister of my welfare and increasing confidence in the success of my undertaking.",
textType));
doc3.add(new SortedSetDocValuesField("subject", new BytesRef("Science fiction")));
doc3.add(new SortedSetDocValuesField("subject", new BytesRef("Horror tales")));
doc3.add(new SortedSetDocValuesField("subject", new BytesRef("Monsters")));
doc3.add(new Field("downloads", packInt(14737), downloadsType));
writer.addDocument(doc3);
Document doc4 = new Document();
doc4.add(new Field("title", "A Doll's House : a play", titleType));
doc4.add(new Field("author", "Henrik Ibsen", authorType));
doc4.add(new Field("text", "",
textType));
doc4.add(new SortedSetDocValuesField("subject", new BytesRef("Drama")));
doc4.add(new Field("downloads", packInt(14629), downloadsType));
writer.addDocument(doc4);
Document doc5 = new Document();
doc5.add(new Field("title", "The Adventures of Sherlock Holmes", titleType));
doc5.add(new Field("author", "Arthur Conan Doyle", authorType));
doc5.add(new Field("text", "To Sherlock Holmes she is always the woman. I have seldom heard him mention her under any other name. In his eyes she eclipses and predominates the whole of her sex.",
textType));
doc5.add(new SortedSetDocValuesField("subject", new BytesRef("Fiction")));
doc5.add(new SortedSetDocValuesField("subject", new BytesRef("Detective and mystery stories")));
doc5.add(new Field("downloads", packInt(12828), downloadsType));
writer.addDocument(doc5);
writer.commit();
writer.close();
dir.close();
}
private BytesRef packInt(int value) {
byte[] dest = new byte[Integer.BYTES];
NumericUtils.intToSortableBytes(value, dest, 0);
return new BytesRef(dest);
}
@Override
@After
public void tearDown() throws Exception {
super.tearDown();
reader.close();
dir.close();
}
}