blob: c31fa1faa5780df440ead991cbd3966dc50a5ac9 [file] [log] [blame]
Eliza Margaretha01929182014-02-19 11:48:59 +00001package de.ids_mannheim.korap.index;
2
Nils Diewaldf399a672013-11-18 17:55:22 +00003import java.util.*;
4import java.io.*;
5
6import static org.junit.Assert.*;
7import org.junit.Test;
8import org.junit.Ignore;
9import org.junit.runner.RunWith;
10import org.junit.runners.JUnit4;
11
Nils Diewalda14ecd62015-02-26 21:00:20 +000012import de.ids_mannheim.korap.KrillIndex;
Nils Diewald0339d462015-02-26 14:53:56 +000013import de.ids_mannheim.korap.KrillQuery;
Nils Diewald884dbcf2015-02-27 17:02:28 +000014import de.ids_mannheim.korap.response.Result;
Nils Diewaldf399a672013-11-18 17:55:22 +000015import de.ids_mannheim.korap.query.SpanElementQuery;
16import de.ids_mannheim.korap.query.SpanWithinQuery;
17import de.ids_mannheim.korap.query.SpanNextQuery;
18import de.ids_mannheim.korap.query.SpanClassQuery;
19import de.ids_mannheim.korap.index.FieldDocument;
Nils Diewalde4986d72015-02-27 17:35:00 +000020import de.ids_mannheim.korap.index.MultiTermTokenStream;
Nils Diewaldf399a672013-11-18 17:55:22 +000021import de.ids_mannheim.korap.index.PositionsToOffset;
22
23import org.apache.lucene.index.AtomicReaderContext;
24import org.apache.lucene.search.spans.SpanQuery;
25import org.apache.lucene.search.spans.SpanTermQuery;
26import org.apache.lucene.index.TermContext;
27import org.apache.lucene.util.OpenBitSet;
28import org.apache.lucene.search.DocIdSet;
29import org.apache.lucene.util.DocIdBitSet;
30import org.apache.lucene.util.Bits;
31
32import java.nio.ByteBuffer;
33
34
35@RunWith(JUnit4.class)
36public class TestPosToOffset {
37
38 @Test
39 public void indexExample1 () throws IOException {
Nils Diewaldd37f7e42015-02-27 21:08:22 +000040 KrillIndex ki = new KrillIndex();
Nils Diewaldf399a672013-11-18 17:55:22 +000041
Nils Diewaldd37f7e42015-02-27 21:08:22 +000042 FieldDocument fd = new FieldDocument();
Nils Diewaldbb33da22015-03-04 16:24:25 +000043 fd.addTV("base", "a b c", "[(0-1)s:a|i:a|_0#0-1|-:t$<i>3]"
44 + "[(2-3)s:b|i:b|_1#2-3]" + "[(4-5)s:c|i:c|_2#4-5]");
Nils Diewaldd37f7e42015-02-27 21:08:22 +000045 ki.addDoc(fd);
Nils Diewaldf399a672013-11-18 17:55:22 +000046
Nils Diewaldd37f7e42015-02-27 21:08:22 +000047 fd = new FieldDocument();
Nils Diewaldbb33da22015-03-04 16:24:25 +000048 fd.addTV("base", "x y z", "[(0-1)s:x|i:x|_0#0-2|-:t$<i>3]"
49 + "[(3-4)s:y|i:y|_1#3-4]" + "[(6-7)s:z|i:z|_2#6-7]"); // 3
Nils Diewaldd37f7e42015-02-27 21:08:22 +000050 ki.addDoc(fd);
Nils Diewaldbb33da22015-03-04 16:24:25 +000051 ki.commit();
52
Nils Diewaldd37f7e42015-02-27 21:08:22 +000053 String field = "base";
54 for (AtomicReaderContext atomic : ki.reader().leaves()) {
55 PositionsToOffset pto = new PositionsToOffset(atomic, field);
Nils Diewaldf399a672013-11-18 17:55:22 +000056
Nils Diewaldbb33da22015-03-04 16:24:25 +000057 pto.add(0, 1);
58 pto.add(0, 2);
59 pto.add(1, 2);
60 pto.add(1, 1);
61 pto.add(1, 20);
Nils Diewaldf399a672013-11-18 17:55:22 +000062
Nils Diewaldbb33da22015-03-04 16:24:25 +000063 assertEquals("Start 0,1", pto.start(0, 1), 2);
64 assertEquals("End 0,1", pto.end(0, 1), 3);
Nils Diewaldf399a672013-11-18 17:55:22 +000065
Nils Diewaldbb33da22015-03-04 16:24:25 +000066 assertEquals("Start 0,2", pto.start(0, 2), 4);
67 assertEquals("End 0,2", pto.end(0, 2), 5);
Nils Diewaldf399a672013-11-18 17:55:22 +000068
Nils Diewaldbb33da22015-03-04 16:24:25 +000069 assertEquals("Start 1,2", pto.start(1, 2), 6);
70 assertEquals("End 1,2", pto.end(1, 2), 7);
Nils Diewaldf399a672013-11-18 17:55:22 +000071
Nils Diewaldbb33da22015-03-04 16:24:25 +000072 assertEquals("Start 1,1", pto.start(1, 1), 3);
73 assertEquals("End 1,1", pto.end(1, 1), 4);
74
75 assertEquals("Start 1,20", pto.start(1, 20), 0);
76 assertEquals("End 1,20", pto.end(1, 20), -1);
Nils Diewaldd37f7e42015-02-27 21:08:22 +000077 };
Nils Diewaldf399a672013-11-18 17:55:22 +000078 };
79};