List of usage examples for org.apache.lucene.index IndexWriter getReader
DirectoryReader getReader() throws IOException
From source file:aos.lucene.search.msc.NearRealTimeTest.java
License:Apache License
public void testNearRealTime() throws Exception { Directory dir = new RAMDirectory(); IndexWriter writer = new IndexWriter(dir, new StandardAnalyzer(Version.LUCENE_46), IndexWriter.MaxFieldLength.UNLIMITED); for (int i = 0; i < 10; i++) { Document doc = new Document(); doc.add(new Field("id", "" + i, Field.Store.NO, Field.Index.NOT_ANALYZED_NO_NORMS)); doc.add(new Field("text", "aaa", Field.Store.NO, Field.Index.ANALYZED)); writer.addDocument(doc);// ww w.ja v a 2 s . c o m } IndexReader reader = writer.getReader(); IndexSearcher searcher = new IndexSearcher(reader); Query query = new TermQuery(new Term("text", "aaa")); TopDocs docs = searcher.search(query, 1); assertEquals(10, docs.totalHits); writer.deleteDocuments(new Term("id", "7")); Document doc = new Document(); doc.add(new Field("id", "11", Field.Store.NO, Field.Index.NOT_ANALYZED_NO_NORMS)); doc.add(new Field("text", "bbb", Field.Store.NO, Field.Index.ANALYZED)); writer.addDocument(doc); IndexReader newReader = reader.reopen(); assertFalse(reader == newReader); reader.close(); searcher = new IndexSearcher(newReader); TopDocs hits = searcher.search(query, 10); assertEquals(9, hits.totalHits); query = new TermQuery(new Term("text", "bbb")); hits = searcher.search(query, 1); assertEquals(1, hits.totalHits); newReader.close(); writer.close(); }
From source file:com.leavesfly.lia.admin.SearcherManager.java
License:Apache License
public SearcherManager(IndexWriter writer) throws IOException { //2 this.writer = writer; currentSearcher = new IndexSearcher(writer.getReader()); //C warm(currentSearcher);//ww w. jav a2 s. com writer.setMergedSegmentWarmer( // 3 new IndexWriter.IndexReaderWarmer() { // 3 public void warm(IndexReader reader) throws IOException { // 3 SearcherManager.this.warm(new IndexSearcher(reader)); // 3 } // 3 }); // 3 }
From source file:com.leavesfly.lia.searching.NearRealTimeTest.java
License:Apache License
public void testNearRealTime() throws Exception { Directory dir = new RAMDirectory(); IndexWriter writer = new IndexWriter(dir, new StandardAnalyzer(Version.LUCENE_30), IndexWriter.MaxFieldLength.UNLIMITED); for (int i = 0; i < 10; i++) { Document doc = new Document(); doc.add(new Field("id", "" + i, Field.Store.NO, Field.Index.NOT_ANALYZED_NO_NORMS)); doc.add(new Field("text", "aaa", Field.Store.NO, Field.Index.ANALYZED)); writer.addDocument(doc);/* ww w .ja v a2 s . c o m*/ } IndexReader reader = writer.getReader(); // #1 IndexSearcher searcher = new IndexSearcher(reader); // #A Query query = new TermQuery(new Term("text", "aaa")); TopDocs docs = searcher.search(query, 1); assertEquals(10, docs.totalHits); // #B writer.deleteDocuments(new Term("id", "7")); // #2 Document doc = new Document(); // #3 doc.add(new Field("id", // #3 "11", // #3 Field.Store.NO, // #3 Field.Index.NOT_ANALYZED_NO_NORMS)); // #3 doc.add(new Field("text", // #3 "bbb", // #3 Field.Store.NO, // #3 Field.Index.ANALYZED)); // #3 writer.addDocument(doc); // #3 IndexReader newReader = reader.reopen(); // #4 assertFalse(reader == newReader); // #5 reader.close(); // #6 searcher = new IndexSearcher(newReader); TopDocs hits = searcher.search(query, 10); // #7 assertEquals(9, hits.totalHits); // #7 query = new TermQuery(new Term("text", "bbb")); // #8 hits = searcher.search(query, 1); // #8 assertEquals(1, hits.totalHits); // #8 newReader.close(); writer.close(); }
From source file:lia.searching.NearRealTime.java
License:Apache License
public void testNearRealTime() throws Exception { Directory dir = new RAMDirectory(); IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_46, new StandardAnalyzer(Version.LUCENE_45)); IndexWriter writer = new IndexWriter(dir, iwc); for (int i = 0; i < 10; i++) { Document doc = new Document(); doc.add(new LongField("id", i, Field.Store.NO)); doc.add(new TextField("text", "aaa", Field.Store.NO)); writer.addDocument(doc);//from w w w. ja va 2 s .c o m } DirectoryReader reader = DirectoryReader.open(writer, true); // #1 IndexSearcher searcher = new IndexSearcher(reader); // #A Query query = new TermQuery(new Term("text", "aaa")); TopDocs docs = searcher.search(query, 1); assertEquals(10, docs.totalHits); // #B writer.deleteDocuments(new Term("id", "7")); // #2 IndexReader newReader = writer.getReader(); if (r2 != null) { reader.close(); reader = r2; } else { // recreate reader.close(); reader = DirectoryReader.open(dir); } searcher = new IndexSearcher(reader); // #A docs = searcher.search(query, 10); assertEquals(9, docs.totalHits); /* Document doc = new Document(); // #3 doc.add(new LongField("id", // #3 11, // #3 Field.Store.NO)); // #3 doc.add(new TextField("text", // #3 "bbb", // #3 Field.Store.NO)); // #3 writer.addDocument(doc); // #3 */ /* searcher = new IndexSearcher(DirectoryReader.openIfChanged(reader, writer, true)); TopDocs hits = searcher.search(query, 10); // #7 assertEquals(9, hits.totalHits); // #7 */ query = new TermQuery(new Term("text", "bbb")); // #8 TopDocs hits = searcher.search(query, 1); // #8 assertEquals(1, hits.totalHits); // #8 reader.close(); writer.close(); }
From source file:net.sf.mmm.search.indexer.impl.lucene.LuceneSearchIndexer.java
License:Apache License
/** * This method performs the actual remove by {@link Term}. * * @see #removeByCustumId(String)//from w w w. j a va2 s. c om * @see #removeByUri(String, String) * @see IndexWriter#deleteDocuments(Term) * * @param term is the {@link Term} identifying the {@link SearchEntry entry/entries} to remove. * @return the number of removed {@link SearchEntry entries}. */ protected int remove(Term term) { try { IndexWriter writer = getIndexWriter(); int count = writer.getReader().docFreq(term); if (count > 0) { writer.deleteDocuments(term); } return count; } catch (IOException e) { throw new SearchRemoveFailedException(e, term.field(), term.text()); } }
From source file:org.elasticsearch.deps.lucene.LuceneFieldCacheTests.java
License:Apache License
/** * A test that verifies that when using FieldCache for a field that has been added twice (under the same name) * to the document, returns the last one. *///from w w w . j ava 2 s . c o m @Test public void testTwoFieldSameNameNumericFieldCache() throws Exception { Directory dir = new RAMDirectory(); IndexWriter indexWriter = new IndexWriter(dir, Lucene.STANDARD_ANALYZER, true, IndexWriter.MaxFieldLength.UNLIMITED); Document doc = new Document(); NumericField field = new NumericField("int1").setIntValue(1); doc.add(field); field = new NumericField("int1").setIntValue(2); doc.add(field); indexWriter.addDocument(doc); IndexReader reader = indexWriter.getReader(); int[] ints = FieldCache.DEFAULT.getInts(reader, "int1"); assertThat(ints.length, equalTo(1)); assertThat(ints[0], equalTo(2)); }
From source file:org.elasticsearch.index.field.data.doubles.DoubleFieldDataTests.java
License:Apache License
@Test public void intFieldDataTests() throws Exception { Directory dir = new RAMDirectory(); IndexWriter indexWriter = new IndexWriter(dir, Lucene.STANDARD_ANALYZER, true, IndexWriter.MaxFieldLength.UNLIMITED); indexWriter.addDocument(doc().add(new NumericField("svalue").setDoubleValue(4)) .add(new NumericField("mvalue").setDoubleValue(104)).build()); indexWriter.addDocument(doc().add(new NumericField("svalue").setDoubleValue(3)) .add(new NumericField("mvalue").setDoubleValue(104)) .add(new NumericField("mvalue").setDoubleValue(105)).build()); indexWriter.addDocument(doc().add(new NumericField("svalue").setDoubleValue(7)).build()); indexWriter.addDocument(doc().add(new NumericField("mvalue").setDoubleValue(102)).build()); indexWriter.addDocument(doc().add(new NumericField("svalue").setDoubleValue(4)).build()); IndexReader reader = indexWriter.getReader(); DoubleFieldData sFieldData = DoubleFieldData.load(reader, "svalue"); DoubleFieldData mFieldData = DoubleFieldData.load(reader, "mvalue"); assertThat(sFieldData.fieldName(), equalTo("svalue")); assertThat(sFieldData.multiValued(), equalTo(false)); assertThat(mFieldData.fieldName(), equalTo("mvalue")); assertThat(mFieldData.multiValued(), equalTo(true)); // svalue//from www . ja v a2 s . c o m assertThat(sFieldData.hasValue(0), equalTo(true)); assertThat(sFieldData.value(0), equalTo(4d)); assertThat(sFieldData.docFieldData(0).getValue(), equalTo(4d)); assertThat(sFieldData.values(0).length, equalTo(1)); assertThat(sFieldData.values(0)[0], equalTo(4d)); assertThat(sFieldData.docFieldData(0).getValues()[0], equalTo(4d)); assertThat(sFieldData.hasValue(1), equalTo(true)); assertThat(sFieldData.value(1), equalTo(3d)); assertThat(sFieldData.docFieldData(1).getValue(), equalTo(3d)); assertThat(sFieldData.values(1).length, equalTo(1)); assertThat(sFieldData.values(1)[0], equalTo(3d)); assertThat(sFieldData.docFieldData(1).getValues()[0], equalTo(3d)); assertThat(sFieldData.hasValue(2), equalTo(true)); assertThat(sFieldData.value(2), equalTo(7d)); assertThat(sFieldData.docFieldData(2).getValue(), equalTo(7d)); assertThat(sFieldData.values(2).length, equalTo(1)); assertThat(sFieldData.values(2)[0], equalTo(7d)); assertThat(sFieldData.docFieldData(2).getValues()[0], equalTo(7d)); assertThat(sFieldData.hasValue(3), equalTo(false)); assertThat(sFieldData.docFieldData(3).isEmpty(), equalTo(true)); assertThat(sFieldData.hasValue(4), equalTo(true)); assertThat(sFieldData.value(4), equalTo(4d)); assertThat(sFieldData.values(4).length, equalTo(1)); assertThat(sFieldData.values(4)[0], equalTo(4d)); // check order is correct final ArrayList<Double> values = new ArrayList<Double>(); sFieldData.forEachValue(new DoubleFieldData.ValueProc() { @Override public void onValue(double value) { values.add(value); } }); assertThat(values.size(), equalTo(3)); assertThat(values.get(0), equalTo(3d)); assertThat(values.get(1), equalTo(4d)); assertThat(values.get(2), equalTo(7d)); // mvalue assertThat(mFieldData.hasValue(0), equalTo(true)); assertThat(mFieldData.docFieldData(0).isEmpty(), equalTo(false)); assertThat(mFieldData.value(0), equalTo(104d)); assertThat(mFieldData.docFieldData(0).getValue(), equalTo(104d)); assertThat(mFieldData.values(0).length, equalTo(1)); assertThat(mFieldData.values(0)[0], equalTo(104d)); assertThat(mFieldData.docFieldData(0).getValues()[0], equalTo(104d)); assertThat(mFieldData.hasValue(1), equalTo(true)); assertThat(mFieldData.value(1), equalTo(104d)); assertThat(mFieldData.values(1).length, equalTo(2)); assertThat(mFieldData.values(1)[0], equalTo(104d)); assertThat(mFieldData.values(1)[1], equalTo(105d)); assertThat(mFieldData.hasValue(2), equalTo(false)); assertThat(mFieldData.hasValue(3), equalTo(true)); assertThat(mFieldData.value(3), equalTo(102d)); assertThat(mFieldData.values(3).length, equalTo(1)); assertThat(mFieldData.values(3)[0], equalTo(102d)); assertThat(mFieldData.hasValue(4), equalTo(false)); indexWriter.close(); // check order is correct values.clear(); mFieldData.forEachValue(new DoubleFieldData.ValueProc() { @Override public void onValue(double value) { values.add(value); } }); assertThat(values.size(), equalTo(3)); assertThat(values.get(0), equalTo(102d)); assertThat(values.get(1), equalTo(104d)); assertThat(values.get(2), equalTo(105d)); }
From source file:org.elasticsearch.index.field.data.floats.FloatFieldDataTests.java
License:Apache License
@Test public void intFieldDataTests() throws Exception { Directory dir = new RAMDirectory(); IndexWriter indexWriter = new IndexWriter(dir, Lucene.STANDARD_ANALYZER, true, IndexWriter.MaxFieldLength.UNLIMITED); indexWriter.addDocument(doc().add(new NumericField("svalue").setFloatValue(4)) .add(new NumericField("mvalue").setFloatValue(104)).build()); indexWriter.addDocument(doc().add(new NumericField("svalue").setFloatValue(3)) .add(new NumericField("mvalue").setFloatValue(104)) .add(new NumericField("mvalue").setFloatValue(105)).build()); indexWriter.addDocument(doc().add(new NumericField("svalue").setFloatValue(7)).build()); indexWriter.addDocument(doc().add(new NumericField("mvalue").setFloatValue(102)).build()); indexWriter.addDocument(doc().add(new NumericField("svalue").setFloatValue(4)).build()); IndexReader reader = indexWriter.getReader(); FloatFieldData sFieldData = FloatFieldData.load(reader, "svalue"); FloatFieldData mFieldData = FloatFieldData.load(reader, "mvalue"); assertThat(sFieldData.fieldName(), equalTo("svalue")); assertThat(sFieldData.multiValued(), equalTo(false)); assertThat(mFieldData.fieldName(), equalTo("mvalue")); assertThat(mFieldData.multiValued(), equalTo(true)); // svalue//from w w w.j av a 2 s . c o m assertThat(sFieldData.hasValue(0), equalTo(true)); assertThat(sFieldData.docFieldData(0).isEmpty(), equalTo(false)); assertThat(sFieldData.value(0), equalTo(4f)); assertThat(sFieldData.docFieldData(0).getValue(), equalTo(4f)); assertThat(sFieldData.values(0).length, equalTo(1)); assertThat(sFieldData.docFieldData(0).getValues().length, equalTo(1)); assertThat(sFieldData.docFieldData(0).getValues()[0], equalTo(4f)); assertThat(sFieldData.hasValue(1), equalTo(true)); assertThat(sFieldData.value(1), equalTo(3f)); assertThat(sFieldData.values(1).length, equalTo(1)); assertThat(sFieldData.values(1)[0], equalTo(3f)); assertThat(sFieldData.hasValue(2), equalTo(true)); assertThat(sFieldData.value(2), equalTo(7f)); assertThat(sFieldData.values(2).length, equalTo(1)); assertThat(sFieldData.values(2)[0], equalTo(7f)); assertThat(sFieldData.hasValue(3), equalTo(false)); assertThat(sFieldData.hasValue(4), equalTo(true)); assertThat(sFieldData.value(4), equalTo(4f)); assertThat(sFieldData.values(4).length, equalTo(1)); assertThat(sFieldData.values(4)[0], equalTo(4f)); // check order is correct final ArrayList<Float> values = new ArrayList<Float>(); sFieldData.forEachValue(new FloatFieldData.ValueProc() { @Override public void onValue(float value) { values.add(value); } }); assertThat(values.size(), equalTo(3)); assertThat(values.get(0), equalTo(3f)); assertThat(values.get(1), equalTo(4f)); assertThat(values.get(2), equalTo(7f)); // mvalue assertThat(mFieldData.hasValue(0), equalTo(true)); assertThat(mFieldData.docFieldData(0).isEmpty(), equalTo(false)); assertThat(mFieldData.value(0), equalTo(104f)); assertThat(mFieldData.docFieldData(0).getValue(), equalTo(104f)); assertThat(mFieldData.values(0).length, equalTo(1)); assertThat(mFieldData.docFieldData(0).getValues().length, equalTo(1)); assertThat(mFieldData.values(0)[0], equalTo(104f)); assertThat(mFieldData.docFieldData(0).getValues()[0], equalTo(104f)); assertThat(mFieldData.hasValue(1), equalTo(true)); assertThat(mFieldData.value(1), equalTo(104f)); assertThat(mFieldData.values(1).length, equalTo(2)); assertThat(mFieldData.docFieldData(1).getValues().length, equalTo(2)); assertThat(mFieldData.values(1)[0], equalTo(104f)); assertThat(mFieldData.docFieldData(1).getValues()[0], equalTo(104f)); assertThat(mFieldData.docFieldData(1).getValues()[1], equalTo(105f)); assertThat(mFieldData.hasValue(2), equalTo(false)); assertThat(mFieldData.hasValue(3), equalTo(true)); assertThat(mFieldData.value(3), equalTo(102f)); assertThat(mFieldData.values(3).length, equalTo(1)); assertThat(mFieldData.values(3)[0], equalTo(102f)); assertThat(mFieldData.hasValue(4), equalTo(false)); indexWriter.close(); // check order is correct values.clear(); mFieldData.forEachValue(new FloatFieldData.ValueProc() { @Override public void onValue(float value) { values.add(value); } }); assertThat(values.size(), equalTo(3)); assertThat(values.get(0), equalTo(102f)); assertThat(values.get(1), equalTo(104f)); assertThat(values.get(2), equalTo(105f)); }
From source file:org.elasticsearch.index.field.data.ints.IntFieldDataTests.java
License:Apache License
@Test public void intFieldDataTests() throws Exception { Directory dir = new RAMDirectory(); IndexWriter indexWriter = new IndexWriter(dir, new IndexWriterConfig(Lucene.VERSION, Lucene.STANDARD_ANALYZER)); indexWriter.addDocument(doc().add(new NumericField("svalue").setIntValue(4)) .add(new NumericField("mvalue").setIntValue(104)).build()); indexWriter.addDocument(doc().add(new NumericField("svalue").setIntValue(3)) .add(new NumericField("mvalue").setIntValue(104)).add(new NumericField("mvalue").setIntValue(105)) .build());/* www. ja v a2 s . co m*/ indexWriter.addDocument(doc().add(new NumericField("svalue").setIntValue(7)).build()); indexWriter.addDocument(doc().add(new NumericField("mvalue").setIntValue(102)).build()); indexWriter.addDocument(doc().add(new NumericField("svalue").setIntValue(4)).build()); IndexReader reader = indexWriter.getReader(); IntFieldData sFieldData = IntFieldData.load(reader, "svalue"); IntFieldData mFieldData = IntFieldData.load(reader, "mvalue"); assertThat(sFieldData.fieldName(), equalTo("svalue")); assertThat(sFieldData.multiValued(), equalTo(false)); assertThat(mFieldData.fieldName(), equalTo("mvalue")); assertThat(mFieldData.multiValued(), equalTo(true)); // svalue assertThat(sFieldData.hasValue(0), equalTo(true)); assertThat(sFieldData.docFieldData(0).isEmpty(), equalTo(false)); assertThat(sFieldData.value(0), equalTo(4)); assertThat(sFieldData.docFieldData(0).getValue(), equalTo(4)); assertThat(sFieldData.values(0).length, equalTo(1)); assertThat(sFieldData.docFieldData(0).getValues().length, equalTo(1)); assertThat(sFieldData.docFieldData(0).getValues()[0], equalTo(4)); assertThat(sFieldData.hasValue(1), equalTo(true)); assertThat(sFieldData.value(1), equalTo(3)); assertThat(sFieldData.values(1).length, equalTo(1)); assertThat(sFieldData.values(1)[0], equalTo(3)); assertThat(sFieldData.hasValue(2), equalTo(true)); assertThat(sFieldData.value(2), equalTo(7)); assertThat(sFieldData.values(2).length, equalTo(1)); assertThat(sFieldData.values(2)[0], equalTo(7)); assertThat(sFieldData.hasValue(3), equalTo(false)); assertThat(sFieldData.hasValue(4), equalTo(true)); assertThat(sFieldData.value(4), equalTo(4)); assertThat(sFieldData.values(4).length, equalTo(1)); assertThat(sFieldData.values(4)[0], equalTo(4)); // check order is correct final ArrayList<Integer> values = new ArrayList<Integer>(); sFieldData.forEachValue(new IntFieldData.ValueProc() { @Override public void onValue(int value) { values.add(value); } }); assertThat(values.size(), equalTo(3)); assertThat(values.get(0), equalTo(3)); assertThat(values.get(1), equalTo(4)); assertThat(values.get(2), equalTo(7)); // mvalue assertThat(mFieldData.hasValue(0), equalTo(true)); assertThat(mFieldData.value(0), equalTo(104)); assertThat(mFieldData.values(0).length, equalTo(1)); assertThat(mFieldData.values(0)[0], equalTo(104)); assertThat(mFieldData.hasValue(1), equalTo(true)); assertThat(mFieldData.value(1), equalTo(104)); assertThat(mFieldData.values(1).length, equalTo(2)); assertThat(mFieldData.values(1)[0], equalTo(104)); assertThat(mFieldData.values(1)[1], equalTo(105)); assertThat(mFieldData.hasValue(2), equalTo(false)); assertThat(mFieldData.hasValue(3), equalTo(true)); assertThat(mFieldData.value(3), equalTo(102)); assertThat(mFieldData.values(3).length, equalTo(1)); assertThat(mFieldData.values(3)[0], equalTo(102)); assertThat(mFieldData.hasValue(4), equalTo(false)); indexWriter.close(); // check order is correct values.clear(); mFieldData.forEachValue(new IntFieldData.ValueProc() { @Override public void onValue(int value) { values.add(value); } }); assertThat(values.size(), equalTo(3)); assertThat(values.get(0), equalTo(102)); assertThat(values.get(1), equalTo(104)); assertThat(values.get(2), equalTo(105)); }
From source file:org.elasticsearch.index.field.data.longs.LongFieldDataTests.java
License:Apache License
@Test public void intFieldDataTests() throws Exception { Directory dir = new RAMDirectory(); IndexWriter indexWriter = new IndexWriter(dir, Lucene.STANDARD_ANALYZER, true, IndexWriter.MaxFieldLength.UNLIMITED); indexWriter.addDocument(doc().add(new NumericField("svalue").setLongValue(4)) .add(new NumericField("mvalue").setLongValue(104)).build()); indexWriter.addDocument(doc().add(new NumericField("svalue").setLongValue(3)) .add(new NumericField("mvalue").setLongValue(104)).add(new NumericField("mvalue").setLongValue(105)) .build());/*www .j a va2 s .c o m*/ indexWriter.addDocument(doc().add(new NumericField("svalue").setLongValue(7)).build()); indexWriter.addDocument(doc().add(new NumericField("mvalue").setLongValue(102)).build()); indexWriter.addDocument(doc().add(new NumericField("svalue").setLongValue(4)).build()); IndexReader reader = indexWriter.getReader(); LongFieldData sFieldData = LongFieldData.load(reader, "svalue"); LongFieldData mFieldData = LongFieldData.load(reader, "mvalue"); assertThat(sFieldData.fieldName(), equalTo("svalue")); assertThat(sFieldData.multiValued(), equalTo(false)); assertThat(mFieldData.fieldName(), equalTo("mvalue")); assertThat(mFieldData.multiValued(), equalTo(true)); // svalue assertThat(sFieldData.hasValue(0), equalTo(true)); assertThat(sFieldData.docFieldData(0).isEmpty(), equalTo(false)); assertThat(sFieldData.value(0), equalTo(4l)); assertThat(sFieldData.date(0).getMillis(), equalTo(4l)); assertThat(sFieldData.docFieldData(0).getValue(), equalTo(4l)); assertThat(sFieldData.values(0).length, equalTo(1)); assertThat(sFieldData.docFieldData(0).getValues().length, equalTo(1)); assertThat(sFieldData.values(0)[0], equalTo(4l)); assertThat(sFieldData.dates(0)[0].getMillis(), equalTo(4l)); assertThat(sFieldData.docFieldData(0).getValues()[0], equalTo(4l)); assertThat(sFieldData.hasValue(1), equalTo(true)); assertThat(sFieldData.value(1), equalTo(3l)); assertThat(sFieldData.values(1).length, equalTo(1)); assertThat(sFieldData.values(1)[0], equalTo(3l)); assertThat(sFieldData.hasValue(2), equalTo(true)); assertThat(sFieldData.value(2), equalTo(7l)); assertThat(sFieldData.values(2).length, equalTo(1)); assertThat(sFieldData.values(2)[0], equalTo(7l)); assertThat(sFieldData.hasValue(3), equalTo(false)); assertThat(sFieldData.hasValue(4), equalTo(true)); assertThat(sFieldData.value(4), equalTo(4l)); assertThat(sFieldData.values(4).length, equalTo(1)); assertThat(sFieldData.values(4)[0], equalTo(4l)); // check order is correct final ArrayList<Long> values = new ArrayList<Long>(); sFieldData.forEachValue(new LongFieldData.ValueProc() { @Override public void onValue(long value) { values.add(value); } }); assertThat(values.size(), equalTo(3)); assertThat(values.get(0), equalTo(3l)); assertThat(values.get(1), equalTo(4l)); assertThat(values.get(2), equalTo(7l)); // mvalue assertThat(mFieldData.hasValue(0), equalTo(true)); assertThat(mFieldData.value(0), equalTo(104l)); assertThat(mFieldData.values(0).length, equalTo(1)); assertThat(mFieldData.values(0)[0], equalTo(104l)); assertThat(mFieldData.hasValue(1), equalTo(true)); assertThat(mFieldData.value(1), equalTo(104l)); assertThat(mFieldData.date(1).getMillis(), equalTo(104l)); assertThat(mFieldData.values(1).length, equalTo(2)); assertThat(mFieldData.values(1)[0], equalTo(104l)); assertThat(mFieldData.dates(1)[0].getMillis(), equalTo(104l)); assertThat(mFieldData.values(1)[1], equalTo(105l)); assertThat(mFieldData.dates(1)[1].getMillis(), equalTo(105l)); assertThat(mFieldData.hasValue(2), equalTo(false)); assertThat(mFieldData.hasValue(3), equalTo(true)); assertThat(mFieldData.value(3), equalTo(102l)); assertThat(mFieldData.values(3).length, equalTo(1)); assertThat(mFieldData.values(3)[0], equalTo(102l)); assertThat(mFieldData.hasValue(4), equalTo(false)); indexWriter.close(); // check order is correct values.clear(); mFieldData.forEachValue(new LongFieldData.ValueProc() { @Override public void onValue(long value) { values.add(value); } }); assertThat(values.size(), equalTo(3)); assertThat(values.get(0), equalTo(102l)); assertThat(values.get(1), equalTo(104l)); assertThat(values.get(2), equalTo(105l)); }