add --shared
[pylucene.git] / lucene-java-3.4.0 / lucene / contrib / misc / src / test / org / apache / lucene / index / TestTermVectorAccessor.java
1 package org.apache.lucene.index;
2
3 import org.apache.lucene.analysis.MockAnalyzer;
4 import org.apache.lucene.document.Document;
5 import org.apache.lucene.document.Field;
6 import org.apache.lucene.store.Directory;
7 import org.apache.lucene.util.LuceneTestCase;
8
9 /*
10  *  Licensed under the Apache License, Version 2.0 (the "License");
11  *  you may not use this file except in compliance with the License.
12  *  You may obtain a copy of the License at
13  *
14  *      http://www.apache.org/licenses/LICENSE-2.0
15  *
16  *  Unless required by applicable law or agreed to in writing, software
17  *  distributed under the License is distributed on an "AS IS" BASIS,
18  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  *  See the License for the specific language governing permissions and
20  *  limitations under the License.
21  *
22  */
23
24 public class TestTermVectorAccessor extends LuceneTestCase {
25
26   public void test() throws Exception {
27     Directory dir = newDirectory();
28     IndexWriter iw = new IndexWriter(dir, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random)));
29
30     Document doc;
31
32     doc = new Document();
33     doc.add(newField("a", "a b a c a d a e a f a g a h a", Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS));
34     doc.add(newField("b", "a b c b d b e b f b g b h b", Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS));
35     doc.add(newField("c", "a c b c d c e c f c g c h c", Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS));
36     iw.addDocument(doc);
37
38     doc = new Document();
39     doc.add(newField("a", "a b a c a d a e a f a g a h a", Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS));
40     doc.add(newField("b", "a b c b d b e b f b g b h b", Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS));
41     doc.add(newField("c", "a c b c d c e c f c g c h c", Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS));
42     iw.addDocument(doc);
43
44     doc = new Document();
45     doc.add(newField("a", "a b a c a d a e a f a g a h a", Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.YES));
46     doc.add(newField("b", "a b c b d b e b f b g b h b", Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.YES));
47     doc.add(newField("c", "a c b c d c e c f c g c h c", Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.YES));
48     iw.addDocument(doc);
49
50     doc = new Document();
51     doc.add(newField("a", "a b a c a d a e a f a g a h a", Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.NO));
52     doc.add(newField("b", "a b c b d b e b f b g b h b", Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.NO));
53     doc.add(newField("c", "a c b c d c e c f c g c h c", Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.NO));
54     iw.addDocument(doc);
55
56     doc = new Document();
57     doc.add(newField("a", "a b a c a d a e a f a g a h a", Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS));
58     doc.add(newField("b", "a b c b d b e b f b g b h b", Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.NO));
59     doc.add(newField("c", "a c b c d c e c f c g c h c", Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.YES));
60     iw.addDocument(doc);
61
62     iw.close();
63
64     IndexReader ir = IndexReader.open(dir, false);
65
66     TermVectorAccessor accessor = new TermVectorAccessor();
67
68     ParallelArrayTermVectorMapper mapper;
69     TermFreqVector tfv;
70
71     for (int i = 0; i < ir.maxDoc(); i++) {
72
73       mapper = new ParallelArrayTermVectorMapper();
74       accessor.accept(ir, i, "a", mapper);
75       tfv = mapper.materializeVector();
76       assertEquals("doc " + i, "a", tfv.getTerms()[0]);
77       assertEquals("doc " + i, 8, tfv.getTermFrequencies()[0]);
78
79       mapper = new ParallelArrayTermVectorMapper();
80       accessor.accept(ir, i, "b", mapper);
81       tfv = mapper.materializeVector();
82       assertEquals("doc " + i, 8, tfv.getTermFrequencies().length);
83       assertEquals("doc " + i, "b", tfv.getTerms()[1]);
84       assertEquals("doc " + i, 7, tfv.getTermFrequencies()[1]);
85
86       mapper = new ParallelArrayTermVectorMapper();
87       accessor.accept(ir, i, "c", mapper);
88       tfv = mapper.materializeVector();
89       assertEquals("doc " + i, 8, tfv.getTermFrequencies().length);
90       assertEquals("doc " + i, "c", tfv.getTerms()[2]);
91       assertEquals("doc " + i, 7, tfv.getTermFrequencies()[2]);
92
93       mapper = new ParallelArrayTermVectorMapper();
94       accessor.accept(ir, i, "q", mapper);
95       tfv = mapper.materializeVector();
96       assertNull("doc " + i, tfv);
97
98     }
99
100     ir.close();
101
102     dir.close();
103
104
105   }
106
107 }