📄 testtermvectorsreader.java
字号:
assertTrue(reader != null); TermPositionVector vector = (TermPositionVector) reader.get(0, testFields[0]); assertTrue(vector != null); String[] terms = vector.getTerms(); assertTrue(terms != null); assertTrue(terms.length == testTerms.length); for (int i = 0; i < terms.length; i++) { String term = terms[i]; //System.out.println("Term: " + term); assertTrue(term.equals(testTerms[i])); int[] positions = vector.getTermPositions(i); assertTrue(positions != null); assertTrue(positions.length == this.positions[i].length); for (int j = 0; j < positions.length; j++) { int position = positions[j]; assertTrue(position == this.positions[i][j]); } TermVectorOffsetInfo[] offset = vector.getOffsets(i); assertTrue(offset != null); assertTrue(offset.length == this.offsets[i].length); for (int j = 0; j < offset.length; j++) { TermVectorOffsetInfo termVectorOffsetInfo = offset[j]; assertTrue(termVectorOffsetInfo.equals(offsets[i][j])); } } } public void testMapper() throws IOException { TermVectorsReader reader = new TermVectorsReader(dir, seg, fieldInfos); assertTrue(reader != null); SortedTermVectorMapper mapper = new SortedTermVectorMapper(new TermVectorEntryFreqSortedComparator()); reader.get(0, mapper); SortedSet set = mapper.getTermVectorEntrySet(); assertTrue("set is null and it shouldn't be", set != null); //three fields, 4 terms, all terms are the same assertTrue("set Size: " + set.size() + " is not: " + 4, set.size() == 4); //Check offsets and positions for (Iterator iterator = set.iterator(); iterator.hasNext();) { TermVectorEntry tve = (TermVectorEntry) iterator.next(); assertTrue("tve is null and it shouldn't be", tve != null); assertTrue("tve.getOffsets() is null and it shouldn't be", tve.getOffsets() != null); assertTrue("tve.getPositions() is null and it shouldn't be", tve.getPositions() != null); } mapper = new SortedTermVectorMapper(new TermVectorEntryFreqSortedComparator()); reader.get(1, mapper); set = mapper.getTermVectorEntrySet(); assertTrue("set is null and it shouldn't be", set != null); //three fields, 4 terms, all terms are the same assertTrue("set Size: " + set.size() + " is not: " + 4, set.size() == 4); //Should have offsets and positions b/c we are munging all the fields together for (Iterator iterator = set.iterator(); iterator.hasNext();) { TermVectorEntry tve = (TermVectorEntry) iterator.next(); assertTrue("tve is null and it shouldn't be", tve != null); assertTrue("tve.getOffsets() is null and it shouldn't be", tve.getOffsets() != null); assertTrue("tve.getPositions() is null and it shouldn't be", tve.getPositions() != null); } FieldSortedTermVectorMapper fsMapper = new FieldSortedTermVectorMapper(new TermVectorEntryFreqSortedComparator()); reader.get(0, fsMapper); Map map = fsMapper.getFieldToTerms(); assertTrue("map Size: " + map.size() + " is not: " + testFields.length, map.size() == testFields.length); for (Iterator iterator = map.entrySet().iterator(); iterator.hasNext();) { Map.Entry entry = (Map.Entry) iterator.next(); SortedSet sortedSet = (SortedSet) entry.getValue(); assertTrue("sortedSet Size: " + sortedSet.size() + " is not: " + 4, sortedSet.size() == 4); for (Iterator inner = sortedSet.iterator(); inner.hasNext();) { TermVectorEntry tve = (TermVectorEntry) inner.next(); assertTrue("tve is null and it shouldn't be", tve != null); //Check offsets and positions. assertTrue("tve is null and it shouldn't be", tve != null); String field = tve.getField(); if (field.equals(testFields[0])) { //should have offsets assertTrue("tve.getOffsets() is null and it shouldn't be", tve.getOffsets() != null); assertTrue("tve.getPositions() is null and it shouldn't be", tve.getPositions() != null); } else if (field.equals(testFields[1])) { //should not have offsets assertTrue("tve.getOffsets() is not null and it shouldn't be", tve.getOffsets() == null); assertTrue("tve.getPositions() is not null and it shouldn't be", tve.getPositions() == null); } } } //Try mapper that ignores offs and positions fsMapper = new FieldSortedTermVectorMapper(true, true, new TermVectorEntryFreqSortedComparator()); reader.get(0, fsMapper); map = fsMapper.getFieldToTerms(); assertTrue("map Size: " + map.size() + " is not: " + testFields.length, map.size() == testFields.length); for (Iterator iterator = map.entrySet().iterator(); iterator.hasNext();) { Map.Entry entry = (Map.Entry) iterator.next(); SortedSet sortedSet = (SortedSet) entry.getValue(); assertTrue("sortedSet Size: " + sortedSet.size() + " is not: " + 4, sortedSet.size() == 4); for (Iterator inner = sortedSet.iterator(); inner.hasNext();) { TermVectorEntry tve = (TermVectorEntry) inner.next(); assertTrue("tve is null and it shouldn't be", tve != null); //Check offsets and positions. assertTrue("tve is null and it shouldn't be", tve != null); String field = tve.getField(); if (field.equals(testFields[0])) { //should have offsets assertTrue("tve.getOffsets() is null and it shouldn't be", tve.getOffsets() == null); assertTrue("tve.getPositions() is null and it shouldn't be", tve.getPositions() == null); } else if (field.equals(testFields[1])) { //should not have offsets assertTrue("tve.getOffsets() is not null and it shouldn't be", tve.getOffsets() == null); assertTrue("tve.getPositions() is not null and it shouldn't be", tve.getPositions() == null); } } } // test setDocumentNumber() IndexReader ir = IndexReader.open(dir); DocNumAwareMapper docNumAwareMapper = new DocNumAwareMapper(); assertEquals(-1, docNumAwareMapper.getDocumentNumber()); ir.getTermFreqVector(0, docNumAwareMapper); assertEquals(0, docNumAwareMapper.getDocumentNumber()); docNumAwareMapper.setDocumentNumber(-1); ir.getTermFreqVector(1, docNumAwareMapper); assertEquals(1, docNumAwareMapper.getDocumentNumber()); docNumAwareMapper.setDocumentNumber(-1); ir.getTermFreqVector(0, "f1", docNumAwareMapper); assertEquals(0, docNumAwareMapper.getDocumentNumber()); docNumAwareMapper.setDocumentNumber(-1); ir.getTermFreqVector(1, "f2", docNumAwareMapper); assertEquals(1, docNumAwareMapper.getDocumentNumber()); docNumAwareMapper.setDocumentNumber(-1); ir.getTermFreqVector(0, "f1", docNumAwareMapper); assertEquals(0, docNumAwareMapper.getDocumentNumber()); ir.close(); } /** * Make sure exceptions and bad params are handled appropriately */ public void testBadParams() { try { TermVectorsReader reader = new TermVectorsReader(dir, seg, fieldInfos); assertTrue(reader != null); //Bad document number, good field number reader.get(50, testFields[0]); fail(); } catch (IOException e) { // expected exception } try { TermVectorsReader reader = new TermVectorsReader(dir, seg, fieldInfos); assertTrue(reader != null); //Bad document number, no field reader.get(50); fail(); } catch (IOException e) { // expected exception } try { TermVectorsReader reader = new TermVectorsReader(dir, seg, fieldInfos); assertTrue(reader != null); //good document number, bad field number TermFreqVector vector = reader.get(0, "f50"); assertTrue(vector == null); } catch (IOException e) { fail(); } } public static class DocNumAwareMapper extends TermVectorMapper { public DocNumAwareMapper() { } private int documentNumber = -1; public void setExpectations(String field, int numTerms, boolean storeOffsets, boolean storePositions) { if (documentNumber == -1) { throw new RuntimeException("Documentnumber should be set at this point!"); } } public void map(String term, int frequency, TermVectorOffsetInfo[] offsets, int[] positions) { if (documentNumber == -1) { throw new RuntimeException("Documentnumber should be set at this point!"); } } public int getDocumentNumber() { return documentNumber; } public void setDocumentNumber(int documentNumber) { this.documentNumber = documentNumber; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -