/** * Merge fields information */ private function _mergeStoredFields() { $this->_docCount = 0; foreach ($this->_segmentInfos as $segName => $segmentInfo) { $fdtFile = $segmentInfo->openCompoundFile('.fdt'); for ($count = 0; $count < $segmentInfo->count(); $count++) { $fieldCount = $fdtFile->readVInt(); $storedFields = array(); for ($count2 = 0; $count2 < $fieldCount; $count2++) { $fieldNum = $fdtFile->readVInt(); $bits = $fdtFile->readByte(); $fieldInfo = $segmentInfo->getField($fieldNum); if (!($bits & 2)) { // Text data $storedFields[] = new Zend_Search_Lucene_Field($fieldInfo->name, $fdtFile->readString(), 'UTF-8', true, $fieldInfo->isIndexed, $bits & 1); } else { // Binary data $storedFields[] = new Zend_Search_Lucene_Field($fieldInfo->name, $fdtFile->readBinary(), '', true, $fieldInfo->isIndexed, $bits & 1, true); } } if (!$segmentInfo->isDeleted($count)) { $this->_docCount++; $this->_writer->addStoredFields($storedFields); } } } }