SegmentInfoTest.php 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567
  1. <?php
  2. /**
  3. * Zend Framework
  4. *
  5. * LICENSE
  6. *
  7. * This source file is subject to the new BSD license that is bundled
  8. * with this package in the file LICENSE.txt.
  9. * It is also available through the world-wide-web at this URL:
  10. * http://framework.zend.com/license/new-bsd
  11. * If you did not receive a copy of the license and are unable to
  12. * obtain it through the world-wide-web, please send an email
  13. * to license@zend.com so we can send you a copy immediately.
  14. *
  15. * @category Zend
  16. * @package Zend_Search_Lucene
  17. * @subpackage UnitTests
  18. * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  19. * @license http://framework.zend.com/license/new-bsd New BSD License
  20. * @version $Id$
  21. */
  22. /**
  23. * Zend_Search_Lucene_Index_SegmentInfo
  24. */
  25. require_once 'Zend/Search/Lucene/Index/SegmentInfo.php';
  26. /**
  27. * PHPUnit test case
  28. */
  29. require_once 'PHPUnit/Framework/TestCase.php';
  30. /**
  31. * @category Zend
  32. * @package Zend_Search_Lucene
  33. * @subpackage UnitTests
  34. * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  35. * @license http://framework.zend.com/license/new-bsd New BSD License
  36. * @group Zend_Search_Lucene
  37. */
  38. class Zend_Search_Lucene_Index_SegmentInfoTest extends PHPUnit_Framework_TestCase
  39. {
  40. public function testCreate()
  41. {
  42. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem(dirname(__FILE__) . '/_source/_files');
  43. $segmentInfo = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_1', 2);
  44. $this->assertTrue($segmentInfo instanceof Zend_Search_Lucene_Index_SegmentInfo);
  45. }
  46. public function testOpenCompoundFile()
  47. {
  48. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem(dirname(__FILE__) . '/_source/_files');
  49. $segmentInfo = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_1', 2);
  50. $file1 = $segmentInfo->openCompoundFile('.fnm');
  51. $this->assertTrue($file1 instanceof Zend_Search_Lucene_Storage_File);
  52. $file2 = $segmentInfo->openCompoundFile('.tii');
  53. $file3 = $segmentInfo->openCompoundFile('.tii');
  54. $file4 = $segmentInfo->openCompoundFile('.tii', false);
  55. $this->assertTrue($file2 instanceof Zend_Search_Lucene_Storage_File);
  56. $this->assertTrue($file2 === $file3);
  57. $this->assertTrue($file4 instanceof Zend_Search_Lucene_Storage_File);
  58. $this->assertTrue($file2 !== $file4);
  59. }
  60. public function testCompoundFileLength()
  61. {
  62. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem(dirname(__FILE__) . '/_source/_files');
  63. $segmentInfo = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_1', 2);
  64. $this->assertEquals($segmentInfo->compoundFileLength('.tii'), 58);
  65. }
  66. public function testGetFieldNum()
  67. {
  68. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem(dirname(__FILE__) . '/_source/_files');
  69. $segmentInfo = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_1', 2);
  70. $this->assertEquals($segmentInfo->getFieldNum('contents'), 2);
  71. $this->assertEquals($segmentInfo->getFieldNum('non-presented-field'), -1);
  72. }
  73. public function testGetField()
  74. {
  75. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem(dirname(__FILE__) . '/_source/_files');
  76. $segmentInfo = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_1', 2);
  77. $fieldInfo = $segmentInfo->getField(2);
  78. $this->assertEquals($fieldInfo->name, 'contents');
  79. $this->assertTrue((boolean)$fieldInfo->isIndexed);
  80. $this->assertEquals($fieldInfo->number, 2);
  81. $this->assertFalse((boolean)$fieldInfo->storeTermVector);
  82. }
  83. public function testGetFields()
  84. {
  85. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem(dirname(__FILE__) . '/_source/_files');
  86. $segmentInfo = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_1', 2);
  87. $this->assertTrue($segmentInfo->getFields() == array('path' => 'path', 'modified' => 'modified', 'contents' => 'contents'));
  88. $this->assertTrue($segmentInfo->getFields(true) == array('path' => 'path', 'modified' => 'modified', 'contents' => 'contents'));
  89. }
  90. public function testGetFieldInfos()
  91. {
  92. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem(dirname(__FILE__) . '/_source/_files');
  93. $segmentInfo = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_1', 2);
  94. $fieldInfos = $segmentInfo->getFieldInfos();
  95. $this->assertEquals($fieldInfos[0]->name, 'path');
  96. $this->assertTrue((boolean)$fieldInfos[0]->isIndexed);
  97. $this->assertEquals($fieldInfos[0]->number, 0);
  98. $this->assertFalse((boolean)$fieldInfos[0]->storeTermVector);
  99. $this->assertEquals($fieldInfos[1]->name, 'modified');
  100. $this->assertTrue((boolean)$fieldInfos[1]->isIndexed);
  101. $this->assertEquals($fieldInfos[1]->number, 1);
  102. $this->assertFalse((boolean)$fieldInfos[1]->storeTermVector);
  103. $this->assertEquals($fieldInfos[2]->name, 'contents');
  104. $this->assertTrue((boolean)$fieldInfos[2]->isIndexed);
  105. $this->assertEquals($fieldInfos[2]->number, 2);
  106. $this->assertFalse((boolean)$fieldInfos[2]->storeTermVector);
  107. }
  108. public function testCount()
  109. {
  110. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem(dirname(__FILE__) . '/_source/_files');
  111. $segmentInfo = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_1', 2);
  112. $this->assertEquals($segmentInfo->count(), 2);
  113. }
  114. public function testNumDocs()
  115. {
  116. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem(dirname(__FILE__) . '/_source/_files');
  117. $segmentInfo = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_3', 2);
  118. $this->assertEquals($segmentInfo->count(), 2);
  119. $this->assertEquals($segmentInfo->numDocs(), 1);
  120. }
  121. public function testGetName()
  122. {
  123. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem(dirname(__FILE__) . '/_source/_files');
  124. $segmentInfo = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_1', 2);
  125. $this->assertEquals($segmentInfo->getName(), '_1');
  126. }
  127. public function testGetTermInfo()
  128. {
  129. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem(dirname(__FILE__) . '/_source/_files');
  130. $segmentInfo = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_1', 2);
  131. $termInfo = $segmentInfo->getTermInfo(new Zend_Search_Lucene_Index_Term('apart', 'contents'));
  132. $this->assertEquals($termInfo->docFreq, 1);
  133. $this->assertEquals($termInfo->freqPointer, 29);
  134. $this->assertEquals($termInfo->proxPointer, 119);
  135. $this->assertEquals($termInfo->skipOffset, 0);
  136. $this->assertEquals($termInfo->indexPointer, null);
  137. $termInfo1 = $segmentInfo->getTermInfo(new Zend_Search_Lucene_Index_Term('apart', 'contents'));
  138. // test for requesting cached information
  139. $this->assertTrue($termInfo === $termInfo1);
  140. // request for non-existing term
  141. $this->assertTrue($segmentInfo->getTermInfo(new Zend_Search_Lucene_Index_Term('nonusedterm', 'contents')) === null);
  142. }
  143. public function testTermFreqs()
  144. {
  145. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem(dirname(__FILE__) . '/_source/_files');
  146. $segmentInfo = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_1', 2);
  147. $termPositions = $segmentInfo->termFreqs(new Zend_Search_Lucene_Index_Term('bgcolor', 'contents'));
  148. $this->assertTrue($termPositions == array(0 => 3, 1 => 1));
  149. $termPositions = $segmentInfo->termFreqs(new Zend_Search_Lucene_Index_Term('bgcolor', 'contents'), 10);
  150. $this->assertTrue($termPositions == array(10 => 3, 11 => 1));
  151. }
  152. public function testTermPositions()
  153. {
  154. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem(dirname(__FILE__) . '/_source/_files');
  155. $segmentInfo = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_1', 2);
  156. $termPositions = $segmentInfo->termPositions(new Zend_Search_Lucene_Index_Term('bgcolor', 'contents'));
  157. $this->assertTrue($termPositions == array(0 => array(69, 239, 370),
  158. 1 => array(58)
  159. ));
  160. $termPositions = $segmentInfo->termPositions(new Zend_Search_Lucene_Index_Term('bgcolor', 'contents'), 10);
  161. $this->assertTrue($termPositions == array(10 => array(69, 239, 370),
  162. 11 => array(58)
  163. ));
  164. }
  165. public function testNorm()
  166. {
  167. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem(dirname(__FILE__) . '/_source/_files');
  168. $segmentInfo = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_1', 2);
  169. $this->assertTrue(abs($segmentInfo->norm(1, 'contents') - 0.0546875) < 0.000001);
  170. }
  171. public function testNormVector()
  172. {
  173. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem(dirname(__FILE__) . '/_source/_files');
  174. $segmentInfo = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_1', 2);
  175. $this->assertEquals($segmentInfo->normVector('contents'), "\x69\x6B");
  176. }
  177. public function testHasDeletions()
  178. {
  179. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem(dirname(__FILE__) . '/_source/_files');
  180. $segmentInfo = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_1', 2);
  181. $this->assertFalse($segmentInfo->hasDeletions());
  182. $segmentInfo1 = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_3', 2);
  183. $this->assertTrue($segmentInfo1->hasDeletions());
  184. }
  185. public function testDelete()
  186. {
  187. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem(dirname(__FILE__) . '/_source/_files');
  188. $segmentInfo = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_1', 2, 0 /* search for _1.del file */);
  189. $this->assertFalse($segmentInfo->hasDeletions());
  190. $segmentInfo->delete(0);
  191. $this->assertTrue($segmentInfo->hasDeletions());
  192. $delGen = $segmentInfo->getDelGen();
  193. // don't write changes
  194. unset($segmentInfo);
  195. $segmentInfo1 = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_1', 2, $delGen);
  196. // Changes wasn't written, segment still has no deletions
  197. $this->assertFalse($segmentInfo1->hasDeletions());
  198. $segmentInfo1->delete(0);
  199. $segmentInfo1->writeChanges();
  200. $delGen = $segmentInfo1->getDelGen();
  201. unset($segmentInfo1);
  202. $segmentInfo2 = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_1', 2, $delGen);
  203. $this->assertTrue($segmentInfo2->hasDeletions());
  204. unset($segmentInfo2);
  205. $directory->deleteFile('_1_' . base_convert($delGen, 10, 36) . '.del');
  206. $segmentInfo3 = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_1', 2, -1 /* no detetions file */);
  207. $this->assertFalse($segmentInfo3->hasDeletions());
  208. }
  209. public function testIsDeleted()
  210. {
  211. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem(dirname(__FILE__) . '/_source/_files');
  212. $segmentInfo = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_2', 2);
  213. $this->assertFalse($segmentInfo->isDeleted(0));
  214. $segmentInfo1 = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_3', 2);
  215. $this->assertTrue($segmentInfo1->isDeleted(0));
  216. $this->assertFalse($segmentInfo1->isDeleted(1));
  217. }
  218. public function testTermStreamStyleReading()
  219. {
  220. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem(dirname(__FILE__) . '/_source/_files');
  221. $segmentInfo = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_3', 2);
  222. $this->assertEquals($segmentInfo->resetTermsStream(6, Zend_Search_Lucene_Index_SegmentInfo::SM_FULL_INFO), 8);
  223. $terms = array();
  224. $terms[] = $segmentInfo->currentTerm();
  225. $firstTermPositions = $segmentInfo->currentTermPositions();
  226. $this->assertEquals(count($firstTermPositions), 1);
  227. reset($firstTermPositions); // go to the first element
  228. $this->assertEquals(key($firstTermPositions), 7);
  229. $this->assertTrue(current($firstTermPositions) ==
  230. array(105, 113, 130, 138, 153, 168, 171, 216, 243, 253, 258, 265, 302, 324,
  231. 331, 351, 359, 366, 370, 376, 402, 410, 418, 425, 433, 441, 460, 467));
  232. while (($term = $segmentInfo->nextTerm()) != null) {
  233. $terms[] = $term;
  234. }
  235. $this->assertTrue($terms ==
  236. array(new Zend_Search_Lucene_Index_Term('a', 'contents'),
  237. new Zend_Search_Lucene_Index_Term('about', 'contents'),
  238. new Zend_Search_Lucene_Index_Term('accesskey', 'contents'),
  239. new Zend_Search_Lucene_Index_Term('align', 'contents'),
  240. new Zend_Search_Lucene_Index_Term('alink', 'contents'),
  241. new Zend_Search_Lucene_Index_Term('already', 'contents'),
  242. new Zend_Search_Lucene_Index_Term('and', 'contents'),
  243. new Zend_Search_Lucene_Index_Term('are', 'contents'),
  244. new Zend_Search_Lucene_Index_Term('at', 'contents'),
  245. new Zend_Search_Lucene_Index_Term('b', 'contents'),
  246. new Zend_Search_Lucene_Index_Term('be', 'contents'),
  247. new Zend_Search_Lucene_Index_Term('been', 'contents'),
  248. new Zend_Search_Lucene_Index_Term('bgcolor', 'contents'),
  249. new Zend_Search_Lucene_Index_Term('body', 'contents'),
  250. new Zend_Search_Lucene_Index_Term('border', 'contents'),
  251. new Zend_Search_Lucene_Index_Term('bottom', 'contents'),
  252. new Zend_Search_Lucene_Index_Term('bug', 'contents'),
  253. new Zend_Search_Lucene_Index_Term('bugs', 'contents'),
  254. new Zend_Search_Lucene_Index_Term('can', 'contents'),
  255. new Zend_Search_Lucene_Index_Term('care', 'contents'),
  256. new Zend_Search_Lucene_Index_Term('cellpadding', 'contents'),
  257. new Zend_Search_Lucene_Index_Term('cellspacing', 'contents'),
  258. new Zend_Search_Lucene_Index_Term('center', 'contents'),
  259. new Zend_Search_Lucene_Index_Term('chapter', 'contents'),
  260. new Zend_Search_Lucene_Index_Term('charset', 'contents'),
  261. new Zend_Search_Lucene_Index_Term('check', 'contents'),
  262. new Zend_Search_Lucene_Index_Term('class', 'contents'),
  263. new Zend_Search_Lucene_Index_Term('click', 'contents'),
  264. new Zend_Search_Lucene_Index_Term('colspan', 'contents'),
  265. new Zend_Search_Lucene_Index_Term('contains', 'contents'),
  266. new Zend_Search_Lucene_Index_Term('content', 'contents'),
  267. new Zend_Search_Lucene_Index_Term('contributing', 'contents'),
  268. new Zend_Search_Lucene_Index_Term('developers', 'contents'),
  269. new Zend_Search_Lucene_Index_Term('div', 'contents'),
  270. new Zend_Search_Lucene_Index_Term('docbook', 'contents'),
  271. new Zend_Search_Lucene_Index_Term('documentation', 'contents'),
  272. new Zend_Search_Lucene_Index_Term('does', 'contents'),
  273. new Zend_Search_Lucene_Index_Term('don', 'contents'),
  274. new Zend_Search_Lucene_Index_Term('double', 'contents'),
  275. new Zend_Search_Lucene_Index_Term('easiest', 'contents'),
  276. new Zend_Search_Lucene_Index_Term('equiv', 'contents'),
  277. new Zend_Search_Lucene_Index_Term('existing', 'contents'),
  278. new Zend_Search_Lucene_Index_Term('explanations', 'contents'),
  279. new Zend_Search_Lucene_Index_Term('ff', 'contents'),
  280. new Zend_Search_Lucene_Index_Term('ffffff', 'contents'),
  281. new Zend_Search_Lucene_Index_Term('fill', 'contents'),
  282. new Zend_Search_Lucene_Index_Term('find', 'contents'),
  283. new Zend_Search_Lucene_Index_Term('fixed', 'contents'),
  284. new Zend_Search_Lucene_Index_Term('footer', 'contents'),
  285. new Zend_Search_Lucene_Index_Term('for', 'contents'),
  286. new Zend_Search_Lucene_Index_Term('form', 'contents'),
  287. new Zend_Search_Lucene_Index_Term('found', 'contents'),
  288. new Zend_Search_Lucene_Index_Term('generator', 'contents'),
  289. new Zend_Search_Lucene_Index_Term('guide', 'contents'),
  290. new Zend_Search_Lucene_Index_Term('h', 'contents'),
  291. new Zend_Search_Lucene_Index_Term('hasn', 'contents'),
  292. new Zend_Search_Lucene_Index_Term('have', 'contents'),
  293. new Zend_Search_Lucene_Index_Term('head', 'contents'),
  294. new Zend_Search_Lucene_Index_Term('header', 'contents'),
  295. new Zend_Search_Lucene_Index_Term('hesitate', 'contents'),
  296. new Zend_Search_Lucene_Index_Term('home', 'contents'),
  297. new Zend_Search_Lucene_Index_Term('homepage', 'contents'),
  298. new Zend_Search_Lucene_Index_Term('how', 'contents'),
  299. new Zend_Search_Lucene_Index_Term('hr', 'contents'),
  300. new Zend_Search_Lucene_Index_Term('href', 'contents'),
  301. new Zend_Search_Lucene_Index_Term('html', 'contents'),
  302. new Zend_Search_Lucene_Index_Term('http', 'contents'),
  303. new Zend_Search_Lucene_Index_Term('if', 'contents'),
  304. new Zend_Search_Lucene_Index_Term('in', 'contents'),
  305. new Zend_Search_Lucene_Index_Term('index', 'contents'),
  306. new Zend_Search_Lucene_Index_Term('information', 'contents'),
  307. new Zend_Search_Lucene_Index_Term('is', 'contents'),
  308. new Zend_Search_Lucene_Index_Term('iso', 'contents'),
  309. new Zend_Search_Lucene_Index_Term('it', 'contents'),
  310. new Zend_Search_Lucene_Index_Term('latest', 'contents'),
  311. new Zend_Search_Lucene_Index_Term('left', 'contents'),
  312. new Zend_Search_Lucene_Index_Term('link', 'contents'),
  313. new Zend_Search_Lucene_Index_Term('list', 'contents'),
  314. new Zend_Search_Lucene_Index_Term('manual', 'contents'),
  315. new Zend_Search_Lucene_Index_Term('meet', 'contents'),
  316. new Zend_Search_Lucene_Index_Term('meta', 'contents'),
  317. new Zend_Search_Lucene_Index_Term('modular', 'contents'),
  318. new Zend_Search_Lucene_Index_Term('more', 'contents'),
  319. new Zend_Search_Lucene_Index_Term('n', 'contents'),
  320. new Zend_Search_Lucene_Index_Term('name', 'contents'),
  321. new Zend_Search_Lucene_Index_Term('navfooter', 'contents'),
  322. new Zend_Search_Lucene_Index_Term('navheader', 'contents'),
  323. new Zend_Search_Lucene_Index_Term('navigation', 'contents'),
  324. new Zend_Search_Lucene_Index_Term('net', 'contents'),
  325. new Zend_Search_Lucene_Index_Term('new', 'contents'),
  326. new Zend_Search_Lucene_Index_Term('newpackage', 'contents'),
  327. new Zend_Search_Lucene_Index_Term('next', 'contents'),
  328. new Zend_Search_Lucene_Index_Term('of', 'contents'),
  329. new Zend_Search_Lucene_Index_Term('on', 'contents'),
  330. new Zend_Search_Lucene_Index_Term('out', 'contents'),
  331. new Zend_Search_Lucene_Index_Term('p', 'contents'),
  332. new Zend_Search_Lucene_Index_Term('package', 'contents'),
  333. new Zend_Search_Lucene_Index_Term('packages', 'contents'),
  334. new Zend_Search_Lucene_Index_Term('page', 'contents'),
  335. new Zend_Search_Lucene_Index_Term('patches', 'contents'),
  336. new Zend_Search_Lucene_Index_Term('pear', 'contents'),
  337. new Zend_Search_Lucene_Index_Term('persists', 'contents'),
  338. new Zend_Search_Lucene_Index_Term('php', 'contents'),
  339. new Zend_Search_Lucene_Index_Term('please', 'contents'),
  340. new Zend_Search_Lucene_Index_Term('prev', 'contents'),
  341. new Zend_Search_Lucene_Index_Term('previous', 'contents'),
  342. new Zend_Search_Lucene_Index_Term('proper', 'contents'),
  343. new Zend_Search_Lucene_Index_Term('quote', 'contents'),
  344. new Zend_Search_Lucene_Index_Term('read', 'contents'),
  345. new Zend_Search_Lucene_Index_Term('rel', 'contents'),
  346. new Zend_Search_Lucene_Index_Term('report', 'contents'),
  347. new Zend_Search_Lucene_Index_Term('reported', 'contents'),
  348. new Zend_Search_Lucene_Index_Term('reporting', 'contents'),
  349. new Zend_Search_Lucene_Index_Term('requirements', 'contents'),
  350. new Zend_Search_Lucene_Index_Term('right', 'contents'),
  351. new Zend_Search_Lucene_Index_Term('sect', 'contents'),
  352. new Zend_Search_Lucene_Index_Term('span', 'contents'),
  353. new Zend_Search_Lucene_Index_Term('still', 'contents'),
  354. new Zend_Search_Lucene_Index_Term('stylesheet', 'contents'),
  355. new Zend_Search_Lucene_Index_Term('submitting', 'contents'),
  356. new Zend_Search_Lucene_Index_Term('summary', 'contents'),
  357. new Zend_Search_Lucene_Index_Term('system', 'contents'),
  358. new Zend_Search_Lucene_Index_Term('t', 'contents'),
  359. new Zend_Search_Lucene_Index_Term('table', 'contents'),
  360. new Zend_Search_Lucene_Index_Term('take', 'contents'),
  361. new Zend_Search_Lucene_Index_Term('target', 'contents'),
  362. new Zend_Search_Lucene_Index_Term('td', 'contents'),
  363. new Zend_Search_Lucene_Index_Term('text', 'contents'),
  364. new Zend_Search_Lucene_Index_Term('th', 'contents'),
  365. new Zend_Search_Lucene_Index_Term('that', 'contents'),
  366. new Zend_Search_Lucene_Index_Term('the', 'contents'),
  367. new Zend_Search_Lucene_Index_Term('think', 'contents'),
  368. new Zend_Search_Lucene_Index_Term('this', 'contents'),
  369. new Zend_Search_Lucene_Index_Term('tips', 'contents'),
  370. new Zend_Search_Lucene_Index_Term('title', 'contents'),
  371. new Zend_Search_Lucene_Index_Term('to', 'contents'),
  372. new Zend_Search_Lucene_Index_Term('top', 'contents'),
  373. new Zend_Search_Lucene_Index_Term('tr', 'contents'),
  374. new Zend_Search_Lucene_Index_Term('translating', 'contents'),
  375. new Zend_Search_Lucene_Index_Term('type', 'contents'),
  376. new Zend_Search_Lucene_Index_Term('u', 'contents'),
  377. new Zend_Search_Lucene_Index_Term('unable', 'contents'),
  378. new Zend_Search_Lucene_Index_Term('up', 'contents'),
  379. new Zend_Search_Lucene_Index_Term('using', 'contents'),
  380. new Zend_Search_Lucene_Index_Term('valign', 'contents'),
  381. new Zend_Search_Lucene_Index_Term('version', 'contents'),
  382. new Zend_Search_Lucene_Index_Term('vlink', 'contents'),
  383. new Zend_Search_Lucene_Index_Term('way', 'contents'),
  384. new Zend_Search_Lucene_Index_Term('which', 'contents'),
  385. new Zend_Search_Lucene_Index_Term('width', 'contents'),
  386. new Zend_Search_Lucene_Index_Term('will', 'contents'),
  387. new Zend_Search_Lucene_Index_Term('with', 'contents'),
  388. new Zend_Search_Lucene_Index_Term('writing', 'contents'),
  389. new Zend_Search_Lucene_Index_Term('you', 'contents'),
  390. new Zend_Search_Lucene_Index_Term('your', 'contents'),
  391. new Zend_Search_Lucene_Index_Term('1178009946', 'modified'),
  392. new Zend_Search_Lucene_Index_Term('bugs', 'path'),
  393. new Zend_Search_Lucene_Index_Term('contributing', 'path'),
  394. new Zend_Search_Lucene_Index_Term('html', 'path'),
  395. new Zend_Search_Lucene_Index_Term('indexsource', 'path'),
  396. new Zend_Search_Lucene_Index_Term('newpackage', 'path'),
  397. ));
  398. unset($segmentInfo);
  399. $segmentInfo1 = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_3', 2);
  400. $this->assertEquals($segmentInfo1->resetTermsStream(6, Zend_Search_Lucene_Index_SegmentInfo::SM_MERGE_INFO), 7);
  401. }
  402. public function testTermStreamStyleReadingSkipTo()
  403. {
  404. $directory = new Zend_Search_Lucene_Storage_Directory_Filesystem(dirname(__FILE__) . '/_source/_files');
  405. $segmentInfo = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_3', 2);
  406. $this->assertEquals($segmentInfo->resetTermsStream(6, Zend_Search_Lucene_Index_SegmentInfo::SM_FULL_INFO), 8);
  407. $segmentInfo->skipTo(new Zend_Search_Lucene_Index_Term('prefetch', 'contents'));
  408. $terms = array();
  409. $terms[] = $segmentInfo->currentTerm();
  410. $firstTermPositions = $segmentInfo->currentTermPositions();
  411. $this->assertEquals(count($firstTermPositions), 1);
  412. reset($firstTermPositions); // go to the first element
  413. $this->assertEquals(key($firstTermPositions), 7);
  414. $this->assertTrue(current($firstTermPositions) == array(112, 409));
  415. while (($term = $segmentInfo->nextTerm()) != null) {
  416. $terms[] = $term;
  417. }
  418. $this->assertTrue($terms ==
  419. array(new Zend_Search_Lucene_Index_Term('prev', 'contents'),
  420. new Zend_Search_Lucene_Index_Term('previous', 'contents'),
  421. new Zend_Search_Lucene_Index_Term('proper', 'contents'),
  422. new Zend_Search_Lucene_Index_Term('quote', 'contents'),
  423. new Zend_Search_Lucene_Index_Term('read', 'contents'),
  424. new Zend_Search_Lucene_Index_Term('rel', 'contents'),
  425. new Zend_Search_Lucene_Index_Term('report', 'contents'),
  426. new Zend_Search_Lucene_Index_Term('reported', 'contents'),
  427. new Zend_Search_Lucene_Index_Term('reporting', 'contents'),
  428. new Zend_Search_Lucene_Index_Term('requirements', 'contents'),
  429. new Zend_Search_Lucene_Index_Term('right', 'contents'),
  430. new Zend_Search_Lucene_Index_Term('sect', 'contents'),
  431. new Zend_Search_Lucene_Index_Term('span', 'contents'),
  432. new Zend_Search_Lucene_Index_Term('still', 'contents'),
  433. new Zend_Search_Lucene_Index_Term('stylesheet', 'contents'),
  434. new Zend_Search_Lucene_Index_Term('submitting', 'contents'),
  435. new Zend_Search_Lucene_Index_Term('summary', 'contents'),
  436. new Zend_Search_Lucene_Index_Term('system', 'contents'),
  437. new Zend_Search_Lucene_Index_Term('t', 'contents'),
  438. new Zend_Search_Lucene_Index_Term('table', 'contents'),
  439. new Zend_Search_Lucene_Index_Term('take', 'contents'),
  440. new Zend_Search_Lucene_Index_Term('target', 'contents'),
  441. new Zend_Search_Lucene_Index_Term('td', 'contents'),
  442. new Zend_Search_Lucene_Index_Term('text', 'contents'),
  443. new Zend_Search_Lucene_Index_Term('th', 'contents'),
  444. new Zend_Search_Lucene_Index_Term('that', 'contents'),
  445. new Zend_Search_Lucene_Index_Term('the', 'contents'),
  446. new Zend_Search_Lucene_Index_Term('think', 'contents'),
  447. new Zend_Search_Lucene_Index_Term('this', 'contents'),
  448. new Zend_Search_Lucene_Index_Term('tips', 'contents'),
  449. new Zend_Search_Lucene_Index_Term('title', 'contents'),
  450. new Zend_Search_Lucene_Index_Term('to', 'contents'),
  451. new Zend_Search_Lucene_Index_Term('top', 'contents'),
  452. new Zend_Search_Lucene_Index_Term('tr', 'contents'),
  453. new Zend_Search_Lucene_Index_Term('translating', 'contents'),
  454. new Zend_Search_Lucene_Index_Term('type', 'contents'),
  455. new Zend_Search_Lucene_Index_Term('u', 'contents'),
  456. new Zend_Search_Lucene_Index_Term('unable', 'contents'),
  457. new Zend_Search_Lucene_Index_Term('up', 'contents'),
  458. new Zend_Search_Lucene_Index_Term('using', 'contents'),
  459. new Zend_Search_Lucene_Index_Term('valign', 'contents'),
  460. new Zend_Search_Lucene_Index_Term('version', 'contents'),
  461. new Zend_Search_Lucene_Index_Term('vlink', 'contents'),
  462. new Zend_Search_Lucene_Index_Term('way', 'contents'),
  463. new Zend_Search_Lucene_Index_Term('which', 'contents'),
  464. new Zend_Search_Lucene_Index_Term('width', 'contents'),
  465. new Zend_Search_Lucene_Index_Term('will', 'contents'),
  466. new Zend_Search_Lucene_Index_Term('with', 'contents'),
  467. new Zend_Search_Lucene_Index_Term('writing', 'contents'),
  468. new Zend_Search_Lucene_Index_Term('you', 'contents'),
  469. new Zend_Search_Lucene_Index_Term('your', 'contents'),
  470. new Zend_Search_Lucene_Index_Term('1178009946', 'modified'),
  471. new Zend_Search_Lucene_Index_Term('bugs', 'path'),
  472. new Zend_Search_Lucene_Index_Term('contributing', 'path'),
  473. new Zend_Search_Lucene_Index_Term('html', 'path'),
  474. new Zend_Search_Lucene_Index_Term('indexsource', 'path'),
  475. new Zend_Search_Lucene_Index_Term('newpackage', 'path'),
  476. ));
  477. unset($segmentInfo);
  478. $segmentInfo1 = new Zend_Search_Lucene_Index_SegmentInfo($directory, '_3', 2);
  479. $this->assertEquals($segmentInfo1->resetTermsStream(6, Zend_Search_Lucene_Index_SegmentInfo::SM_MERGE_INFO), 7);
  480. }
  481. }