Merge branch 'w43_MDL-29923_m22_removesearch' of git://github.com/skodak/moodle
authorAparup Banerjee <aparup@moodle.com>
Mon, 31 Oct 2011 02:23:59 +0000 (10:23 +0800)
committerAparup Banerjee <aparup@moodle.com>
Mon, 31 Oct 2011 02:23:59 +0000 (10:23 +0800)
130 files changed:
admin/settings/development.php
blocks/search/README.txt [deleted file]
blocks/search/block_search.php [deleted file]
blocks/search/db/install.php [deleted file]
blocks/search/db/install.xml [deleted file]
blocks/search/db/upgrade.php [deleted file]
blocks/search/db/upgradelib.php [deleted file]
blocks/search/lang/en/block_search.php [deleted file]
blocks/search/settings.php [deleted file]
blocks/search/version.php [deleted file]
lang/en/admin.php
lib/db/upgrade.php
lib/pluginlib.php
search/.cvsignore [deleted file]
search/LISEZMOI.txt [deleted file]
search/README.txt [deleted file]
search/README_ARCHIVE.txt [deleted file]
search/Zend/Exception.php [deleted file]
search/Zend/IMPORTANT.txt [deleted file]
search/Zend/LICENSE.txt [deleted file]
search/Zend/Search/Exception.php [deleted file]
search/Zend/Search/Lucene.php [deleted file]
search/Zend/Search/Lucene/Analysis/Analyzer.php [deleted file]
search/Zend/Search/Lucene/Analysis/Analyzer/Common.php [deleted file]
search/Zend/Search/Lucene/Analysis/Analyzer/Common/Text.php [deleted file]
search/Zend/Search/Lucene/Analysis/Analyzer/Common/Text/CaseInsensitive.php [deleted file]
search/Zend/Search/Lucene/Analysis/Analyzer/Common/TextNum.php [deleted file]
search/Zend/Search/Lucene/Analysis/Analyzer/Common/TextNum/CaseInsensitive.php [deleted file]
search/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8.php [deleted file]
search/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8/CaseInsensitive.php [deleted file]
search/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8Num.php [deleted file]
search/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8Num/CaseInsensitive.php [deleted file]
search/Zend/Search/Lucene/Analysis/Token.php [deleted file]
search/Zend/Search/Lucene/Analysis/TokenFilter.php [deleted file]
search/Zend/Search/Lucene/Analysis/TokenFilter/LowerCase.php [deleted file]
search/Zend/Search/Lucene/Analysis/TokenFilter/LowerCaseUtf8.php [deleted file]
search/Zend/Search/Lucene/Analysis/TokenFilter/ShortWords.php [deleted file]
search/Zend/Search/Lucene/Analysis/TokenFilter/StopWords.php [deleted file]
search/Zend/Search/Lucene/Document.php [deleted file]
search/Zend/Search/Lucene/Document/Html.php [deleted file]
search/Zend/Search/Lucene/Exception.php [deleted file]
search/Zend/Search/Lucene/FSM.php [deleted file]
search/Zend/Search/Lucene/FSMAction.php [deleted file]
search/Zend/Search/Lucene/Field.php [deleted file]
search/Zend/Search/Lucene/Index/DictionaryLoader.php [deleted file]
search/Zend/Search/Lucene/Index/FieldInfo.php [deleted file]
search/Zend/Search/Lucene/Index/SegmentInfo.php [deleted file]
search/Zend/Search/Lucene/Index/SegmentInfoPriorityQueue.php [deleted file]
search/Zend/Search/Lucene/Index/SegmentMerger.php [deleted file]
search/Zend/Search/Lucene/Index/SegmentWriter.php [deleted file]
search/Zend/Search/Lucene/Index/SegmentWriter/DocumentWriter.php [deleted file]
search/Zend/Search/Lucene/Index/SegmentWriter/StreamWriter.php [deleted file]
search/Zend/Search/Lucene/Index/Term.php [deleted file]
search/Zend/Search/Lucene/Index/TermInfo.php [deleted file]
search/Zend/Search/Lucene/Index/Writer.php [deleted file]
search/Zend/Search/Lucene/Interface.php [deleted file]
search/Zend/Search/Lucene/LockManager.php [deleted file]
search/Zend/Search/Lucene/PriorityQueue.php [deleted file]
search/Zend/Search/Lucene/Proxy.php [deleted file]
search/Zend/Search/Lucene/Search/BooleanExpressionRecognizer.php [deleted file]
search/Zend/Search/Lucene/Search/Query.php [deleted file]
search/Zend/Search/Lucene/Search/Query/Boolean.php [deleted file]
search/Zend/Search/Lucene/Search/Query/Empty.php [deleted file]
search/Zend/Search/Lucene/Search/Query/Fuzzy.php [deleted file]
search/Zend/Search/Lucene/Search/Query/Insignificant.php [deleted file]
search/Zend/Search/Lucene/Search/Query/MultiTerm.php [deleted file]
search/Zend/Search/Lucene/Search/Query/Phrase.php [deleted file]
search/Zend/Search/Lucene/Search/Query/Range.php [deleted file]
search/Zend/Search/Lucene/Search/Query/Term.php [deleted file]
search/Zend/Search/Lucene/Search/Query/Wildcard.php [deleted file]
search/Zend/Search/Lucene/Search/QueryEntry.php [deleted file]
search/Zend/Search/Lucene/Search/QueryEntry/Phrase.php [deleted file]
search/Zend/Search/Lucene/Search/QueryEntry/Subquery.php [deleted file]
search/Zend/Search/Lucene/Search/QueryEntry/Term.php [deleted file]
search/Zend/Search/Lucene/Search/QueryHit.php [deleted file]
search/Zend/Search/Lucene/Search/QueryLexer.php [deleted file]
search/Zend/Search/Lucene/Search/QueryParser.php [deleted file]
search/Zend/Search/Lucene/Search/QueryParserContext.php [deleted file]
search/Zend/Search/Lucene/Search/QueryParserException.php [deleted file]
search/Zend/Search/Lucene/Search/QueryToken.php [deleted file]
search/Zend/Search/Lucene/Search/Similarity.php [deleted file]
search/Zend/Search/Lucene/Search/Similarity/Default.php [deleted file]
search/Zend/Search/Lucene/Search/Weight.php [deleted file]
search/Zend/Search/Lucene/Search/Weight/Boolean.php [deleted file]
search/Zend/Search/Lucene/Search/Weight/Empty.php [deleted file]
search/Zend/Search/Lucene/Search/Weight/MultiTerm.php [deleted file]
search/Zend/Search/Lucene/Search/Weight/Phrase.php [deleted file]
search/Zend/Search/Lucene/Search/Weight/Term.php [deleted file]
search/Zend/Search/Lucene/Storage/Directory.php [deleted file]
search/Zend/Search/Lucene/Storage/Directory/Filesystem.php [deleted file]
search/Zend/Search/Lucene/Storage/File.php [deleted file]
search/Zend/Search/Lucene/Storage/File/Filesystem.php [deleted file]
search/Zend/Search/Lucene/Storage/File/Memory.php [deleted file]
search/Zend/Search/TODO.txt [deleted file]
search/add.php [deleted file]
search/cron.php [deleted file]
search/cron_php5.php [deleted file]
search/delete.php [deleted file]
search/documents/assignment_document.php [deleted file]
search/documents/chat_document.php [deleted file]
search/documents/data_document.php [deleted file]
search/documents/document.php [deleted file]
search/documents/forum_document.php [deleted file]
search/documents/glossary_document.php [deleted file]
search/documents/label_document.php [deleted file]
search/documents/lesson_document.php [deleted file]
search/documents/physical_doc.php [deleted file]
search/documents/physical_htm.php [deleted file]
search/documents/physical_html.php [deleted file]
search/documents/physical_odt.php [deleted file]
search/documents/physical_pdf.php [deleted file]
search/documents/physical_ppt.php [deleted file]
search/documents/physical_swf.php [deleted file]
search/documents/physical_txt.php [deleted file]
search/documents/physical_xml.php [deleted file]
search/documents/resource_document.php [deleted file]
search/documents/user_document.php [deleted file]
search/documents/wiki_document.php [deleted file]
search/index.php [deleted file]
search/indexer.php [deleted file]
search/indexersplash.php [deleted file]
search/indexlib.php [deleted file]
search/lib.php [deleted file]
search/query.php [deleted file]
search/querylib.php [deleted file]
search/searchtypes.php [deleted file]
search/stats.php [deleted file]
search/tests/index.php [deleted file]
search/update.php [deleted file]
version.php

index 192df5b..d6c9e4f 100644 (file)
@@ -7,11 +7,7 @@ if ($hassiteconfig) { // speedup for non-admins, add all caps used on this page
     // Experimental settings page
     $ADMIN->add('development', new admin_category('experimental', get_string('experimental','admin')));
 
-    require_once($CFG->dirroot .'/search/lib.php');
     $temp = new admin_settingpage('experimentalsettings', get_string('experimentalsettings', 'admin'));
-    $englobalsearch = new admin_setting_configcheckbox('enableglobalsearch', get_string('enableglobalsearch', 'admin'), get_string('configenableglobalsearch', 'admin'), 0);
-    $englobalsearch->set_updatedcallback('search_updatedcallback');
-    $temp->add($englobalsearch);
     //TODO: Re-enable cc-import once re-implemented in 2.0.x
     //$temp->add(new admin_setting_configcheckbox('enableimsccimport', get_string('enable_cc_import', 'imscc'), get_string('enable_cc_import_description', 'imscc'), 0));
     $temp->add(new admin_setting_configcheckbox('enablesafebrowserintegration', get_string('enablesafebrowserintegration', 'admin'), get_string('configenablesafebrowserintegration', 'admin'), 0));
diff --git a/blocks/search/README.txt b/blocks/search/README.txt
deleted file mode 100644 (file)
index 48dfb9f..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-This block is a revamping of the Google Summer Of Code Project (2006) on Global Search engine
-for Moodle. New block version is completed and internationalized according to Moodle multilengual support.
-
-This block instanciates a startup database model for the search engine.
-
-## Installing
-
-You need installing the following elements in order the global search to be available :
-
-1. The global search bloc (this block)
-2. update the /search root package from CVS
-3. The antiword libraries
-4. The xpdf libraries
-
-Both last libraries are provided as a patch called "global_search_libraries" in the contrib section.
\ No newline at end of file
diff --git a/blocks/search/block_search.php b/blocks/search/block_search.php
deleted file mode 100644 (file)
index 1aeb08c..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-
-/** This is the global search shortcut block - a single query can be entered, and
- * the user will be redirected to the query page where they can enter more
- *  advanced queries, and view the results of their search. When searching from
- *  this block, the broadest possible selection of documents is searched.
- *
- * @package search
- * @subpackage search block
- * @author: Michael Champanis (mchampan), reengineered by Valery Fremaux
- * @date: 2006 06 25
- */
-
-class block_search extends block_base {
-
-    function init() {
-      $this->title = get_string('pluginname', 'block_search');
-    } //init
-
-    // only one instance of this block is required
-    function instance_allow_multiple() {
-      return false;
-    } //instance_allow_multiple
-
-    // label and button values can be set in admin
-    function has_config() {
-      return true;
-    } //has_config
-
-    function get_content() {
-      global $CFG;
-
-      if (empty($CFG->enableglobalsearch)) {
-        return '';
-      }
-
-      //cache block contents
-      if ($this->content !== NULL) {
-        return $this->content;
-      } //if
-
-      $this->content = new stdClass;
-
-      //basic search form
-      $this->content->text =
-            '<form id="searchquery" method="get" action="'. $CFG->wwwroot .'/search/query.php"><div>'
-          . '<label for="block_search_q">' . get_string('searchmoodle', 'block_search') . '</label>'
-          . '<input id="block_search_q" type="text" name="query_string" />'
-          . '<input id="block_instance_id" type="hidden" name="block_instanceid" value="' . $this->instance->id . '"/>'
-          . '<input type="submit" value="' . s(get_string('go', 'block_search')) . '" />'
-          . '</div></form>';
-
-      //no footer, thanks
-      $this->content->footer = '';
-
-      return $this->content;
-    } //get_content
-
-    function specialisation() {
-      //empty!
-    } //specialisation
-
-    /**
-     * wraps up to search engine cron
-     */
-    function cron(){
-        global $CFG;
-
-        include($CFG->dirroot.'/search/cron.php');
-    }
-
-  } //block_search
-
diff --git a/blocks/search/db/install.php b/blocks/search/db/install.php
deleted file mode 100644 (file)
index f8a13cf..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-
-function xmldb_block_search_install() {
-    global $DB;
-
-    // Disable this block by default as its experimental.
-    $DB->set_field('block', 'visible', 0, array('name'=>'search'));
-
-}
-
diff --git a/blocks/search/db/install.xml b/blocks/search/db/install.xml
deleted file mode 100644 (file)
index c5c2b52..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<XMLDB PATH="blocks/search/db" VERSION="20101012" COMMENT="XMLDB file for Moodle search engine"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd"
->
-  <TABLES>
-    <TABLE NAME="block_search_documents" COMMENT="table to store search index backups">
-      <FIELDS>
-        <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" SEQUENCE="true" NEXT="docid"/>
-        <FIELD NAME="docid" TYPE="char" LENGTH="32" NOTNULL="true" SEQUENCE="false" PREVIOUS="id" NEXT="doctype"/>
-        <FIELD NAME="doctype" TYPE="char" LENGTH="32" NOTNULL="true" DEFAULT="none" SEQUENCE="false" PREVIOUS="docid" NEXT="itemtype"/>
-        <FIELD NAME="itemtype" TYPE="char" LENGTH="32" NOTNULL="true" DEFAULT="standard" SEQUENCE="false" PREVIOUS="doctype" NEXT="title"/>
-        <FIELD NAME="title" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" PREVIOUS="itemtype" NEXT="url"/>
-        <FIELD NAME="url" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" PREVIOUS="title" NEXT="docdate"/>
-        <FIELD NAME="docdate" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="url" NEXT="updated"/>
-        <FIELD NAME="updated" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="docdate" NEXT="courseid"/>
-        <FIELD NAME="courseid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="updated" NEXT="groupid"/>
-        <FIELD NAME="groupid" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="courseid"/>
-      </FIELDS>
-      <KEYS>
-        <KEY NAME="primary" TYPE="primary" FIELDS="id" />
-      </KEYS>
-      <INDEXES>
-        <INDEX NAME="mdl_search_docid" UNIQUE="false" FIELDS="docid" NEXT="mdl_search_doctype"/>
-        <INDEX NAME="mdl_search_doctype" UNIQUE="false" FIELDS="doctype" PREVIOUS="mdl_search_docid" NEXT="mdl_search_itemtype"/>
-        <INDEX NAME="mdl_search_itemtype" UNIQUE="false" FIELDS="itemtype" PREVIOUS="mdl_search_doctype"/>
-      </INDEXES>
-    </TABLE>
-  </TABLES>
-</XMLDB>
\ No newline at end of file
diff --git a/blocks/search/db/upgrade.php b/blocks/search/db/upgrade.php
deleted file mode 100644 (file)
index 952a129..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-
-// This file is part of Moodle - http://moodle.org/
-//
-// Moodle is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Moodle is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
-
-/**
- * Keeps track of upgrades to the global search block
- *
- * @package    blocks
- * @subpackage search
- * @copyright  2010 Aparup Banerjee <aparup@moodle.com>
- * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- */
-
-defined('MOODLE_INTERNAL') || die();
-
-function xmldb_block_search_upgrade($oldversion) {
-    global $CFG, $DB;
-
-    require('upgradelib.php');
-    $result = TRUE;
-    $dbman = $DB->get_manager();
-
-    if ($oldversion < 2010101800) {
-        // See MDL-24374
-        // Changing type of field docdate on table block_search_documents to int
-        // Changing type of field updated on table block_search_documents to int
-        $table = new xmldb_table('block_search_documents');
-
-        $field_docdate_new = new xmldb_field('docdate_new', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', 'docdate');
-        $field_updated_new = new xmldb_field('updated_new', XMLDB_TYPE_INTEGER, '10', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', 'updated');
-        $field_docdate_old = new xmldb_field('docdate');
-        $field_updated_old = new xmldb_field('updated');
-
-        // Conditionally launch add temporary fields
-        if (!$dbman->field_exists($table, $field_docdate_new)) {
-            $dbman->add_field($table, $field_docdate_new);
-        }
-        if (!$dbman->field_exists($table, $field_updated_new)) {
-            $dbman->add_field($table, $field_updated_new);
-        }
-
-        $sql = "SELECT id, docdate, updated FROM {block_search_documents}";
-        $search_documents = $DB->get_records_sql($sql);
-        if ($search_documents) {
-            foreach ($search_documents as $sd) {
-                $sd->docdate_new = convert_datetime_upgrade($sd->docdate);
-                $sd->updated_new = convert_datetime_upgrade($sd->updated);
-                $DB->update_record('block_search_documents', $sd);
-            }
-        }
-        // Conditionally launch drop the old fields
-        if ($dbman->field_exists($table, $field_docdate_old)) {
-            $dbman->drop_field($table, $field_docdate_old);
-        }
-        if ($dbman->field_exists($table, $field_updated_old)) {
-            $dbman->drop_field($table, $field_updated_old);
-        }
-
-        //rename the new fields to the original field names.
-        $dbman->rename_field($table, $field_docdate_new, 'docdate');
-        $dbman->rename_field($table, $field_updated_new, 'updated');
-
-        // search savepoint reached
-        upgrade_block_savepoint(true, 2010101800, 'search');
-    }
-
-    if ($oldversion < 2010110900) {
-        unset_config('block_search_text');
-        unset_config('block_search_button');
-        upgrade_block_savepoint(true, 2010110900, 'search');
-    }
-
-    if ($oldversion < 2010111100) {
-        // set block to hidden if global search is disabled.
-        if ($CFG->enableglobalsearch != 1) {
-            $DB->set_field('block', 'visible', 0, array('name'=>'search'));     // Hide block
-        }
-        upgrade_block_savepoint(true, 2010111100, 'search');
-    }
-    return $result;
-}
diff --git a/blocks/search/db/upgradelib.php b/blocks/search/db/upgradelib.php
deleted file mode 100644 (file)
index a85c452..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-// This file is part of Moodle - http://moodle.org/
-//
-// Moodle is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Moodle is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
-
-/**
- * Global search block upgrade related helper functions
- *
- * @package    blocks
- * @subpackage search
- * @copyright  2010 Aparup Banerjee
- * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- */
-
-defined('MOODLE_INTERNAL') || die();
-
-/*
-* Function to turn a mysql(datetime) or postgres(timestamp without timezone data) or any generic date string (YYYY-MM-DD HH:MM:SS)
-* read in from a database's date/time field (ie:valid) into a unix timestamp
-* @param str The string to be converted to timestamp
-* @return timestamp or 0
-*/
-
-function convert_datetime_upgrade($str) {
-
-    $timestamp = strtotime($str);
-    //process different failure returns due to different php versions
-    if ($timestamp === false || $timestamp < 1) {
-        return 0;
-    } else {
-        return $timestamp;
-    }
-}
-
diff --git a/blocks/search/lang/en/block_search.php b/blocks/search/lang/en/block_search.php
deleted file mode 100644 (file)
index 06df0ed..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-// This file is part of Moodle - http://moodle.org/
-//
-// Moodle is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Moodle is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
-
-/**
- * Strings for component 'block_search', language 'en', branch 'MOODLE_20_STABLE'
- *
- * @package   block_search
- * @copyright 1999 onwards Martin Dougiamas  {@link http://moodle.com}
- * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- */
-
-$string['blockssearchswitches'] = 'Indexer activation for blocks';
-$string['bytes'] = 'bytes (0 stands for no limits)';
-$string['configenablefileindexing'] = 'Enable file indexing';
-$string['configfiletypes'] = 'File types handled';
-$string['configlimitindexbody'] = 'Indexed body size limitation';
-$string['configpdftotextcmd'] = 'Path to command pdftotext';
-$string['configtypetotxtcmd'] = 'Converter\'s command line';
-$string['configtypetotxtenv'] = 'Environment define for converter';
-$string['configwordtotextcmd'] = 'Path to command doctotext';
-$string['configwordtotextenv'] = 'Environment setting for the MSWord converter';
-$string['cmdtoconverttotextfor'] = 'Command to convert {$a} to text';
-$string['enablefileindexing'] = 'Turn on indexing of different file types';
-$string['enableindexinginmodule'] = 'Allow indexing of the {$a} module';
-$string['enableindexinginblock'] = 'Allow indexing of the {$a} block';
-$string['envforcmdtotextfor'] = 'Environment for {$a} conversion command to text';
-$string['go'] = 'Go!';
-$string['handlingfor'] = 'Extra handling for';
-$string['indexbodylimit'] = 'The limit of indexing the body';
-$string['listoffiletypes'] = 'The list of file types handled';
-$string['modulessearchswitches'] = 'Indexer activation for modules';
-$string['nosearchableblocks'] = 'No searchable blocks';
-$string['nosearchablemodules'] = 'No searchable modules';
-$string['pdfhandling'] = 'Acrobat PDF handling';
-$string['pdftotextcmd'] = 'Command to convert PDF to text';
-$string['pluginname'] = 'Global search';
-$string['searchdiscovery'] = 'Searchable items discovery';
-$string['searchmoodle'] = 'Search Moodle';
-$string['usemoodleroot'] = 'Use moodle root for external converters';
-$string['usemoodlerootdescription'] = 'Use moodle root for external converters';
-$string['wordhandling'] = 'Microsoft Word handling';
-$string['wordtotextcmd'] = 'Command to convert Microsoft Word to text';
-$string['wordtotextenv'] = 'Environment setup for Microsoft Word to text converter';
diff --git a/blocks/search/settings.php b/blocks/search/settings.php
deleted file mode 100644 (file)
index 44fee6c..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-
-defined('MOODLE_INTERNAL') || die;
-
-if ($ADMIN->fulltree) {
-
-    //Enable file indexing (y/n)
-    $settings->add(new admin_setting_configcheckbox('block_search_enable_file_indexing', get_string('configenablefileindexing', 'block_search'),
-                       get_string('enablefileindexing', 'block_search'), 0, 1, 0));
-
-    //file types
-    $defaultfiletypes = 'PDF,TXT,HTML,PPT,XML,DOC,HTM';
-    $settings->add(new admin_setting_configtext('block_search_filetypes', get_string('configfiletypes', 'block_search'),
-                       get_string('listoffiletypes', 'block_search'), $defaultfiletypes, PARAM_TEXT));
-
-    // usemoodleroot
-    $settings->add(new admin_setting_configcheckbox('block_search_usemoodleroot', get_string('usemoodleroot', 'block_search'),
-                       get_string('usemoodlerootdescription', 'block_search'), 1, 1, 0));
-
-    //limit_index_body
-    $settings->add(new admin_setting_configtext('block_search_limit_index_body', get_string('configlimitindexbody', 'block_search'),
-                       get_string('indexbodylimit', 'block_search'), '', PARAM_INT));
-
-    //setup default paths for following configs.
-    if ($CFG->ostype == 'WINDOWS') {
-        $default_pdf_to_text_cmd = "lib/xpdf/win32/pdftotext.exe -eol dos -enc UTF-8 -q";
-        $default_word_to_text_cmd = "lib/antiword/win32/antiword/antiword.exe ";
-        $default_word_to_text_env = "HOME={$CFG->dirroot}\\lib\\antiword\\win32";
-    } else {
-        $default_pdf_to_text_cmd = "lib/xpdf/linux/pdftotext -enc UTF-8 -eol unix -q";
-        $default_word_to_text_cmd = "lib/antiword/linux/usr/bin/antiword";
-        $default_word_to_text_env = "ANTIWORDHOME={$CFG->dirroot}/lib/antiword/linux/usr/share/antiword";
-    }
-
-    //pdf_to_text_cmd
-    $settings->add(new admin_setting_configtext('block_search_pdf_to_text_cmd', get_string('configpdftotextcmd', 'block_search'),
-                       get_string('pdftotextcmd', 'block_search'), $default_pdf_to_text_cmd, PARAM_RAW, 60));
-
-    //word_to_text_cmd
-    $settings->add(new admin_setting_configtext('block_search_word_to_text_cmd', get_string('configwordtotextcmd', 'block_search'),
-                       get_string('wordtotextcmd', 'block_search'), $default_word_to_text_cmd, PARAM_RAW, 60));
-
-    //word_to_text_env
-    $settings->add(new admin_setting_configtext('block_search_word_to_text_env', get_string('configwordtotextenv', 'block_search'),
-                       get_string('wordtotextenv', 'block_search'), $default_word_to_text_env, PARAM_RAW, 60));
-
-
-    // modules activations
-    if (isset($CFG->block_search_filetypes)) {
-        $types = explode(',', $CFG->block_search_filetypes);
-    } else {
-        $types = explode(',', $defaultfiletypes);
-    }
-
-    if (!empty($types)) {
-        foreach($types as $type) {
-            $utype = strtoupper($type);
-            $type = strtolower($type);
-            $type = trim($type);
-            if (preg_match("/\\b$type\\b/i", $defaultfiletypes)) continue;
-
-            //header
-            $propname = 'block_search_'.$type.'_to_text';
-            $settings->add(new admin_setting_heading($propname, get_string('handlingfor', 'block_search').' '.$utype , ''));
-
-            //word_to_text_cmd
-            $propname = 'block_search_'.$type.'_to_text_cmd';
-            $settings->add(new admin_setting_configtext($propname, get_string('configtypetotxtcmd', 'block_search'),
-                               get_string('cmdtoconverttotextfor', 'block_search', $type), '', PARAM_PATH, 60));
-
-            //word_to_text_env
-            $propname = 'block_search_'.$type.'_to_text_env';
-            $settings->add(new admin_setting_configtext($propname, get_string('configtypetotxtenv', 'block_search'),
-                               get_string('envforcmdtotextfor', 'block_search', $type), '', PARAM_PATH, 60));
-
-        }
-    }
-
-    require_once($CFG->dirroot.'/search/lib.php' );
-    $searchnames = search_collect_searchables(true, false);
-    list($searchable_list, $params) = $DB->get_in_or_equal($searchnames);
-
-    //header
-    $propname = 'block_search_'.$type.'_to_text';
-    $settings->add(new admin_setting_heading($propname, get_string('searchdiscovery', 'block_search') , ''));
-
-    $found_searchable_modules = 0;
-    if ($modules = $DB->get_records_select('modules', "name $searchable_list", $params, 'name', 'id,name')){
-        foreach($modules as $module){
-            $keyname = 'search_in_'.$module->name;
-            $settings->add(new admin_setting_configcheckbox($keyname, get_string('modulename', $module->name),
-                               get_string('enableindexinginmodule', 'block_search', $module->name), 1, 1, 0));
-            $found_searchable_modules = 1;
-        }
-    }
-
-    if (!$found_searchable_modules) {
-        //header
-        $propname = 'block_search_nosearchablemodules';
-        $settings->add(new admin_setting_heading($propname, get_string('nosearchablemodules', 'block_search') , ''));
-    }
-
-    //header
-    $propname = 'block_search_searchswitches';
-    $settings->add(new admin_setting_heading($propname, get_string('blockssearchswitches', 'block_search') , ''));
-
-    $found_searchable_blocks = 0;
-    if ($blocks = $DB->get_records_select('block', "name $searchable_list", $params, 'name', 'id,name')){
-        foreach($blocks as $block){
-            $keyname = 'search_in_'.$block->name;
-            $settings->add(new admin_setting_configcheckbox($keyname, get_string('pluginname', 'block_'.$block->name),
-                               get_string('enableindexinginblock', 'block_search', $block->name), 1, 1, 0));
-            $found_searchable_blocks = 1;
-        }
-    }
-    if (!$found_searchable_blocks) {
-        //header
-        $propname = 'block_search_nosearchableblocks';
-        $settings->add(new admin_setting_heading($propname, get_string('nosearchableblocks', 'block_search') , ''));
-    }
-
-}
-
diff --git a/blocks/search/version.php b/blocks/search/version.php
deleted file mode 100644 (file)
index b745682..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-// This file is part of Moodle - http://moodle.org/
-//
-// Moodle is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Moodle is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
-
-$plugin->version = 2010111100;
-$plugin->cron = 1;
index 5dfe0f2..fcb3a95 100644 (file)
@@ -189,7 +189,6 @@ $string['configenableajax'] = 'This setting allows you to control the use of AJA
 $string['configenablecalendarexport'] = 'Enable exporting or subscribing to calendars.';
 $string['configenablecomments'] = 'Enable comments';
 $string['configenablecourserequests'] = 'This will allow any user to request a course be created.';
-$string['configenableglobalsearch'] = 'This setting enables global text searching in resources and activities, it is not compatible with PHP 4.';
 $string['configenablegroupmembersonly'] = 'If enabled, access to activities can be restricted to group members only. This may result in an increased server load. In addition, gradebook categories must be set up in a certain way to ensure that activities are hidden from non-group members.';
 $string['configenablemobilewebservice'] = 'Enable mobile service for the official Moodle app or other app requesting it. For more information, read the {$a}';
 $string['configenablerssfeeds'] = 'This switch will enable RSS feeds from across the site.  To actually see any change you will need to enable RSS feeds in the individual modules too - go to the Modules settings under Admin Configuration.';
@@ -468,7 +467,6 @@ $string['enablecourseajax'] = 'Enable AJAX course editing';
 $string['enablecourseajax_desc'] = 'Allow AJAX when editing main course pages. Note that the course format and the theme must support AJAX editing and the user has to enable AJAX in their profiles, too.';
 $string['enablecourserequests'] = 'Enable course requests';
 $string['enabledevicedetection'] = 'Enable device detection';
-$string['enableglobalsearch'] = 'Enable global search';
 $string['enablegravatar'] = 'Enable Gravatar';
 $string['enablegravatar_help'] = 'When enabled Moodle will attempt to fetch a user profile picture from Gravatar if the user has not uploaded an image.';
 $string['enablegroupmembersonly'] = 'Enable group members only';
index 0184da5..647f27d 100644 (file)
@@ -6808,6 +6808,38 @@ FROM
         upgrade_main_savepoint(true, 2011101900.02);
     }
 
+    if ($oldversion < 2011102700.01) {
+        // purge everything related to abandoned experimental global search
+
+        // unset setting - this disables it in case user does not delete the dirs
+        unset_config('enableglobalsearch');
+
+        // Delete block, instances and db table
+        $table = new xmldb_table('block_search_documents');
+        if ($dbman->table_exists($table)) {
+            $instances = $DB->get_records('block_instances', array('blockname'=>'search'));
+            foreach($instances as $instance) {
+                context_helper::delete_instance(CONTEXT_BLOCK, $instance->id);
+                $DB->delete_records('block_positions', array('blockinstanceid' => $instance->id));
+                $DB->delete_records('block_instances', array('id' => $instance->id));
+            }
+            $DB->delete_records('block', array('name'=>'search'));
+
+            $dbman->drop_table($table);
+        }
+
+        // purge all settings used by the search block
+        $like = $DB->sql_like('name', '?', true, true, false, '|');
+        $params = array($DB->sql_like_escape('block_search_', '|') . '%', $DB->sql_like_escape('search_in_', '|') . '%');
+        $settings = $DB->get_records_select('config', "$like OR $like", $params);
+        foreach ($settings as $setting) {
+            unset_config($setting->name);
+        }
+
+        upgrade_main_savepoint(true, 2011102700.01);
+    }
+
+
     return true;
 }
 
index ab01833..a1e0ade 100644 (file)
@@ -298,7 +298,7 @@ class plugin_manager {
                 'login', 'mentees', 'messages', 'mnet_hosts', 'myprofile',
                 'navigation', 'news_items', 'online_users', 'participants',
                 'private_files', 'quiz_results', 'recent_activity',
-                'rss_client', 'search', 'search_forums', 'section_links',
+                'rss_client', 'search_forums', 'section_links',
                 'selfcompletion', 'settings', 'site_main_menu',
                 'social_activities', 'tag_flickr', 'tag_youtube', 'tags'
             ),
diff --git a/search/.cvsignore b/search/.cvsignore
deleted file mode 100644 (file)
index 04fd92e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-delete_log.php
diff --git a/search/LISEZMOI.txt b/search/LISEZMOI.txt
deleted file mode 100644 (file)
index 16e4450..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-Cette distribution partielle contient une refonte du moteur de 
-recherche globale de Moodle.
-
-Le moteur de recherche est capable d'indexer et de rechercher 
-des informations dans un grand nombre de contenus stockés
-dans la plate-forme à travers la manipulation des activités et
-des blocs.
-
-Le moteur de recherche procède à une première indexation des
-ressources disponibles par action de l'administrateur. Une fois
-cette indexation effectuée, le moteur maintient régulièrement les
-indexes, en ajoutant les nouvelles entrées et en nettoyant les 
-entrées obsolètes.
-
-La recherche permet d'obtenir des références d'accès au contexte
-qui diffuse cette information, au nom de l'utilisateur courant.
-Le filtrage des résultats enlève de la liste des réponses toute
-ressource que la situation de l'utilisateur empêcherait de voir
-s'il y accédait dans son contexte habituel.
-
-Mise en oeuvre
-##############
-
-La distribution fait désormais partie du noyau de Moodle.
-
-Il sera probablement nécessaire d'ajouter un certain nombre de librairies additionnelles
-pour la conversion de documents physiques en vue de leur indexation. Ces librairies sont
-actuellement fournies dans le CVS dans la rubrique contrib/patches/global_search_libraries 
-(antiword et xpdf). La prise en charge des fichiers "shockwave" est assurée, sous réserve 
-de l'obtention des libairies de conversion auprès de Adobe (http://www.adobe.com/licensing/developer/)
-
-1. Allez sur le bloc d'administration et réglez les paramètres du bloc Recherche Globale. 
-Ceci initialisera un certain nombre de fonctions dans le moteur.
-
-2. Insérer un nouveau bloc de recherche globale dans la plate-forme
-
-3. Effectuer une recherche vide (en administrateur)
-
-4. Aller sur la page des statistiques
-
-5. Activer l'indexation (indexsplash.php). Attention, si la plate-form contient beaucoup de contenus cette indexation peut être TRES LONGUE.
-
-Pour effectuer des recherches, une fois la première indexation terminée, retourner au bloc de recherche et tenter une recherche.
-
-Eléments pris en charge
-#######################
-
-Dans l'état actuel, les éléments indexés par le moteur sont :
-
-- les entrées de forum
-- les fiches de base de données
-- les commentaires sur fiches de données
-- les entrées de glossaire
-- les commentaires sur entrées de glossaire
-- les ressources natives Moodle
-- les ressources physiques de type MSWord
-- les ressources physiques de type PDF
-- les ressources physiques de type fichier texte (.txt)
-- les ressources physiques de type HTML (.htm et .html)
-- les ressources physiques de type XML (.xml)
-- les ressources physiques de type (Microsoft) Powerpoint (.ppt)
-- les pages de wiki
-- les sessions de chat
-
-Des modules tiers ont été rendus indexables 
-
-- Techproject
-
-Extensions
-##########
-
-L'API du moteur de recherche permet désormais : 
-
-- l'indexation de contenus de blocs.
-- l'indexation de modules contenant une information complexe ou de plusieurs types distincts
-- la sécurisation des informations indexées lors des extractions de résultats
-- l'indexation de tout module tiers par ajout d'un fichier php calibré
-- l'indexation de toute nouvelle resource physique par ajout d'un fichier php calibré
-
-Extensions futures
-##################
-
-- De nouvelles prises en charge de contenus tels que les attachements des forums, les attachement des glossaires, ainsi que d'autres modules non encore
-implémentés.
-
-- l'extension mnet de la recherche dans un réseau de moodle interconnectés.
-
-
diff --git a/search/README.txt b/search/README.txt
deleted file mode 100644 (file)
index 02b7d57..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-This directoery contains the central implementation of
-Moodle's Global Search Engine.
-
-The Global Search Engine stores indexes about a huge quantity  
-of information from within modules, block or resources stored 
-by Moodle either in the database or the file system.
-
-The administrator initialy indexes the existing content. Once this 
-first initialization performed, the search engine maintains indexes
-regularily, adding new entries, deleting obsolete one or updating
-some that have changed.
-
-Search will produce links for acceding the information in a similar
-context as usually accessed, from the current user point of view.
-Results filtering removes from results any link to information the
-current user would not be allowed to acces on a straight situation.
-
-Deployement
-###########
-
-The search engine is now part of Moodle core distribution.
-
-Some extra libraries might be added for converting physical documents to text
-so it can be indexed. Moodle CVS (entry contrib/patches/global_search_libraries)
-provides packs for antiword and xpdf GPL libraries the search engine is ready for 
-shockwave indexing, but will not provide Adobe Search converters that should be 
-obtained at http://www.adobe.com/licensing/developer/
-
-1. Go to the block administration panel and setup once the Global Search
-block. This will initialize useful parameters for the global search engine.
-
-2. Insert a new Global Search block somewhere in a course or top-level screen. 
-
-3. Launch an empty search (you must be administrator).
-
-4. Go to the statistics screen.
-
-5. Activate indexation (indexersplash.php). Beware, if your Moodle has
-a large amount of content, indexing process may be VERY LONG.
-
-To search, go back to the search block and try a query.
-
-Handled information for indexing
-################################
-
-In the actual state, the engine indexes the following information:
-
-- assignment descriptions
-- forum posts
-- database records (using textual fields only)
-- database comments
-- glossary entries
-- glossary comments on entries
-- Moodle native resources
-- physical MSWord files as resources (.doc)
-- physical Powerpoint files as resources (.ppt)
-- physical PDF files as resources 
-- physical text files as resources (.txt)
-- physical html files as resources (.htm and .html)
-- physical xml files as resources (.xml)
-- wiki pages
-- chat sessions
-- lesson pages
-
-Some third party plugins are also searchable using the new Search API implementation
-
-- Techproject
-
-Extensions
-##########
-
-The reviewed search engine API allows: 
-
-- indexing of blocks contents
-- indexation of modules or blocks containing a complex information model
-- securing the access to the results
-- adding indexing handling for additional modules and plugins adding a php calibrated script
-- adding physical filetype handling adding a php calibrated script
-
-Future extensions
-#################
-
-- Should be added more information to index such as forum and glossary attachements, 
-  so will other standard module contents.
-- extending the search capability to a mnet network information space by aggregating remote search responses.
\ No newline at end of file
diff --git a/search/README_ARCHIVE.txt b/search/README_ARCHIVE.txt
deleted file mode 100644 (file)
index 64296be..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-2006/09/08
-----------
-Google Summer of Code is finished, spent a couple of weeks away from
-the project to think about it and also to take a break. Working on it
-now I discovered bugs in the query parser (now fixed), and I also
-un-convoluted the querylib logic (well slighlty).
-
-Updated ZFS files to latest SVN.
-
-2006/08/21
-----------
-Fixed index document count, and created new config variable to store
-the size. (Search now has 3 global vars in $CFG, date, size and complete,
-see indexer.php for var names). Index size is cached to provide an always
-current value for the index - this is to take into account the fact that
-deleted documents are in fact not removed from the index, but instead just
-marked as deleted and not returned in search results. The actual document
-still features in the index, and skews sizes. When the index optimiser is
-completed in ZFS, then these deleted documents will be pruned, thus
-correctly modifying the index size.
-
-Additional commenting added.
-
-Query page logic very slightly modified to clean up GET string a bit (removed
-'p' variable).
-
-Add/delete functions added to other document types.
-
-A few TODO fields added to source, indicating changes still to come (or at
-least to be considered).
-
-2006/08/16
-----------
-Add/delete/update cron functions finished - can be called seperately
-or all at once via cron.php.
-
-Document date field added to index and database summary.
-
-Some index db functionality abstracted out to indexlib.php - can
-use IndexDBControl class to add/del documents from database, and
-to make sure the db table is functioning.
-
-DB sql files changed to add some extra fields.
-
-Default 'simple' query modified to search title and author, as well
-as contents of document, to provide better results for users.
-
-2006/08/14
-----------
-First revision of the advanced search page completed. Functional,
-but needs a date search field still.
-
-2006/08/02
-----------
-Added resource search type, and the ability to specify custom 'virtual'
-models to search - allowing for non-module specific information to be
-indexed. Specify the extra search types to use in lib.php.
-
-2006/07/28
-----------
-Added delete logic to documents; the moodle database log is checked
-and any found delete events are used to remove the referenced documents
-from the database table and search index.
-
-Added database table name constant to lib.php, must change files using
-the static table name.
-
-Changed documents to use 'docid' instead of 'id' to reference the moodle
-instance id, since Zend Search adds it's own internal 'id' field. Noticed
-this whilst working on deletions.
-
-Added some additional fields to the permissions checking method, must still
-implement it though.
-
-2006/07/25
-----------
-Query logic moved into the SearchQuery class in querylib.php. Should be able
-to include this file in any page and run a query against the index (PHP 5
-checks must be added to those pages then, though).
-
-Index info can be retrieved using IndexInfo class in indexlib.php.
-
-Abstracted some stuff away, to reduce rendundancy and decrease the
-likelihood of errors. Improved the stats.php page to include some
-diagnostics for adminstrators.
-
-delete.php skeleton created for removing deleted documents from the
-index. cron.php will contain the logic for running delete.php,
-update.php and eventually add.php.
-
-2006/07/11
-----------
-(Warning: It took me 1900 seconds to index the forum, go make coffee
-whilst you wait.) [Moodle.org forum data]
-
-Forum search functions changed to use 'get_recordset' instead of
-'get_records', for speed reasons. This provides a significant improvement,
-but indexing is still slow - getting data from the database and Zend's
-tokenising _seem_ to be the prime suspects at the moment.
-
-/search/tests/ added - index.php can be used to see which modules are
-ready to be included in the search index, and it informs you of any
-errors - should be a prerequisite for indexing.
-
-Search result pagination added to query.php, will default to 20 until
-an admin page for the search module is written.
-
-2006/07/07
-----------
-Search-enabling functions moved out've the mod's lib.php files and into
-/search/documents/mod_document.php - this requires the search module to
-operate without requiring modification of lib files.
-
-SearchDocument base class improved, and the way module documents extend
-it. A custom-data field has been added to allow modules to add any custom
-data they wish to be stored in the index - this field is serialised into
-the index as a binary field.
-
-Database field 'type' renamed to 'doctype' to match the renaming in the
-index, 'type' seems to be a reserved word in Lucene. Several index field
-names change to be more descriptive (cid -> course_id). URLs are now
-stored in the index, and don't have to be generated on the fly during
-display of query results.
-
-2006/07/05
-------
-Started cleaning and standardising things.
-
-cvs v1.1
---------
-This is the initial release (prototype) of Moodle's new search module -
-so basically watch out for sharp edges.
-
-The structure has not been finalised, but this is what is working at the
-moment, when I start looking at other content to index, it will most likely
-change. I don't recommend trying to make your own content modules indexable,
-at least not until the whole flow is finalised. I will be implementing the
-functions needed to index all of the default content modules on Moodle, so
-expect that around mid-August.
-
-Wiki pages were my goal for this release, they can be indexed and searched,
-but not updated or deleted at this stage (was waiting for ZF 0.14 actually).
-
-I need to check the PostgreSQL sql file, I don't have a PG7 install lying
-around to test on, so the script is untested.
-
-To index for the first time, login as an admin user and browse to /search/index.php
-or /search/stats.php - there will be a message and a link telling you to go index.
-
--- Michael Champanis (mchampan)
-   email: cynnical@gmail.com
-   skype: mchampan
-   Summer of Code 2006
\ No newline at end of file
diff --git a/search/Zend/Exception.php b/search/Zend/Exception.php
deleted file mode 100644 (file)
index c47fffb..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend
- * @copyright  Copyright (c) 2006 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/**
- * @category   Zend
- * @package    Zend
- * @copyright  Copyright (c) 2006 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-class Zend_Exception extends Exception
-{}
-
diff --git a/search/Zend/IMPORTANT.txt b/search/Zend/IMPORTANT.txt
deleted file mode 100644 (file)
index c20ea57..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-We are running cutting-edge (i.e. HEAD) Zend Framework:
-  URL: http://framework.zend.com/svn/framework/trunk
-  Revision: 1042 
-  Last Changed Rev: 1042  
-  Last Changed Date: 2006-09-07 23:14:50 +0200 (Thu, 07 Sep 2006)
-
-This Zend Framework present in this directory only contains the minimum
-to run Zend_Search_Lucene - I don't foresee any problems, since the license
-is new BSD...
-
-To obtain a full Zend Framework package, please visit:
-  http://framework.zend.com/
-
-Or alternatively check it out from SVN:
-  svn checkout http://framework.zend.com/svn/framework/trunk
\ No newline at end of file
diff --git a/search/Zend/LICENSE.txt b/search/Zend/LICENSE.txt
deleted file mode 100644 (file)
index 60f72fe..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright (c) 2006, Zend Technologies USA, Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-
-    * Neither the name of Zend Technologies USA, Inc. nor the names of its
-      contributors may be used to endorse or promote products derived from this
-      software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/search/Zend/Search/Exception.php b/search/Zend/Search/Exception.php
deleted file mode 100644 (file)
index 63bdf56..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/**
- * Framework base exception
- */
-require_once "Zend/Exception.php";
-
-
-/**
- * @category   Zend
- * @package    Zend_Search
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-class Zend_Search_Exception extends Zend_Exception
-{}
-
diff --git a/search/Zend/Search/Lucene.php b/search/Zend/Search/Lucene.php
deleted file mode 100644 (file)
index 3b9fd8e..0000000
+++ /dev/null
@@ -1,1430 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-/** Zend_Search_Lucene_Exception */
-require_once "Zend/Search/Lucene/Exception.php";
-
-/** Zend_Search_Lucene_Document */
-require_once "Zend/Search/Lucene/Document.php";
-
-/** Zend_Search_Lucene_Document_Html */
-require_once "Zend/Search/Lucene/Document/Html.php";
-
-/** Zend_Search_Lucene_Storage_Directory_Filesystem */
-require_once "Zend/Search/Lucene/Storage/Directory/Filesystem.php";
-
-/** Zend_Search_Lucene_Storage_File_Memory */
-require_once "Zend/Search/Lucene/Storage/File/Memory.php";
-
-/** Zend_Search_Lucene_Index_Term */
-require_once "Zend/Search/Lucene/Index/Term.php";
-
-/** Zend_Search_Lucene_Index_TermInfo */
-require_once "Zend/Search/Lucene/Index/TermInfo.php";
-
-/** Zend_Search_Lucene_Index_SegmentInfo */
-require_once "Zend/Search/Lucene/Index/SegmentInfo.php";
-
-/** Zend_Search_Lucene_Index_FieldInfo */
-require_once "Zend/Search/Lucene/Index/FieldInfo.php";
-
-/** Zend_Search_Lucene_Index_Writer */
-require_once "Zend/Search/Lucene/Index/Writer.php";
-
-/** Zend_Search_Lucene_Search_QueryParser */
-require_once "Zend/Search/Lucene/Search/QueryParser.php";
-
-/** Zend_Search_Lucene_Search_QueryHit */
-require_once "Zend/Search/Lucene/Search/QueryHit.php";
-
-/** Zend_Search_Lucene_Search_Similarity */
-require_once "Zend/Search/Lucene/Search/Similarity.php";
-
-/** Zend_Search_Lucene_Index_SegmentInfoPriorityQueue */
-require_once "Zend/Search/Lucene/Index/SegmentInfoPriorityQueue.php";
-
-/** Zend_Search_Lucene_LockManager */
-require_once "Zend/Search/Lucene/LockManager.php";
-//require_once "Zend/Search/Lucene/SoftLockManager.php";
-
-
-
-/** Zend_Search_Lucene_Interface */
-require_once "Zend/Search/Lucene/Interface.php";
-
-/** Zend_Search_Lucene_Proxy */
-require_once "Zend/Search/Lucene/Proxy.php";
-
-
-/**
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-class Zend_Search_Lucene implements Zend_Search_Lucene_Interface
-{
-    /**
-     * Default field name for search
-     *
-     * Null means search through all fields
-     *
-     * @var string
-     */
-    private static $_defaultSearchField = null;
-
-    /**
-     * Result set limit
-     *
-     * 0 means no limit
-     *
-     * @var integer
-     */
-    private static $_resultSetLimit = 0;
-
-    /**
-     * File system adapter.
-     *
-     * @var Zend_Search_Lucene_Storage_Directory
-     */
-    private $_directory = null;
-
-    /**
-     * File system adapter closing option
-     *
-     * @var boolean
-     */
-    private $_closeDirOnExit = true;
-
-    /**
-     * Writer for this index, not instantiated unless required.
-     *
-     * @var Zend_Search_Lucene_Index_Writer
-     */
-    private $_writer = null;
-
-    /**
-     * Array of Zend_Search_Lucene_Index_SegmentInfo objects for this index.
-     *
-     * @var array Zend_Search_Lucene_Index_SegmentInfo
-     */
-    private $_segmentInfos = array();
-
-    /**
-     * Number of documents in this index.
-     *
-     * @var integer
-     */
-    private $_docCount = 0;
-
-    /**
-     * Flag for index changes
-     *
-     * @var boolean
-     */
-    private $_hasChanges = false;
-
-
-    /**
-     * Signal, that index is already closed, changes are fixed and resources are cleaned up
-     *
-     * @var boolean
-     */
-    private $_closed = false;
-
-    /**
-     * Number of references to the index object
-     *
-     * @var integer
-     */
-    private $_refCount = 0;
-
-    /**
-     * Current segment generation
-     *
-     * @var integer
-     */
-    private $_generation;
-
-    
-    /**
-     * Create index
-     *
-     * @param mixed $directory
-     * @return Zend_Search_Lucene_Interface
-     */
-    public static function create($directory)
-    {
-        return new Zend_Search_Lucene_Proxy(new Zend_Search_Lucene($directory, true));
-    }
-
-    /**
-     * Open index
-     *
-     * @param mixed $directory
-     * @return Zend_Search_Lucene_Interface
-     */
-    public static function open($directory)
-    {
-        return new Zend_Search_Lucene_Proxy(new Zend_Search_Lucene($directory, false));
-    }
-
-    /** Generation retrieving counter */
-    const GENERATION_RETRIEVE_COUNT = 10;
-
-    /** Pause between generation retrieving attempts in milliseconds */
-    const GENERATION_RETRIEVE_PAUSE = 50;
-
-    /**
-     * Get current generation number
-     *
-     * Returns generation number
-     * 0 means pre-2.1 index format
-     * -1 means there are no segments files.
-     *
-     * @param Zend_Search_Lucene_Storage_Directory $directory
-     * @return integer
-     * @throws Zend_Search_Lucene_Exception
-     */
-    public static function getActualGeneration(Zend_Search_Lucene_Storage_Directory $directory)
-    {
-        /**
-         * Zend_Search_Lucene uses segments.gen file to retrieve current generation number
-         *
-         * Apache Lucene index format documentation mentions this method only as a fallback method
-         *
-         * Nevertheless we use it according to the performance considerations
-         *
-         * @todo check if we can use some modification of Apache Lucene generation determination algorithm
-         *       without performance problems
-         */
-
-        try {
-            for ($count = 0; $count < self::GENERATION_RETRIEVE_COUNT; $count++) {
-                // Try to get generation file
-                $genFile = $directory->getFileObject('segments.gen', false);
-
-                $format = $genFile->readInt();
-                if ($format != (int)0xFFFFFFFE) {
-                    throw new Zend_Search_Lucene_Exception('Wrong segments.gen file format');
-                }
-
-                $gen1 = $genFile->readLong();
-                $gen2 = $genFile->readLong();
-
-                if ($gen1 == $gen2) {
-                    return $gen1;
-                }
-
-                usleep(self::GENERATION_RETRIEVE_PAUSE * 1000);
-            }
-
-            // All passes are failed
-            throw new Zend_Search_Lucene_Exception('Index is under processing now');
-        } catch (Zend_Search_Lucene_Exception $e) {
-            if (strpos($e->getMessage(), 'is not readable') !== false) {
-                try {
-                    // Try to open old style segments file
-                    $segmentsFile = $directory->getFileObject('segments', false);
-
-                    // It's pre-2.1 index
-                    return 0;
-                } catch (Zend_Search_Lucene_Exception $e) {
-                    if (strpos($e->getMessage(), 'is not readable') !== false) {
-                        return -1;
-                    } else {
-                        throw $e;
-                    }
-                }
-            } else {
-                throw $e;
-            }
-        }
-
-        return -1;
-    }
-
-    /**
-     * Get segments file name
-     *
-     * @param integer $generation
-     * @return string
-     */
-    public static function getSegmentFileName($generation)
-    {
-        if ($generation == 0) {
-            return 'segments';
-        }
-
-        return 'segments_' . base_convert($generation, 10, 36);
-    }
-
-    /**
-     * Read segments file for pre-2.1 Lucene index format
-     */
-    private function _readPre21SegmentsFile()
-    {
-        $segmentsFile = $this->_directory->getFileObject('segments');
-
-        $format = $segmentsFile->readInt();
-
-        if ($format != (int)0xFFFFFFFF) {
-            throw new Zend_Search_Lucene_Exception('Wrong segments file format');
-        }
-
-        // read version
-        // $segmentsFile->readLong();
-        $segmentsFile->readInt(); $segmentsFile->readInt();
-
-        // read segment name counter
-        $segmentsFile->readInt();
-
-        $segments = $segmentsFile->readInt();
-
-        $this->_docCount = 0;
-
-        // read segmentInfos
-        for ($count = 0; $count < $segments; $count++) {
-            $segName = $segmentsFile->readString();
-            $segSize = $segmentsFile->readInt();
-            $this->_docCount += $segSize;
-
-            $this->_segmentInfos[$segName] =
-                                new Zend_Search_Lucene_Index_SegmentInfo($this->_directory,
-                                                                         $segName,
-                                                                         $segSize);
-        }
-    }
-
-    /**
-     * Read segments file
-     *
-     * @throws Zend_Search_Lucene_Exception
-     */
-    private function _readSegmentsFile()
-    {
-        $segmentsFile = $this->_directory->getFileObject(self::getSegmentFileName($this->_generation));
-
-        $format = $segmentsFile->readInt();
-
-        if ($format != (int)0xFFFFFFFD) {
-            throw new Zend_Search_Lucene_Exception('Wrong segments file format');
-        }
-
-        // read version
-        // $segmentsFile->readLong();
-        $segmentsFile->readInt(); $segmentsFile->readInt();
-
-        // read segment name counter
-        $segmentsFile->readInt();
-
-        $segments = $segmentsFile->readInt();
-
-        $this->_docCount = 0;
-
-        // read segmentInfos
-        for ($count = 0; $count < $segments; $count++) {
-            $segName = $segmentsFile->readString();
-            $segSize = $segmentsFile->readInt();
-
-            // 2.1+ specific properties
-            //$delGen          = $segmentsFile->readLong();
-            $delGenHigh        = $segmentsFile->readInt();
-            $delGenLow         = $segmentsFile->readInt();
-            if ($delGenHigh == (int)0xFFFFFFFF  && $delGenLow == (int)0xFFFFFFFF) {
-                $delGen = -1; // There are no deletes
-            } else {
-                $delGen = ($delGenHigh << 32) | $delGenLow;
-            }
-
-            $hasSingleNormFile = $segmentsFile->readByte();
-            $numField          = $segmentsFile->readInt();
-
-            $normGens = array();
-            if ($numField != (int)0xFFFFFFFF) {
-                for ($count1 = 0; $count1 < $numField; $count1++) {
-                    $normGens[] = $segmentsFile->readLong();
-                }
-
-                throw new Zend_Search_Lucene_Exception('Separate norm files are not supported. Optimize index to use it with Zend_Search_Lucene.');
-            }
-
-            $isCompound        = $segmentsFile->readByte();
-
-
-            $this->_docCount += $segSize;
-
-            $this->_segmentInfos[$segName] =
-                                new Zend_Search_Lucene_Index_SegmentInfo($this->_directory,
-                                                                         $segName,
-                                                                         $segSize,
-                                                                         $delGen,
-                                                                         $hasSingleNormFile,
-                                                                         $isCompound);
-        }
-    }
-
-    /**
-     * Opens the index.
-     *
-     * IndexReader constructor needs Directory as a parameter. It should be
-     * a string with a path to the index folder or a Directory object.
-     *
-     * @param mixed $directory
-     * @throws Zend_Search_Lucene_Exception
-     */
-    public function __construct($directory = null, $create = false)
-    {
-        if ($directory === null) {
-            throw new Zend_Search_Exception('No index directory specified');
-        }
-
-        if ($directory instanceof Zend_Search_Lucene_Storage_Directory_Filesystem) {
-            $this->_directory      = $directory;
-            $this->_closeDirOnExit = false;
-        } else {
-            $this->_directory      = new Zend_Search_Lucene_Storage_Directory_Filesystem($directory);
-            $this->_closeDirOnExit = true;
-        }
-
-        $this->_segmentInfos = array();
-
-        // Mark index as "under processing" to prevent other processes from premature index cleaning
-        Zend_Search_Lucene_LockManager::obtainReadLock($this->_directory);
-        
-        // Escalate read lock to prevent current generation index files to be deleted while opening process is not done 
-        Zend_Search_Lucene_LockManager::escalateReadLock($this->_directory);
-        
-        
-        $this->_generation = self::getActualGeneration($this->_directory);
-        
-        if ($create) {
-               try {
-                       Zend_Search_Lucene_LockManager::obtainWriteLock($this->_directory);
-               } catch (Zend_Search_Lucene_Exception $e) {
-                       if (strpos($e->getMessage(), 'Can\'t obtain exclusive index lock') === false) {
-                               throw $e;
-                       } else {
-                               throw new Zend_Search_Lucene_Exception('Can\'t create index. It\'s under processing now');
-                       }
-               }
-
-            if ($this->_generation == -1) {
-                // Directory doesn't contain existing index, start from 1
-                $this->_generation = 1;
-                $nameCounter = 0;
-            } else {
-                // Directory contains existing index
-                $segmentsFile = $this->_directory->getFileObject(self::getSegmentFileName($this->_generation));
-                $segmentsFile->seek(12); // 12 = 4 (int, file format marker) + 8 (long, index version)
-
-                $nameCounter = $segmentsFile->readInt();
-                $this->_generation++;
-            }
-
-            Zend_Search_Lucene_Index_Writer::createIndex($this->_directory, $this->_generation, $nameCounter);
-
-            Zend_Search_Lucene_LockManager::releaseWriteLock($this->_directory);
-        }
-
-        if ($this->_generation == -1) {
-            throw new Zend_Search_Lucene_Exception('Index doesn\'t exists in the specified directory.');
-        } else if ($this->_generation == 0) {
-            $this->_readPre21SegmentsFile();
-        } else {
-            $this->_readSegmentsFile();
-        }
-        
-        // De-escalate read lock to prevent current generation index files to be deleted while opening process is not done 
-        Zend_Search_Lucene_LockManager::deEscalateReadLock($this->_directory);
-    }
-
-    /**
-     * Close current index and free resources
-     */
-    private function _close()
-    {
-        if ($this->_closed) {
-            // index is already closed and resources are cleaned up
-            return;
-        }
-
-        $this->commit();
-
-        // Release "under processing" flag
-        Zend_Search_Lucene_LockManager::releaseReadLock($this->_directory);
-                
-        if ($this->_closeDirOnExit) {
-            $this->_directory->close();
-        }
-
-        $this->_directory    = null;
-        $this->_writer       = null;
-        $this->_segmentInfos = null;
-
-        $this->_closed = true;
-    }
-
-    /**
-     * Add reference to the index object
-     *
-     * @internal
-     */
-    public function addReference()
-    {
-        $this->_refCount++;
-    }
-
-    /**
-     * Remove reference from the index object
-     *
-     * When reference count becomes zero, index is closed and resources are cleaned up
-     *
-     * @internal
-     */
-    public function removeReference()
-    {
-        $this->_refCount--;
-
-        if ($this->_refCount == 0) {
-            $this->_close();
-        }
-    }
-
-    /**
-     * Object destructor
-     */
-    public function __destruct()
-    {
-        $this->_close();
-    }
-
-    /**
-     * Returns an instance of Zend_Search_Lucene_Index_Writer for the index
-     *
-     * @internal
-     * @return Zend_Search_Lucene_Index_Writer
-     */
-    public function getIndexWriter()
-    {
-        if (!$this->_writer instanceof Zend_Search_Lucene_Index_Writer) {
-            $this->_writer = new Zend_Search_Lucene_Index_Writer($this->_directory, $this->_segmentInfos);
-        }
-
-        return $this->_writer;
-    }
-
-
-    /**
-     * Returns the Zend_Search_Lucene_Storage_Directory instance for this index.
-     *
-     * @return Zend_Search_Lucene_Storage_Directory
-     */
-    public function getDirectory()
-    {
-        return $this->_directory;
-    }
-
-
-    /**
-     * Returns the total number of documents in this index (including deleted documents).
-     *
-     * @return integer
-     */
-    public function count()
-    {
-        return $this->_docCount;
-    }
-
-    /**
-     * Returns one greater than the largest possible document number.
-     * This may be used to, e.g., determine how big to allocate a structure which will have
-     * an element for every document number in an index.
-     *
-     * @return integer
-     */
-    public function maxDoc()
-    {
-        return $this->count();
-    }
-
-    /**
-     * Returns the total number of non-deleted documents in this index.
-     *
-     * @return integer
-     */
-    public function numDocs()
-    {
-        $numDocs = 0;
-
-        foreach ($this->_segmentInfos as $segmentInfo) {
-            $numDocs += $segmentInfo->numDocs();
-        }
-
-        return $numDocs;
-    }
-
-    /**
-     * Checks, that document is deleted
-     *
-     * @param integer $id
-     * @return boolean
-     * @throws Zend_Search_Lucene_Exception    Exception is thrown if $id is out of the range
-     */
-    public function isDeleted($id)
-    {
-        if ($id >= $this->_docCount) {
-            throw new Zend_Search_Lucene_Exception('Document id is out of the range.');
-        }
-
-        $segmentStartId = 0;
-        foreach ($this->_segmentInfos as $segmentInfo) {
-            if ($segmentStartId + $segmentInfo->count() > $id) {
-                break;
-            }
-
-            $segmentStartId += $segmentInfo->count();
-        }
-
-        return $segmentInfo->isDeleted($id - $segmentStartId);
-    }
-
-    /**
-     * Set default search field.
-     *
-     * Null means, that search is performed through all fields by default
-     *
-     * Default value is null
-     *
-     * @param string $fieldName
-     */
-    public static function setDefaultSearchField($fieldName)
-    {
-        self::$_defaultSearchField = $fieldName;
-    }
-
-    /**
-     * Get default search field.
-     *
-     * Null means, that search is performed through all fields by default
-     *
-     * @return string
-     */
-    public static function getDefaultSearchField()
-    {
-        return self::$_defaultSearchField;
-    }
-
-    /**
-     * Set result set limit.
-     *
-     * 0 (default) means no limit
-     *
-     * @param integer $limit
-     */
-    public static function setResultSetLimit($limit)
-    {
-        self::$_resultSetLimit = $limit;
-    }
-
-    /**
-     * Set result set limit.
-     *
-     * 0 means no limit
-     *
-     * @return integer
-     */
-    public static function getResultSetLimit()
-    {
-        return self::$_resultSetLimit;
-    }
-
-    /**
-     * Retrieve index maxBufferedDocs option
-     *
-     * maxBufferedDocs is a minimal number of documents required before
-     * the buffered in-memory documents are written into a new Segment
-     *
-     * Default value is 10
-     *
-     * @return integer
-     */
-    public function getMaxBufferedDocs()
-    {
-        return $this->getIndexWriter()->maxBufferedDocs;
-    }
-
-    /**
-     * Set index maxBufferedDocs option
-     *
-     * maxBufferedDocs is a minimal number of documents required before
-     * the buffered in-memory documents are written into a new Segment
-     *
-     * Default value is 10
-     *
-     * @param integer $maxBufferedDocs
-     */
-    public function setMaxBufferedDocs($maxBufferedDocs)
-    {
-        $this->getIndexWriter()->maxBufferedDocs = $maxBufferedDocs;
-    }
-
-    /**
-     * Retrieve index maxMergeDocs option
-     *
-     * maxMergeDocs is a largest number of documents ever merged by addDocument().
-     * Small values (e.g., less than 10,000) are best for interactive indexing,
-     * as this limits the length of pauses while indexing to a few seconds.
-     * Larger values are best for batched indexing and speedier searches.
-     *
-     * Default value is PHP_INT_MAX
-     *
-     * @return integer
-     */
-    public function getMaxMergeDocs()
-    {
-        return $this->getIndexWriter()->maxMergeDocs;
-    }
-
-    /**
-     * Set index maxMergeDocs option
-     *
-     * maxMergeDocs is a largest number of documents ever merged by addDocument().
-     * Small values (e.g., less than 10,000) are best for interactive indexing,
-     * as this limits the length of pauses while indexing to a few seconds.
-     * Larger values are best for batched indexing and speedier searches.
-     *
-     * Default value is PHP_INT_MAX
-     *
-     * @param integer $maxMergeDocs
-     */
-    public function setMaxMergeDocs($maxMergeDocs)
-    {
-        $this->getIndexWriter()->maxMergeDocs = $maxMergeDocs;
-    }
-
-    /**
-     * Retrieve index mergeFactor option
-     *
-     * mergeFactor determines how often segment indices are merged by addDocument().
-     * With smaller values, less RAM is used while indexing,
-     * and searches on unoptimized indices are faster,
-     * but indexing speed is slower.
-     * With larger values, more RAM is used during indexing,
-     * and while searches on unoptimized indices are slower,
-     * indexing is faster.
-     * Thus larger values (> 10) are best for batch index creation,
-     * and smaller values (< 10) for indices that are interactively maintained.
-     *
-     * Default value is 10
-     *
-     * @return integer
-     */
-    public function getMergeFactor()
-    {
-        return $this->getIndexWriter()->mergeFactor;
-    }
-
-    /**
-     * Set index mergeFactor option
-     *
-     * mergeFactor determines how often segment indices are merged by addDocument().
-     * With smaller values, less RAM is used while indexing,
-     * and searches on unoptimized indices are faster,
-     * but indexing speed is slower.
-     * With larger values, more RAM is used during indexing,
-     * and while searches on unoptimized indices are slower,
-     * indexing is faster.
-     * Thus larger values (> 10) are best for batch index creation,
-     * and smaller values (< 10) for indices that are interactively maintained.
-     *
-     * Default value is 10
-     *
-     * @param integer $maxMergeDocs
-     */
-    public function setMergeFactor($mergeFactor)
-    {
-        $this->getIndexWriter()->mergeFactor = $mergeFactor;
-    }
-
-    /**
-     * Performs a query against the index and returns an array
-     * of Zend_Search_Lucene_Search_QueryHit objects.
-     * Input is a string or Zend_Search_Lucene_Search_Query.
-     *
-     * @param mixed $query
-     * @return array Zend_Search_Lucene_Search_QueryHit
-     * @throws Zend_Search_Lucene_Exception
-     */
-    public function find($query)
-    {
-        if (is_string($query)) {
-            $query = Zend_Search_Lucene_Search_QueryParser::parse($query);
-        }
-
-        if (!$query instanceof Zend_Search_Lucene_Search_Query) {
-            throw new Zend_Search_Lucene_Exception('Query must be a string or Zend_Search_Lucene_Search_Query object');
-        }
-
-        $this->commit();
-
-        $hits   = array();
-        $scores = array();
-        $ids    = array();
-
-        $query = $query->rewrite($this)->optimize($this);
-
-        $query->execute($this);
-
-        $topScore = 0;
-
-        foreach ($query->matchedDocs() as $id => $num) {
-            $docScore = $query->score($id, $this);
-            if( $docScore != 0 ) {
-                $hit = new Zend_Search_Lucene_Search_QueryHit($this);
-                $hit->id = $id;
-                $hit->score = $docScore;
-
-                $hits[]   = $hit;
-                $ids[]    = $id;
-                $scores[] = $docScore;
-
-                if ($docScore > $topScore) {
-                    $topScore = $docScore;
-                }
-            }
-
-            if (self::$_resultSetLimit != 0  &&  count($hits) >= self::$_resultSetLimit) {
-                break;
-            }
-        }
-
-        if (count($hits) == 0) {
-            // skip sorting, which may cause a error on empty index
-            return array();
-        }
-
-        if ($topScore > 1) {
-            foreach ($hits as $hit) {
-                $hit->score /= $topScore;
-            }
-        }
-
-        if (func_num_args() == 1) {
-            // sort by scores
-            array_multisort($scores, SORT_DESC, SORT_NUMERIC,
-                            $ids,    SORT_ASC,  SORT_NUMERIC,
-                            $hits);
-        } else {
-            // sort by given field names
-
-            $argList    = func_get_args();
-            $fieldNames = $this->getFieldNames();
-            $sortArgs   = array();
-
-            for ($count = 1; $count < count($argList); $count++) {
-                $fieldName = $argList[$count];
-
-                if (!is_string($fieldName)) {
-                    throw new Zend_Search_Lucene_Exception('Field name must be a string.');
-                }
-
-                if (!in_array($fieldName, $fieldNames)) {
-                    throw new Zend_Search_Lucene_Exception('Wrong field name.');
-                }
-
-                $valuesArray = array();
-                foreach ($hits as $hit) {
-                    try {
-                        $value = $hit->getDocument()->getFieldValue($fieldName);
-                    } catch (Zend_Search_Lucene_Exception $e) {
-                        if (strpos($e->getMessage(), 'not found') === false) {
-                            throw $e;
-                        } else {
-                            $value = null;
-                        }
-                    }
-
-                    $valuesArray[] = $value;
-                }
-
-                $sortArgs[] = $valuesArray;
-
-                if ($count + 1 < count($argList)  &&  is_integer($argList[$count+1])) {
-                    $count++;
-                    $sortArgs[] = $argList[$count];
-
-                    if ($count + 1 < count($argList)  &&  is_integer($argList[$count+1])) {
-                        $count++;
-                        $sortArgs[] = $argList[$count];
-                    } else {
-                        if ($argList[$count] == SORT_ASC  || $argList[$count] == SORT_DESC) {
-                            $sortArgs[] = SORT_REGULAR;
-                        } else {
-                            $sortArgs[] = SORT_ASC;
-                        }
-                    }
-                } else {
-                    $sortArgs[] = SORT_ASC;
-                    $sortArgs[] = SORT_REGULAR;
-                }
-            }
-
-            // Sort by id's if values are equal
-            $sortArgs[] = $ids;
-            $sortArgs[] = SORT_ASC;
-            $sortArgs[] = SORT_NUMERIC;
-
-            // Array to be sorted
-            $sortArgs[] = &$hits;
-
-            // Do sort
-            call_user_func_array('array_multisort', $sortArgs);
-        }
-
-        return $hits;
-    }
-
-
-    /**
-     * Returns a list of all unique field names that exist in this index.
-     *
-     * @param boolean $indexed
-     * @return array
-     */
-    public function getFieldNames($indexed = false)
-    {
-        $result = array();
-        foreach( $this->_segmentInfos as $segmentInfo ) {
-            $result = array_merge($result, $segmentInfo->getFields($indexed));
-        }
-        return $result;
-    }
-
-
-    /**
-     * Returns a Zend_Search_Lucene_Document object for the document
-     * number $id in this index.
-     *
-     * @param integer|Zend_Search_Lucene_Search_QueryHit $id
-     * @return Zend_Search_Lucene_Document
-     */
-    public function getDocument($id)
-    {
-        if ($id instanceof Zend_Search_Lucene_Search_QueryHit) {
-            /* @var $id Zend_Search_Lucene_Search_QueryHit */
-            $id = $id->id;
-        }
-
-        if ($id >= $this->_docCount) {
-            throw new Zend_Search_Lucene_Exception('Document id is out of the range.');
-        }
-
-        $segmentStartId = 0;
-        foreach ($this->_segmentInfos as $segmentInfo) {
-            if ($segmentStartId + $segmentInfo->count() > $id) {
-                break;
-            }
-
-            $segmentStartId += $segmentInfo->count();
-        }
-
-        $fdxFile = $segmentInfo->openCompoundFile('.fdx');
-        $fdxFile->seek( ($id-$segmentStartId)*8, SEEK_CUR );
-        $fieldValuesPosition = $fdxFile->readLong();
-
-        $fdtFile = $segmentInfo->openCompoundFile('.fdt');
-        $fdtFile->seek($fieldValuesPosition, SEEK_CUR);
-        $fieldCount = $fdtFile->readVInt();
-
-        $doc = new Zend_Search_Lucene_Document();
-        for ($count = 0; $count < $fieldCount; $count++) {
-            $fieldNum = $fdtFile->readVInt();
-            $bits = $fdtFile->readByte();
-
-            $fieldInfo = $segmentInfo->getField($fieldNum);
-
-            if (!($bits & 2)) { // Text data
-                $field = new Zend_Search_Lucene_Field($fieldInfo->name,
-                                                      $fdtFile->readString(),
-                                                      'UTF-8',
-                                                      true,
-                                                      $fieldInfo->isIndexed,
-                                                      $bits & 1 );
-            } else {            // Binary data
-                $field = new Zend_Search_Lucene_Field($fieldInfo->name,
-                                                      $fdtFile->readBinary(),
-                                                      '',
-                                                      true,
-                                                      $fieldInfo->isIndexed,
-                                                      $bits & 1,
-                                                      true );
-            }
-
-            $doc->addField($field);
-        }
-
-        return $doc;
-    }
-
-
-    /**
-     * Returns true if index contain documents with specified term.
-     *
-     * Is used for query optimization.
-     *
-     * @param Zend_Search_Lucene_Index_Term $term
-     * @return boolean
-     */
-    public function hasTerm(Zend_Search_Lucene_Index_Term $term)
-    {
-        foreach ($this->_segmentInfos as $segInfo) {
-            if ($segInfo->getTermInfo($term) instanceof Zend_Search_Lucene_Index_TermInfo) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-    /**
-     * Returns IDs of all the documents containing term.
-     *
-     * @param Zend_Search_Lucene_Index_Term $term
-     * @return array
-     */
-    public function termDocs(Zend_Search_Lucene_Index_Term $term)
-    {
-        $result = array();
-        $segmentStartDocId = 0;
-
-        foreach ($this->_segmentInfos as $segInfo) {
-            $termInfo = $segInfo->getTermInfo($term);
-
-            if (!$termInfo instanceof Zend_Search_Lucene_Index_TermInfo) {
-                $segmentStartDocId += $segInfo->count();
-                continue;
-            }
-
-            $frqFile = $segInfo->openCompoundFile('.frq');
-            $frqFile->seek($termInfo->freqPointer,SEEK_CUR);
-            $docId = 0;
-            for( $count=0; $count < $termInfo->docFreq; $count++ ) {
-                $docDelta = $frqFile->readVInt();
-                if( $docDelta % 2 == 1 ) {
-                    $docId += ($docDelta-1)/2;
-                } else {
-                    $docId += $docDelta/2;
-                    // read freq
-                    $frqFile->readVInt();
-                }
-
-                $result[] = $segmentStartDocId + $docId;
-            }
-
-            $segmentStartDocId += $segInfo->count();
-        }
-
-        return $result;
-    }
-
-
-    /**
-     * Returns an array of all term freqs.
-     * Result array structure: array(docId => freq, ...)
-     *
-     * @param Zend_Search_Lucene_Index_Term $term
-     * @return integer
-     */
-    public function termFreqs(Zend_Search_Lucene_Index_Term $term)
-    {
-        $result = array();
-        $segmentStartDocId = 0;
-        foreach ($this->_segmentInfos as $segmentInfo) {
-            $result += $segmentInfo->termFreqs($term, $segmentStartDocId);
-
-            $segmentStartDocId += $segmentInfo->count();
-        }
-
-        return $result;
-    }
-
-    /**
-     * Returns an array of all term positions in the documents.
-     * Result array structure: array(docId => array(pos1, pos2, ...), ...)
-     *
-     * @param Zend_Search_Lucene_Index_Term $term
-     * @return array
-     */
-    public function termPositions(Zend_Search_Lucene_Index_Term $term)
-    {
-        $result = array();
-        $segmentStartDocId = 0;
-        foreach ($this->_segmentInfos as $segmentInfo) {
-            $result += $segmentInfo->termPositions($term, $segmentStartDocId);
-
-            $segmentStartDocId += $segmentInfo->count();
-        }
-
-        return $result;
-    }
-
-
-    /**
-     * Returns the number of documents in this index containing the $term.
-     *
-     * @param Zend_Search_Lucene_Index_Term $term
-     * @return integer
-     */
-    public function docFreq(Zend_Search_Lucene_Index_Term $term)
-    {
-        $result = 0;
-        foreach ($this->_segmentInfos as $segInfo) {
-            $termInfo = $segInfo->getTermInfo($term);
-            if ($termInfo !== null) {
-                $result += $termInfo->docFreq;
-            }
-        }
-
-        return $result;
-    }
-
-
-    /**
-     * Retrive similarity used by index reader
-     *
-     * @return Zend_Search_Lucene_Search_Similarity
-     */
-    public function getSimilarity()
-    {
-        return Zend_Search_Lucene_Search_Similarity::getDefault();
-    }
-
-
-    /**
-     * Returns a normalization factor for "field, document" pair.
-     *
-     * @param integer $id
-     * @param string $fieldName
-     * @return float
-     */
-    public function norm($id, $fieldName)
-    {
-        if ($id >= $this->_docCount) {
-            return null;
-        }
-
-        $segmentStartId = 0;
-        foreach ($this->_segmentInfos as $segInfo) {
-            if ($segmentStartId + $segInfo->count() > $id) {
-                break;
-            }
-
-            $segmentStartId += $segInfo->count();
-        }
-
-        if ($segInfo->isDeleted($id - $segmentStartId)) {
-            return 0;
-        }
-
-        return $segInfo->norm($id - $segmentStartId, $fieldName);
-    }
-
-    /**
-     * Returns true if any documents have been deleted from this index.
-     *
-     * @return boolean
-     */
-    public function hasDeletions()
-    {
-        foreach ($this->_segmentInfos as $segmentInfo) {
-            if ($segmentInfo->hasDeletions()) {
-                return true;
-            }
-        }
-
-        return false;
-    }
-
-
-    /**
-     * Deletes a document from the index.
-     * $id is an internal document id
-     *
-     * @param integer|Zend_Search_Lucene_Search_QueryHit $id
-     * @throws Zend_Search_Lucene_Exception
-     */
-    public function delete($id)
-    {
-        if ($id instanceof Zend_Search_Lucene_Search_QueryHit) {
-            /* @var $id Zend_Search_Lucene_Search_QueryHit */
-            $id = $id->id;
-        }
-
-        if ($id >= $this->_docCount) {
-            throw new Zend_Search_Lucene_Exception('Document id is out of the range.');
-        }
-
-        $segmentStartId = 0;
-        foreach ($this->_segmentInfos as $segmentInfo) {
-            if ($segmentStartId + $segmentInfo->count() > $id) {
-                break;
-            }
-
-            $segmentStartId += $segmentInfo->count();
-        }
-        $segmentInfo->delete($id - $segmentStartId);
-
-        $this->_hasChanges = true;
-    }
-
-
-
-    /**
-     * Adds a document to this index.
-     *
-     * @param Zend_Search_Lucene_Document $document
-     */
-    public function addDocument(Zend_Search_Lucene_Document $document)
-    {
-        $this->getIndexWriter()->addDocument($document);
-        $this->_docCount++;
-        
-        $this->_hasChanges = true;
-    }
-
-
-    /**
-     * Update document counter
-     */
-    private function _updateDocCount()
-    {
-        $this->_docCount = 0;
-        foreach ($this->_segmentInfos as $segInfo) {
-            $this->_docCount += $segInfo->count();
-        }
-    }
-
-    /**
-     * Commit changes resulting from delete() or undeleteAll() operations.
-     *
-     * @todo undeleteAll processing.
-     */
-    public function commit()
-    {
-        if ($this->_hasChanges) {
-            foreach ($this->_segmentInfos as $segInfo) {
-                $segInfo->writeChanges();
-            }
-            
-            $this->getIndexWriter()->commit();
-            
-            $this->_updateDocCount();
-            
-            $this->_hasChanges = false;
-        }
-    }
-
-
-    /**
-     * Optimize index.
-     *
-     * Merges all segments into one
-     */
-    public function optimize()
-    {
-        // Commit changes if any changes have been made
-        $this->commit();
-
-        if (count($this->_segmentInfos) > 1 || $this->hasDeletions()) {
-            $this->getIndexWriter()->optimize();
-            $this->_updateDocCount();
-        }
-    }
-
-
-    /**
-     * Returns an array of all terms in this index.
-     *
-     * @return array
-     */
-    public function terms()
-    {
-        $result = array();
-
-        $segmentInfoQueue = new Zend_Search_Lucene_Index_SegmentInfoPriorityQueue();
-
-        foreach ($this->_segmentInfos as $segmentInfo) {
-            $segmentInfo->reset();
-
-            // Skip "empty" segments
-            if ($segmentInfo->currentTerm() !== null) {
-                $segmentInfoQueue->put($segmentInfo);
-            }
-        }
-
-        while (($segmentInfo = $segmentInfoQueue->pop()) !== null) {
-            if ($segmentInfoQueue->top() === null ||
-                $segmentInfoQueue->top()->currentTerm()->key() !=
-                            $segmentInfo->currentTerm()->key()) {
-                // We got new term
-                $result[] = $segmentInfo->currentTerm();
-            }
-
-            if ($segmentInfo->nextTerm() !== null) {
-                // Put segment back into the priority queue
-                $segmentInfoQueue->put($segmentInfo);
-            }
-        }
-
-        return $result;
-    }
-
-
-    /**
-     * Terms stream queue
-     *
-     * @var Zend_Search_Lucene_Index_SegmentInfoPriorityQueue
-     */
-    private $_termsStreamQueue = null;
-
-    /**
-     * Last Term in a terms stream
-     *
-     * @var Zend_Search_Lucene_Index_Term
-     */
-    private $_lastTerm = null;
-
-    /**
-     * Reset terms stream.
-     */
-    public function resetTermsStream()
-    {
-        $this->_termsStreamQueue = new Zend_Search_Lucene_Index_SegmentInfoPriorityQueue();
-
-        foreach ($this->_segmentInfos as $segmentInfo) {
-            $segmentInfo->reset();
-
-            // Skip "empty" segments
-            if ($segmentInfo->currentTerm() !== null) {
-                $this->_termsStreamQueue->put($segmentInfo);
-            }
-        }
-
-        $this->nextTerm();
-    }
-
-    /**
-     * Skip terms stream up to specified term preffix.
-     *
-     * Prefix contains fully specified field info and portion of searched term
-     *
-     * @param Zend_Search_Lucene_Index_Term $prefix
-     */
-    public function skipTo(Zend_Search_Lucene_Index_Term $prefix)
-    {
-        $segments = array();
-
-        while (($segmentInfo = $this->_termsStreamQueue->pop()) !== null) {
-            $segments[] = $segmentInfo;
-        }
-
-        foreach ($segments as $segmentInfo) {
-            $segmentInfo->skipTo($prefix);
-
-            if ($segmentInfo->currentTerm() !== null) {
-                $this->_termsStreamQueue->put($segmentInfo);
-            }
-        }
-
-        $this->nextTerm();
-    }
-
-    /**
-     * Scans terms dictionary and returns next term
-     *
-     * @return Zend_Search_Lucene_Index_Term|null
-     */
-    public function nextTerm()
-    {
-        while (($segmentInfo = $this->_termsStreamQueue->pop()) !== null) {
-            if ($this->_termsStreamQueue->top() === null ||
-                $this->_termsStreamQueue->top()->currentTerm()->key() !=
-                            $segmentInfo->currentTerm()->key()) {
-                // We got new term
-                $this->_lastTerm = $segmentInfo->currentTerm();
-
-                if ($segmentInfo->nextTerm() !== null) {
-                    // Put segment back into the priority queue
-                    $this->_termsStreamQueue->put($segmentInfo);
-                }
-
-                return $this->_lastTerm;
-            }
-
-            if ($segmentInfo->nextTerm() !== null) {
-                // Put segment back into the priority queue
-                $this->_termsStreamQueue->put($segmentInfo);
-            }
-        }
-
-        // End of stream
-        $this->_lastTerm = null;
-
-        return null;
-    }
-
-    /**
-     * Returns term in current position
-     *
-     * @return Zend_Search_Lucene_Index_Term|null
-     */
-    public function currentTerm()
-    {
-        return $this->_lastTerm;
-    }
-
-    /**
-     * Close terms stream
-     *
-     * Should be used for resources clean up if stream is not read up to the end
-     */
-    public function closeTermsStream()
-    {
-        while (($segmentInfo = $this->_termsStreamQueue->pop()) !== null) {
-            $segmentInfo->closeTermsStream();
-        }
-
-        $this->_termsStreamQueue = null;
-        $this->_lastTerm         = null;
-    }
-
-
-    /*************************************************************************
-    @todo UNIMPLEMENTED
-    *************************************************************************/
-    /**
-     * Undeletes all documents currently marked as deleted in this index.
-     *
-     * @todo Implementation
-     */
-    public function undeleteAll()
-    {}
-}
diff --git a/search/Zend/Search/Lucene/Analysis/Analyzer.php b/search/Zend/Search/Lucene/Analysis/Analyzer.php
deleted file mode 100644 (file)
index def78ac..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Analysis_Token */
-require_once "{$CFG->dirroot}/search/Zend/Search/Lucene/Analysis/Token.php";
-
-/** Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8 */
-require_once "{$CFG->dirroot}/search/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8.php";
-
-/** Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive */
-require_once "{$CFG->dirroot}/search/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8/CaseInsensitive.php";
-
-/** Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num */
-require_once "{$CFG->dirroot}/search/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8Num.php";
-
-/** Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num_CaseInsensitive */
-require_once "{$CFG->dirroot}/search/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8Num/CaseInsensitive.php";
-
-/** Zend_Search_Lucene_Analysis_Analyzer_Common_Text */
-require_once "{$CFG->dirroot}/search/Zend/Search/Lucene/Analysis/Analyzer/Common/Text.php";
-
-/** Zend_Search_Lucene_Analysis_Analyzer_Common_Text_CaseInsensitive */
-require_once "{$CFG->dirroot}/search/Zend/Search/Lucene/Analysis/Analyzer/Common/Text/CaseInsensitive.php";
-
-/** Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum */
-require_once "{$CFG->dirroot}/search/Zend/Search/Lucene/Analysis/Analyzer/Common/TextNum.php";
-
-/** Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive */
-require_once "{$CFG->dirroot}/search/Zend/Search/Lucene/Analysis/Analyzer/Common/TextNum/CaseInsensitive.php";
-
-/** Zend_Search_Lucene_Analysis_TokenFilter_StopWords */
-require_once 'Zend/Search/Lucene/Analysis/TokenFilter/StopWords.php';
-
-/** Zend_Search_Lucene_Analysis_TokenFilter_ShortWords */
-require_once "{$CFG->dirroot}/search/Zend/Search/Lucene/Analysis/TokenFilter/ShortWords.php";
-
-
-/**
- * An Analyzer is used to analyze text.
- * It thus represents a policy for extracting index terms from text.
- *
- * Note:
- * Lucene Java implementation is oriented to streams. It provides effective work
- * with a huge documents (more then 20Mb).
- * But engine itself is not oriented such documents.
- * Thus Zend_Search_Lucene analysis API works with data strings and sets (arrays).
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-abstract class Zend_Search_Lucene_Analysis_Analyzer
-{
-    /**
-     * The Analyzer implementation used by default.
-     *
-     * @var Zend_Search_Lucene_Analysis_Analyzer
-     */
-    private static $_defaultImpl;
-
-    /**
-     * Input string
-     *
-     * @var string
-     */
-    protected $_input = null;
-
-    /**
-     * Input string encoding
-     *
-     * @var string
-     */
-    protected $_encoding = '';
-
-    /**
-     * Tokenize text to a terms
-     * Returns array of Zend_Search_Lucene_Analysis_Token objects
-     *
-     * Tokens are returned in UTF-8 (internal Zend_Search_Lucene encoding)
-     *
-     * @param string $data
-     * @return array
-     */
-    public function tokenize($data, $encoding = '')
-    {
-        $this->setInput($data, $encoding);
-
-        $tokenList = array();
-        while (($nextToken = $this->nextToken()) !== null) {
-            $tokenList[] = $nextToken;
-        }
-
-        return $tokenList;
-    }
-
-
-    /**
-     * Tokenization stream API
-     * Set input
-     *
-     * @param string $data
-     */
-    public function setInput($data, $encoding = '')
-    {
-        $this->_input    = $data;
-        $this->_encoding = $encoding;
-        $this->reset();
-    }
-
-    /**
-     * Reset token stream
-     */
-    abstract public function reset();
-
-    /**
-     * Tokenization stream API
-     * Get next token
-     * Returns null at the end of stream
-     *
-     * Tokens are returned in UTF-8 (internal Zend_Search_Lucene encoding)
-     *
-     * @return Zend_Search_Lucene_Analysis_Token|null
-     */
-    abstract public function nextToken();
-
-
-
-
-    /**
-     * Set the default Analyzer implementation used by indexing code.
-     *
-     * @param Zend_Search_Lucene_Analysis_Analyzer $similarity
-     */
-    public static function setDefault(Zend_Search_Lucene_Analysis_Analyzer $analyzer)
-    {
-        self::$_defaultImpl = $analyzer;
-    }
-
-
-    /**
-     * Return the default Analyzer implementation used by indexing code.
-     *
-     * @return Zend_Search_Lucene_Analysis_Analyzer
-     */
-    public static function getDefault()
-    {
-        if (!self::$_defaultImpl instanceof Zend_Search_Lucene_Analysis_Analyzer) {
-            self::$_defaultImpl = new Zend_Search_Lucene_Analysis_Analyzer_Common_Text_CaseInsensitive();
-        }
-
-        return self::$_defaultImpl;
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Analysis/Analyzer/Common.php b/search/Zend/Search/Lucene/Analysis/Analyzer/Common.php
deleted file mode 100644 (file)
index 01164d8..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Analysis_Analyzer */
-require_once 'Zend/Search/Lucene/Analysis/Analyzer.php';
-
-
-/**
- * Common implementation of the Zend_Search_Lucene_Analysis_Analyzer interface.
- * There are several standard standard subclasses provided by Zend_Search_Lucene/Analysis
- * subpackage: Zend_Search_Lucene_Analysis_Analyzer_Common_Text, ZSearchHTMLAnalyzer, ZSearchXMLAnalyzer.
- *
- * @todo ZSearchHTMLAnalyzer and ZSearchXMLAnalyzer implementation
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-abstract class Zend_Search_Lucene_Analysis_Analyzer_Common extends Zend_Search_Lucene_Analysis_Analyzer
-{
-    /**
-     * The set of Token filters applied to the Token stream.
-     * Array of Zend_Search_Lucene_Analysis_TokenFilter objects.
-     *
-     * @var array
-     */
-    private $_filters = array();
-
-    /**
-     * Add Token filter to the Analyzer
-     *
-     * @param Zend_Search_Lucene_Analysis_TokenFilter $filter
-     */
-    public function addFilter(Zend_Search_Lucene_Analysis_TokenFilter $filter)
-    {
-        $this->_filters[] = $filter;
-    }
-
-    /**
-     * Apply filters to the token. Can return null when the token was removed.
-     *
-     * @param Zend_Search_Lucene_Analysis_Token $token
-     * @return Zend_Search_Lucene_Analysis_Token
-     */
-    public function normalize(Zend_Search_Lucene_Analysis_Token $token)
-    {
-        foreach ($this->_filters as $filter) {
-            $token = $filter->normalize($token);
-
-            // resulting token can be null if the filter removes it
-            if (is_null($token)) {
-                return null;
-            }
-        }
-
-        return $token;
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Analysis/Analyzer/Common/Text.php b/search/Zend/Search/Lucene/Analysis/Analyzer/Common/Text.php
deleted file mode 100644 (file)
index 46bf196..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Analysis_Analyzer_Common */
-require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common.php';
-
-
-/**
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-class Zend_Search_Lucene_Analysis_Analyzer_Common_Text extends Zend_Search_Lucene_Analysis_Analyzer_Common
-{
-    /**
-     * Current position in a stream
-     *
-     * @var integer
-     */
-    private $_position;
-
-    /**
-     * Reset token stream
-     */
-    public function reset()
-    {
-        $this->_position = 0;
-
-        if ($this->_input === null) {
-            return;
-        }
-
-        // convert input into ascii
-        //$this->_input = iconv($this->_encoding, 'ASCII//TRANSLIT', $this->_input);
-        $this->_input = mb_convert_encoding($this->_input, 'ASCII', 'auto');
-        
-        $this->_encoding = 'ASCII';
-    }
-
-    /**
-     * Tokenization stream API
-     * Get next token
-     * Returns null at the end of stream
-     *
-     * @return Zend_Search_Lucene_Analysis_Token|null
-     */
-    public function nextToken()
-    {
-        if ($this->_input === null) {
-            return null;
-        }
-
-
-        do {
-            if (! preg_match('/[a-zA-Z]+/', $this->_input, $match, PREG_OFFSET_CAPTURE, $this->_position)) {
-                // It covers both cases a) there are no matches (preg_match(...) === 0)
-                // b) error occured (preg_match(...) === FALSE)
-                return null;
-            }
-
-            $str = $match[0][0];
-            $pos = $match[0][1];
-            $endpos = $pos + strlen($str);
-
-            $this->_position = $endpos;
-
-            $token = $this->normalize(new Zend_Search_Lucene_Analysis_Token($str, $pos, $endpos));
-        } while ($token === null); // try again if token is skipped
-
-        return $token;
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Analysis/Analyzer/Common/Text/CaseInsensitive.php b/search/Zend/Search/Lucene/Analysis/Analyzer/Common/Text/CaseInsensitive.php
deleted file mode 100644 (file)
index 4e3dd66..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Analysis_Analyzer_Common_Text */
-require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common/Text.php';
-
-/** Zend_Search_Lucene_Analysis_TokenFilter_LowerCase */
-require_once 'Zend/Search/Lucene/Analysis/TokenFilter/LowerCase.php';
-
-
-/**
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-class Zend_Search_Lucene_Analysis_Analyzer_Common_Text_CaseInsensitive extends Zend_Search_Lucene_Analysis_Analyzer_Common_Text
-{
-    public function __construct()
-    {
-        $this->addFilter(new Zend_Search_Lucene_Analysis_TokenFilter_LowerCase());
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Analysis/Analyzer/Common/TextNum.php b/search/Zend/Search/Lucene/Analysis/Analyzer/Common/TextNum.php
deleted file mode 100644 (file)
index b8aca5d..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Analysis_Analyzer_Common */
-require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common.php';
-
-
-/**
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-class Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum extends Zend_Search_Lucene_Analysis_Analyzer_Common
-{
-    /**
-     * Current position in a stream
-     *
-     * @var integer
-     */
-    private $_position;
-
-    /**
-     * Reset token stream
-     */
-    public function reset()
-    {
-        $this->_position = 0;
-
-        if ($this->_input === null) {
-            return;
-        }
-
-        // convert input into ascii
-        $this->_input = iconv($this->_encoding, 'ASCII//TRANSLIT', $this->_input);
-        $this->_encoding = 'ASCII';
-    }
-
-    /**
-     * Tokenization stream API
-     * Get next token
-     * Returns null at the end of stream
-     *
-     * @return Zend_Search_Lucene_Analysis_Token|null
-     */
-    public function nextToken()
-    {
-        if ($this->_input === null) {
-            return null;
-        }
-
-        do {
-            if (! preg_match('/[a-zA-Z0-9]+/', $this->_input, $match, PREG_OFFSET_CAPTURE, $this->_position)) {
-                // It covers both cases a) there are no matches (preg_match(...) === 0)
-                // b) error occured (preg_match(...) === FALSE)
-                return null;
-            }
-
-            $str = $match[0][0];
-            $pos = $match[0][1];
-            $endpos = $pos + strlen($str);
-
-            $this->_position = $endpos;
-
-            $token = $this->normalize(new Zend_Search_Lucene_Analysis_Token($str, $pos, $endpos));
-        } while ($token === null); // try again if token is skipped
-
-        return $token;
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Analysis/Analyzer/Common/TextNum/CaseInsensitive.php b/search/Zend/Search/Lucene/Analysis/Analyzer/Common/TextNum/CaseInsensitive.php
deleted file mode 100644 (file)
index 89873f1..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum */
-require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common/TextNum.php';
-
-/** Zend_Search_Lucene_Analysis_TokenFilter_LowerCase */
-require_once 'Zend/Search/Lucene/Analysis/TokenFilter/LowerCase.php';
-
-
-/**
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-class Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive extends Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum
-{
-    public function __construct()
-    {
-        $this->addFilter(new Zend_Search_Lucene_Analysis_TokenFilter_LowerCase());
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8.php b/search/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8.php
deleted file mode 100644 (file)
index 768e784..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Analysis_Analyzer_Common */
-require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common.php';
-
-
-/**
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-class Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8 extends Zend_Search_Lucene_Analysis_Analyzer_Common
-{
-    /**
-     * Current char position in an UTF-8 stream
-     *
-     * @var integer
-     */
-    private $_position;
-
-    /**
-     * Current binary position in an UTF-8 stream
-     *
-     * @var integer
-     */
-    private $_bytePosition;
-    
-    /**
-     * Object constructor
-     *
-     * @throws Zend_Search_Lucene_Exception
-     */
-    public function __construct()
-    {
-        if (@preg_match('/\pL/u', 'a') != 1) {
-            // PCRE unicode support is turned off
-            require_once 'Zend/Search/Lucene/Exception.php';
-            throw new Zend_Search_Lucene_Exception('Utf8 analyzer needs PCRE unicode support to be enabled.');
-        }
-    }
-
-    /**
-     * Reset token stream
-     */
-    public function reset()
-    {
-        $this->_position     = 0;
-        $this->_bytePosition = 0;
-
-        // convert input into UTF-8
-        if (strcasecmp($this->_encoding, 'utf8' ) != 0  &&
-            strcasecmp($this->_encoding, 'utf-8') != 0 ) {
-                $this->_input = @iconv($this->_encoding, 'UTF-8', $this->_input);
-                $this->_encoding = 'UTF-8';
-        }
-    }
-
-    /**
-     * Tokenization stream API
-     * Get next token
-     * Returns null at the end of stream
-     *
-     * @return Zend_Search_Lucene_Analysis_Token|null
-     */
-    public function nextToken()
-    {
-        if ($this->_input === null) {
-            return null;
-        }
-
-        do {
-            if (! preg_match('/[\p{L}]+/u', $this->_input, $match, PREG_OFFSET_CAPTURE, $this->_bytePosition)) {
-                // It covers both cases a) there are no matches (preg_match(...) === 0)
-                // b) error occured (preg_match(...) === FALSE)
-                return null;
-            }
-
-            // matched string
-            $matchedWord = $match[0][0];
-            
-            // binary position of the matched word in the input stream
-            $binStartPos = $match[0][1];
-            
-            // character position of the matched word in the input stream
-            $startPos = $this->_position + 
-                        iconv_strlen(substr($this->_input,
-                                            $this->_bytePosition,
-                                            $binStartPos - $this->_bytePosition),
-                                     'UTF-8');
-            // character postion of the end of matched word in the input stream
-            $endPos = $startPos + iconv_strlen($matchedWord, 'UTF-8');
-
-            $this->_bytePosition = $binStartPos + strlen($matchedWord);
-            $this->_position     = $endPos;
-
-            $token = $this->normalize(new Zend_Search_Lucene_Analysis_Token($matchedWord, $startPos, $endPos));
-        } while ($token === null); // try again if token is skipped
-
-        return $token;
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8/CaseInsensitive.php b/search/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8/CaseInsensitive.php
deleted file mode 100644 (file)
index 4213fb3..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8 */
-require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8.php';
-
-/** Zend_Search_Lucene_Analysis_TokenFilter_LowerCaseUtf8 */
-require_once 'Zend/Search/Lucene/Analysis/TokenFilter/LowerCaseUtf8.php';
-
-
-/**
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-class Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive extends Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8 
-{
-    public function __construct()
-    {
-        parent::__construct();
-
-        $this->addFilter(new Zend_Search_Lucene_Analysis_TokenFilter_LowerCaseUtf8());
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8Num.php b/search/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8Num.php
deleted file mode 100644 (file)
index 74c89be..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Analysis_Analyzer_Common */
-require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common.php';
-
-
-/**
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-class Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num extends Zend_Search_Lucene_Analysis_Analyzer_Common
-{
-    /**
-     * Current char position in an UTF-8 stream
-     *
-     * @var integer
-     */
-    private $_position;
-
-    /**
-     * Current binary position in an UTF-8 stream
-     *
-     * @var integer
-     */
-    private $_bytePosition;
-
-    /**
-     * Object constructor
-     *
-     * @throws Zend_Search_Lucene_Exception
-     */
-    public function __construct()
-    {
-        if (@preg_match('/\pL/u', 'a') != 1) {
-            // PCRE unicode support is turned off
-            require_once 'Zend/Search/Lucene/Exception.php';
-            throw new Zend_Search_Lucene_Exception('Utf8Num analyzer needs PCRE unicode support to be enabled.');
-        }
-    }
-
-    /**
-     * Reset token stream
-     */
-    public function reset()
-    {
-        $this->_position     = 0;
-        $this->_bytePosition = 0;
-
-        // convert input into UTF-8
-        if (strcasecmp($this->_encoding, 'utf8' ) != 0  &&
-            strcasecmp($this->_encoding, 'utf-8') != 0 ) {
-                $this->_input = iconv($this->_encoding, 'UTF-8', $this->_input);
-                $this->_encoding = 'UTF-8';
-        }
-    }
-
-    /**
-     * Tokenization stream API
-     * Get next token
-     * Returns null at the end of stream
-     *
-     * @return Zend_Search_Lucene_Analysis_Token|null
-     */
-    public function nextToken()
-    {
-        if ($this->_input === null) {
-            return null;
-        }
-
-        do {
-            if (! preg_match('/[\p{L}\p{N}]+/u', $this->_input, $match, PREG_OFFSET_CAPTURE, $this->_bytePosition)) {
-                // It covers both cases a) there are no matches (preg_match(...) === 0)
-                // b) error occured (preg_match(...) === FALSE)
-                return null;
-            }
-
-            // matched string
-            $matchedWord = $match[0][0];
-            
-            // binary position of the matched word in the input stream
-            $binStartPos = $match[0][1];
-            
-            // character position of the matched word in the input stream
-            $startPos = $this->_position + 
-                        iconv_strlen(substr($this->_input,
-                                            $this->_bytePosition,
-                                            $binStartPos - $this->_bytePosition),
-                                     'UTF-8');
-            // character postion of the end of matched word in the input stream
-            $endPos = $startPos + iconv_strlen($matchedWord, 'UTF-8');
-
-            $this->_bytePosition = $binStartPos + strlen($matchedWord);
-            $this->_position     = $endPos;
-
-            $token = $this->normalize(new Zend_Search_Lucene_Analysis_Token($matchedWord, $startPos, $endPos));
-        } while ($token === null); // try again if token is skipped
-
-        return $token;
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8Num/CaseInsensitive.php b/search/Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8Num/CaseInsensitive.php
deleted file mode 100644 (file)
index 1ec0d5c..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num */
-require_once 'Zend/Search/Lucene/Analysis/Analyzer/Common/Utf8Num.php';
-
-/** Zend_Search_Lucene_Analysis_TokenFilter_LowerCaseUtf8 */
-require_once 'Zend/Search/Lucene/Analysis/TokenFilter/LowerCaseUtf8.php';
-
-
-/**
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-class Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num_CaseInsensitive extends Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8Num
-{
-    public function __construct()
-    {
-        parent::__construct();
-
-        $this->addFilter(new Zend_Search_Lucene_Analysis_TokenFilter_LowerCaseUtf8());
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Analysis/Token.php b/search/Zend/Search/Lucene/Analysis/Token.php
deleted file mode 100644 (file)
index 3097992..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/**
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-class Zend_Search_Lucene_Analysis_Token
-{
-    /**
-     * The text of the term.
-     *
-     * @var string
-     */
-    private $_termText;
-
-    /**
-     * Start in source text.
-     *
-     * @var integer
-     */
-    private $_startOffset;
-
-    /**
-     * End in source text
-     *
-     * @var integer
-     */
-    private $_endOffset;
-
-    /**
-     * The position of this token relative to the previous Token.
-     *
-     * The default value is one.
-     *
-     * Some common uses for this are:
-     * Set it to zero to put multiple terms in the same position.  This is
-     * useful if, e.g., a word has multiple stems.  Searches for phrases
-     * including either stem will match.  In this case, all but the first stem's
-     * increment should be set to zero: the increment of the first instance
-     * should be one.  Repeating a token with an increment of zero can also be
-     * used to boost the scores of matches on that token.
-     *
-     * Set it to values greater than one to inhibit exact phrase matches.
-     * If, for example, one does not want phrases to match across removed stop
-     * words, then one could build a stop word filter that removes stop words and
-     * also sets the increment to the number of stop words removed before each
-     * non-stop word.  Then exact phrase queries will only match when the terms
-     * occur with no intervening stop words.
-     *
-     * @var integer
-     */
-    private $_positionIncrement;
-
-
-    /**
-     * Object constructor
-     *
-     * @param string  $text
-     * @param integer $start
-     * @param integer $end
-     * @param string  $type
-     */
-    public function __construct($text, $start, $end)
-    {
-        $this->_termText    = $text;
-        $this->_startOffset = $start;
-        $this->_endOffset   = $end;
-
-        $this->_positionIncrement = 1;
-    }
-
-
-    /**
-     * positionIncrement setter
-     *
-     * @param integer $positionIncrement
-     */
-    public function setPositionIncrement($positionIncrement)
-    {
-        $this->_positionIncrement = $positionIncrement;
-    }
-
-    /**
-     * Returns the position increment of this Token.
-     *
-     * @return integer
-     */
-    public function getPositionIncrement()
-    {
-        return $this->_positionIncrement;
-    }
-
-    /**
-     * Returns the Token's term text.
-     *
-     * @return string
-     */
-    public function getTermText()
-    {
-        return $this->_termText;
-    }
-
-    /**
-     * Returns this Token's starting offset, the position of the first character
-     * corresponding to this token in the source text.
-     *
-     * Note:
-     * The difference between getEndOffset() and getStartOffset() may not be equal
-     * to strlen(Zend_Search_Lucene_Analysis_Token::getTermText()), as the term text may have been altered
-     * by a stemmer or some other filter.
-     *
-     * @return integer
-     */
-    public function getStartOffset()
-    {
-        return $this->_startOffset;
-    }
-
-    /**
-     * Returns this Token's ending offset, one greater than the position of the
-     * last character corresponding to this token in the source text.
-     *
-     * @return integer
-     */
-    public function getEndOffset()
-    {
-        return $this->_endOffset;
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Analysis/TokenFilter.php b/search/Zend/Search/Lucene/Analysis/TokenFilter.php
deleted file mode 100644 (file)
index 5c58202..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Analysis_Token */
-require_once 'Zend/Search/Lucene/Analysis/Token.php';
-
-
-/**
- * Token filter converts (normalizes) Token ore removes it from a token stream.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-abstract class Zend_Search_Lucene_Analysis_TokenFilter
-{
-    /**
-     * Normalize Token or remove it (if null is returned)
-     *
-     * @param Zend_Search_Lucene_Analysis_Token $srcToken
-     * @return Zend_Search_Lucene_Analysis_Token
-     */
-    abstract public function normalize(Zend_Search_Lucene_Analysis_Token $srcToken);
-}
-
diff --git a/search/Zend/Search/Lucene/Analysis/TokenFilter/LowerCase.php b/search/Zend/Search/Lucene/Analysis/TokenFilter/LowerCase.php
deleted file mode 100644 (file)
index 9fb545c..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Analysis_TokenFilter */
-require_once 'Zend/Search/Lucene/Analysis/TokenFilter.php';
-
-
-/**
- * Lower case Token filter.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-class Zend_Search_Lucene_Analysis_TokenFilter_LowerCase extends Zend_Search_Lucene_Analysis_TokenFilter
-{
-    /**
-     * Normalize Token or remove it (if null is returned)
-     *
-     * @param Zend_Search_Lucene_Analysis_Token $srcToken
-     * @return Zend_Search_Lucene_Analysis_Token
-     */
-    public function normalize(Zend_Search_Lucene_Analysis_Token $srcToken)
-    {
-        $newToken = new Zend_Search_Lucene_Analysis_Token(
-                                     strtolower( $srcToken->getTermText() ),
-                                     $srcToken->getStartOffset(),
-                                     $srcToken->getEndOffset());
-
-        $newToken->setPositionIncrement($srcToken->getPositionIncrement());
-
-        return $newToken;
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Analysis/TokenFilter/LowerCaseUtf8.php b/search/Zend/Search/Lucene/Analysis/TokenFilter/LowerCaseUtf8.php
deleted file mode 100644 (file)
index 78cb5e6..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Analysis_TokenFilter */
-require_once "{$CFG->dirroot}/search/Zend/Search/Lucene/Analysis/TokenFilter.php";
-
-
-/**
- * Lower case Token filter.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-class Zend_Search_Lucene_Analysis_TokenFilter_LowerCaseUtf8 extends Zend_Search_Lucene_Analysis_TokenFilter
-{
-    /**
-     * Object constructor
-     */
-    public function __construct()
-    {
-        global $CFG;
-        if (!function_exists('mb_strtolower')) {
-            // mbstring extension is disabled
-            require_once "{$CFG->dirroot}/search/Zend/Search/Lucene/Exception.php";
-            throw new Zend_Search_Lucene_Exception('Utf8 compatible lower case filter needs mbstring extension to be enabled.');
-        }
-    }
-    
-    /**
-     * Normalize Token or remove it (if null is returned)
-     *
-     * @param Zend_Search_Lucene_Analysis_Token $srcToken
-     * @return Zend_Search_Lucene_Analysis_Token
-     */
-    public function normalize(Zend_Search_Lucene_Analysis_Token $srcToken)
-    {
-        $newToken = new Zend_Search_Lucene_Analysis_Token(
-                                     mb_strtolower($srcToken->getTermText(), 'UTF-8'),
-                                     $srcToken->getStartOffset(),
-                                     $srcToken->getEndOffset());
-
-        $newToken->setPositionIncrement($srcToken->getPositionIncrement());
-
-        return $newToken;
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Analysis/TokenFilter/ShortWords.php b/search/Zend/Search/Lucene/Analysis/TokenFilter/ShortWords.php
deleted file mode 100644 (file)
index 50c3f50..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Analysis_TokenFilter */
-require_once 'Zend/Search/Lucene/Analysis/TokenFilter.php';
-
-
-/**
- * Token filter that removes short words. What is short word can be configured with constructor.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-class Zend_Search_Lucene_Analysis_TokenFilter_ShortWords extends Zend_Search_Lucene_Analysis_TokenFilter
-{
-    /**
-     * Minimum allowed term length
-     * @var integer
-     */
-    private $length;
-
-    /**
-     * Constructs new instance of this filter.
-     *
-     * @param integer $short  minimum allowed length of term which passes this filter (default 2)
-     */
-    public function __construct($length = 2) {
-        $this->length = $length;
-    }
-
-    /**
-     * Normalize Token or remove it (if null is returned)
-     *
-     * @param Zend_Search_Lucene_Analysis_Token $srcToken
-     * @return Zend_Search_Lucene_Analysis_Token
-     */
-    public function normalize(Zend_Search_Lucene_Analysis_Token $srcToken) {
-        if (strlen($srcToken->getTermText()) < $this->length) {
-            return null;
-        } else {
-            return $srcToken;
-        }
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Analysis/TokenFilter/StopWords.php b/search/Zend/Search/Lucene/Analysis/TokenFilter/StopWords.php
deleted file mode 100644 (file)
index 55b7567..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Analysis_TokenFilter */
-require_once 'Zend/Search/Lucene/Analysis/TokenFilter.php';
-require_once 'Zend/Search/Exception.php';
-
-
-/**
- * Token filter that removes stop words. These words must be provided as array (set), example:
- * $stopwords = array('the' => 1, 'an' => '1');
- *
- * We do recommend to provide all words in lowercase and concatenate this class after the lowercase filter.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Analysis
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-class Zend_Search_Lucene_Analysis_TokenFilter_StopWords extends Zend_Search_Lucene_Analysis_TokenFilter
-{
-    /**
-     * Stop Words
-     * @var array
-     */
-    private $_stopSet;
-
-    /**
-     * Constructs new instance of this filter.
-     *
-     * @param array $stopwords array (set) of words that will be filtered out
-     */
-    public function __construct($stopwords = array()) {
-        $this->_stopSet = array_flip($stopwords);
-    }
-
-    /**
-     * Normalize Token or remove it (if null is returned)
-     *
-     * @param Zend_Search_Lucene_Analysis_Token $srcToken
-     * @return Zend_Search_Lucene_Analysis_Token
-     */
-    public function normalize(Zend_Search_Lucene_Analysis_Token $srcToken) {
-        if (array_key_exists($srcToken->getTermText(), $this->_stopSet)) {
-            return null;
-        } else {
-            return $srcToken;
-        }
-    }
-
-    /**
-     * Fills stopwords set from a text file. Each line contains one stopword, lines with '#' in the first
-     * column are ignored (as comments).
-     *
-     * You can call this method one or more times. New stopwords are always added to current set.
-     *
-     * @param string $filepath full path for text file with stopwords
-     * @throws Zend_Search_Exception When the file doesn`t exists or is not readable.
-     */
-    public function loadFromFile($filepath = null) {
-        if (! $filepath || ! file_exists($filepath)) {
-            throw new Zend_Search_Exception('You have to provide valid file path');
-        }
-        $fd = fopen($filepath, "r");
-        if (! $fd) {
-            throw new Zend_Search_Exception('Cannot open file ' . $filepath);
-        }
-        while (!feof ($fd)) {
-            $buffer = trim(fgets($fd));
-            if (strlen($buffer) > 0 && $buffer[0] != '#') {
-                $this->_stopSet[$buffer] = 1;
-            }
-        }
-        if (!fclose($fd)) {
-            throw new Zend_Search_Exception('Cannot close file ' . $filepath);
-        }
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Document.php b/search/Zend/Search/Lucene/Document.php
deleted file mode 100644 (file)
index de4281e..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Document
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Field */
-require_once "Zend/Search/Lucene/Field.php";
-
-
-/**
- * A Document is a set of fields. Each field has a name and a textual value.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Document
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-class Zend_Search_Lucene_Document
-{
-
-    /**
-     * Associative array Zend_Search_Lucene_Field objects where the keys to the
-     * array are the names of the fields.
-     *
-     * @var array
-     */
-    protected $_fields = array();
-
-    public $boost = 1.0;
-
-
-    /**
-     * Proxy method for getFieldValue(), provides more convenient access to
-     * the string value of a field.
-     *
-     * @param  $offset
-     * @return string
-     */
-    public function __get($offset)
-    {
-        return $this->getFieldValue($offset);
-    }
-
-
-    /**
-     * Add a field object to this document.
-     *
-     * @param Zend_Search_Lucene_Field $field
-     */
-    public function addField(Zend_Search_Lucene_Field $field)
-    {
-        $this->_fields[$field->name] = $field;
-    }
-
-
-    /**
-     * Return an array with the names of the fields in this document.
-     *
-     * @return array
-     */
-    public function getFieldNames()
-    {
-        return array_keys($this->_fields);
-    }
-
-
-    /**
-     * Returns Zend_Search_Lucene_Field object for a named field in this document.
-     *
-     * @param string $fieldName
-     * @return Zend_Search_Lucene_Field
-     */
-    public function getField($fieldName)
-    {
-        if (!array_key_exists($fieldName, $this->_fields)) {
-            throw new Zend_Search_Lucene_Exception("Field name \"$fieldName\" not found in document.");
-        }
-        return $this->_fields[$fieldName];
-    }
-
-
-    /**
-     * Returns the string value of a named field in this document.
-     *
-     * @see __get()
-     * @return string
-     */
-    public function getFieldValue($fieldName)
-    {
-        return $this->getField($fieldName)->value;
-    }
-
-    /**
-     * Returns the string value of a named field in UTF-8 encoding.
-     *
-     * @see __get()
-     * @return string
-     */
-    public function getFieldUtf8Value($fieldName)
-    {
-        return $this->getField($fieldName)->getUtf8Value();
-    }
-}
diff --git a/search/Zend/Search/Lucene/Document/Html.php b/search/Zend/Search/Lucene/Document/Html.php
deleted file mode 100644 (file)
index e7cd2f9..0000000
+++ /dev/null
@@ -1,310 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Document
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Document */
-require_once 'Zend/Search/Lucene/Document.php';
-
-
-/**
- * HTML document.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Document
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-class Zend_Search_Lucene_Document_Html extends Zend_Search_Lucene_Document
-{
-    /**
-     * List of document links
-     *
-     * @var array
-     */
-    private $_links = array();
-
-    /**
-     * List of document header links
-     *
-     * @var array
-     */
-    private $_headerLinks = array();
-
-    /**
-     * Stored DOM representation
-     *
-     * @var DOMDocument
-     */
-    private $_doc;
-
-    /**
-     * Object constructor
-     *
-     * @param string  $data
-     * @param boolean $isFile
-     * @param boolean $storeContent
-     */
-    private function __construct($data, $isFile, $storeContent)
-    {
-        $this->_doc = new DOMDocument();
-        $this->_doc->substituteEntities = true;
-
-        if ($isFile) {
-            @$this->_doc->loadHTMLFile($data);
-        } else{
-            @$this->_doc->loadHTML($data);
-        }
-
-        $xpath = new DOMXPath($this->_doc);
-
-        $docTitle = '';
-        $titleNodes = $xpath->query('/html/head/title');
-        foreach ($titleNodes as $titleNode) {
-            // title should always have only one entry, but we process all nodeset entries
-            $docTitle .= $titleNode->nodeValue . ' ';
-        }
-        $this->addField(Zend_Search_Lucene_Field::Text('title', $docTitle, $this->_doc->actualEncoding));
-
-        $metaNodes = $xpath->query('/html/head/meta[@name]');
-        foreach ($metaNodes as $metaNode) {
-            $this->addField(Zend_Search_Lucene_Field::Text($metaNode->getAttribute('name'),
-                                                           $metaNode->getAttribute('content'),
-                                                           $this->_doc->actualEncoding));
-        }
-
-        $docBody = '';
-        $bodyNodes = $xpath->query('/html/body');
-        foreach ($bodyNodes as $bodyNode) {
-            // body should always have only one entry, but we process all nodeset entries
-            $this->_retrieveNodeText($bodyNode, $docBody);
-        }
-        if ($storeContent) {
-            $this->addField(Zend_Search_Lucene_Field::Text('body', $docBody, $this->_doc->actualEncoding));
-        } else {
-            $this->addField(Zend_Search_Lucene_Field::UnStored('body', $docBody, $this->_doc->actualEncoding));
-        }
-
-        $linkNodes = $this->_doc->getElementsByTagName('a');
-        foreach ($linkNodes as $linkNode) {
-            if (($href = $linkNode->getAttribute('href')) != '') {
-                $this->_links[] = $href;
-            }
-        }
-        $this->_links = array_unique($this->_links);
-
-        $linkNodes = $xpath->query('/html/head/link');
-        foreach ($linkNodes as $linkNode) {
-            if (($href = $linkNode->getAttribute('href')) != '') {
-                $this->_headerLinks[] = $href;
-            }
-        }
-        $this->_headerLinks = array_unique($this->_headerLinks);
-    }
-
-    /**
-     * Get node text
-     *
-     * We should exclude scripts, which may be not included into comment tags, CDATA sections,
-     *
-     * @param DOMNode $node
-     * @param string &$text
-     */
-    private function _retrieveNodeText(DOMNode $node, &$text)
-    {
-        if ($node->nodeType == XML_TEXT_NODE) {
-            $text .= $node->nodeValue ;
-            $text .= ' ';
-        } else if ($node->nodeType == XML_ELEMENT_NODE  &&  $node->nodeName != 'script') {
-            foreach ($node->childNodes as $childNode) {
-                $this->_retrieveNodeText($childNode, $text);
-            }
-        }
-    }
-
-    /**
-     * Get document HREF links
-     *
-     * @return array
-     */
-    public function getLinks()
-    {
-        return $this->_links;
-    }
-
-    /**
-     * Get document header links
-     *
-     * @return array
-     */
-    public function getHeaderLinks()
-    {
-        return $this->_headerLinks;
-    }
-
-    /**
-     * Load HTML document from a string
-     *
-     * @param string $data
-     * @param boolean $storeContent
-     * @return Zend_Search_Lucene_Document_Html
-     */
-    public static function loadHTML($data, $storeContent = false)
-    {
-        return new Zend_Search_Lucene_Document_Html($data, false, $storeContent);
-    }
-
-    /**
-     * Load HTML document from a file
-     *
-     * @param string $file
-     * @param boolean $storeContent
-     * @return Zend_Search_Lucene_Document_Html
-     */
-    public static function loadHTMLFile($file, $storeContent = false)
-    {
-        return new Zend_Search_Lucene_Document_Html($file, true, $storeContent);
-    }
-
-
-    /**
-     * Highlight text in text node
-     *
-     * @param DOMText $node
-     * @param array   $wordsToHighlight
-     * @param string  $color
-     */
-    public function _highlightTextNode(DOMText $node, $wordsToHighlight, $color)
-    {
-        $analyzer = Zend_Search_Lucene_Analysis_Analyzer::getDefault();
-        $analyzer->setInput($node->nodeValue, $this->_doc->encoding);
-
-        $matchedTokens = array();
-
-        while (($token = $analyzer->nextToken()) !== null) {
-            if (isset($wordsToHighlight[$token->getTermText()])) {
-                $matchedTokens[] = $token;
-            }
-        }
-
-        if (count($matchedTokens) == 0) {
-            return;
-        }
-
-        $matchedTokens = array_reverse($matchedTokens);
-
-        foreach ($matchedTokens as $token) {
-            // Cut text after matched token
-            $node->splitText($token->getEndOffset());
-
-            // Cut matched node
-            $matchedWordNode = $node->splitText($token->getStartOffset());
-
-            $highlightedNode = $this->_doc->createElement('b', $matchedWordNode->nodeValue);
-            $highlightedNode->setAttribute('style', 'color:black;background-color:' . $color);
-
-            $node->parentNode->replaceChild($highlightedNode, $matchedWordNode);
-        }
-    }
-
-
-    /**
-     * highlight words in content of the specified node
-     *
-     * @param DOMNode $contextNode
-     * @param array $wordsToHighlight
-     * @param string $color
-     */
-    public function _highlightNode(DOMNode $contextNode, $wordsToHighlight, $color)
-    {
-        $textNodes = array();
-
-        if (!$contextNode->hasChildNodes()) {
-            return;
-        }
-
-        foreach ($contextNode->childNodes as $childNode) {
-            if ($childNode->nodeType == XML_TEXT_NODE) {
-                // process node later to leave childNodes structure untouched
-                $textNodes[] = $childNode;
-            } else {
-                // Skip script nodes
-                if ($childNode->nodeName != 'script') {
-                    $this->_highlightNode($childNode, $wordsToHighlight, $color);
-                }
-            }
-        }
-
-        foreach ($textNodes as $textNode) {
-            $this->_highlightTextNode($textNode, $wordsToHighlight, $color);
-        }
-    }
-
-
-
-    /**
-     * Highlight text with specified color
-     *
-     * @param string|array $words
-     * @param string $color
-     * @return string
-     */
-    public function highlight($words, $color = '#66ffff')
-    {
-        if (!is_array($words)) {
-            $words = array($words);
-        }
-        $wordsToHighlight = array();
-
-        $analyzer = Zend_Search_Lucene_Analysis_Analyzer::getDefault();
-        foreach ($words as $wordString) {
-            $wordsToHighlight = array_merge($wordsToHighlight, $analyzer->tokenize($wordString));
-        }
-
-        if (count($wordsToHighlight) == 0) {
-            return $this->_doc->saveHTML();
-        }
-
-        $wordsToHighlightFlipped = array();
-        foreach ($wordsToHighlight as $id => $token) {
-            $wordsToHighlightFlipped[$token->getTermText()] = $id;
-        }
-
-        $xpath = new DOMXPath($this->_doc);
-
-        $matchedNodes = $xpath->query("/html/body");
-        foreach ($matchedNodes as $matchedNode) {
-            $this->_highlightNode($matchedNode, $wordsToHighlightFlipped, $color);
-        }
-
-    }
-
-    /**
-     * Get HTML
-     *
-     * @return string
-     */
-    public function getHTML()
-    {
-        return $this->_doc->saveHTML();
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Exception.php b/search/Zend/Search/Lucene/Exception.php
deleted file mode 100644 (file)
index d08b30d..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/**
- * Framework base exception
- */
-require_once "Zend/Search/Exception.php";
-
-
-/**
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-class Zend_Search_Lucene_Exception extends Zend_Search_Exception
-{}
-
diff --git a/search/Zend/Search/Lucene/FSM.php b/search/Zend/Search/Lucene/FSM.php
deleted file mode 100644 (file)
index 55e758f..0000000
+++ /dev/null
@@ -1,433 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_FSMAction */
-require_once 'Zend/Search/Lucene/FSMAction.php';
-
-/** Zend_Search_Exception */
-require_once 'Zend/Search/Exception.php';
-
-
-/**
- * Abstract Finite State Machine
- *
- * Take a look on Wikipedia state machine description: http://en.wikipedia.org/wiki/Finite_state_machine
- *
- * Any type of Transducers (Moore machine or Mealy machine) also may be implemented by using this abstract FSM.
- * process() methods invokes a specified actions which may construct FSM output.
- * Actions may be also used to signal, that we have reached Accept State
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-abstract class Zend_Search_Lucene_FSM
-{
-    /**
-     * Machine States alphabet
-     *
-     * @var array
-     */
-    private $_states = array();
-
-    /**
-     * Current state
-     *
-     * @var integer|string
-     */
-    private $_currentState = null;
-
-    /**
-     * Input alphabet
-     *
-     * @var array
-     */
-    private $_inputAphabet = array();
-
-    /**
-     * State transition table
-     *
-     * [sourceState][input] => targetState
-     *
-     * @var array
-     */
-    private $_rules = array();
-
-    /**
-     * List of entry actions
-     * Each action executes when entering the state
-     *
-     * [state] => action
-     *
-     * @var array
-     */
-    private $_entryActions =  array();
-
-    /**
-     * List of exit actions
-     * Each action executes when exiting the state
-     *
-     * [state] => action
-     *
-     * @var array
-     */
-    private $_exitActions =  array();
-
-    /**
-     * List of input actions
-     * Each action executes when entering the state
-     *
-     * [state][input] => action
-     *
-     * @var array
-     */
-    private $_inputActions =  array();
-
-    /**
-     * List of input actions
-     * Each action executes when entering the state
-     *
-     * [state1][state2] => action
-     *
-     * @var array
-     */
-    private $_transitionActions =  array();
-
-    /**
-     * Finite State machine constructor
-     *
-     * $states is an array of integers or strings with a list of possible machine states
-     * constructor treats fist list element as a sturt state (assignes it to $_current state).
-     * It may be reassigned by setState() call.
-     * States list may be empty and can be extended later by addState() or addStates() calls.
-     *
-     * $inputAphabet is the same as $states, but represents input alphabet
-     * it also may be extended later by addInputSymbols() or addInputSymbol() calls.
-     *
-     * $rules parameter describes FSM transitions and has a structure:
-     * array( array(sourseState, input, targetState[, inputAction]),
-     *        array(sourseState, input, targetState[, inputAction]),
-     *        array(sourseState, input, targetState[, inputAction]),
-     *        ...
-     *      )
-     * Rules also can be added later by addRules() and addRule() calls.
-     *
-     * FSM actions are very flexible and may be defined by addEntryAction(), addExitAction(),
-     * addInputAction() and addTransitionAction() calls.
-     *
-     * @param array $states
-     * @param array $inputAphabet
-     * @param array $rules
-     */
-    public function __construct($states = array(), $inputAphabet = array(), $rules = array())
-    {
-        $this->addStates($states);
-        $this->addInputSymbols($inputAphabet);
-        $this->addRules($rules);
-    }
-
-    /**
-     * Add states to the state machine
-     *
-     * @param array $states
-     */
-    public function addStates($states)
-    {
-        foreach ($states as $state) {
-            $this->addState($state);
-        }
-    }
-
-    /**
-     * Add state to the state machine
-     *
-     * @param integer|string $state
-     */
-    public function addState($state)
-    {
-        $this->_states[$state] = $state;
-
-        if ($this->_currentState === null) {
-            $this->_currentState = $state;
-        }
-    }
-
-    /**
-     * Set FSM state.
-     * No any action is invoked
-     *
-     * @param integer|string $state
-     * @throws Zend_Search_Exception
-     */
-    public function setState($state)
-    {
-        if (!isset($this->_states[$state])) {
-            throw new Zend_Search_Exception('State \'' . $state . '\' is not on of the possible FSM states.');
-        }
-
-        $this->_currentState = $state;
-    }
-
-    /**
-     * Get FSM state.
-     *
-     * @return integer|string $state|null
-     */
-    public function getState()
-    {
-        return $this->_currentState;
-    }
-
-    /**
-     * Add symbols to the input alphabet
-     *
-     * @param array $inputAphabet
-     */
-    public function addInputSymbols($inputAphabet)
-    {
-        foreach ($inputAphabet as $inputSymbol) {
-            $this->addInputSymbol($inputSymbol);
-        }
-    }
-
-    /**
-     * Add symbol to the input alphabet
-     *
-     * @param integer|string $inputSymbol
-     */
-    public function addInputSymbol($inputSymbol)
-    {
-        $this->_inputAphabet[$inputSymbol] = $inputSymbol;
-    }
-
-
-    /**
-     * Add transition rules
-     *
-     * array structure:
-     * array( array(sourseState, input, targetState[, inputAction]),
-     *        array(sourseState, input, targetState[, inputAction]),
-     *        array(sourseState, input, targetState[, inputAction]),
-     *        ...
-     *      )
-     *
-     * @param array $rules
-     */
-    public function addRules($rules)
-    {
-        foreach ($rules as $rule) {
-            $this->addrule($rule[0], $rule[1], $rule[2], isset($rule[3])?$rule[3]:null);
-        }
-    }
-
-    /**
-     * Add symbol to the input alphabet
-     *
-     * @param integer|string $sourceState
-     * @param integer|string $input
-     * @param integer|string $targetState
-     * @param Zend_Search_Lucene_FSMAction|null $inputAction
-     * @throws Zend_Search_Exception
-     */
-    public function addRule($sourceState, $input, $targetState, $inputAction = null)
-    {
-        if (!isset($this->_states[$sourceState])) {
-            throw new Zend_Search_Exception('Undefined source state (' . $sourceState . ').');
-        }
-        if (!isset($this->_states[$targetState])) {
-            throw new Zend_Search_Exception('Undefined target state (' . $targetState . ').');
-        }
-        if (!isset($this->_inputAphabet[$input])) {
-            throw new Zend_Search_Exception('Undefined input symbol (' . $input . ').');
-        }
-
-        if (!isset($this->_rules[$sourceState])) {
-            $this->_rules[$sourceState] = array();
-        }
-        if (isset($this->_rules[$sourceState][$input])) {
-            throw new Zend_Search_Exception('Rule for {state,input} pair (' . $sourceState . ', '. $input . ') is already defined.');
-        }
-
-        $this->_rules[$sourceState][$input] = $targetState;
-
-
-        if ($inputAction !== null) {
-            $this->addInputAction($sourceState, $input, $inputAction);
-        }
-    }
-
-
-    /**
-     * Add state entry action.
-     * Several entry actions are allowed.
-     * Action execution order is defined by addEntryAction() calls
-     *
-     * @param integer|string $state
-     * @param Zend_Search_Lucene_FSMAction $action
-     */
-    public function addEntryAction($state, Zend_Search_Lucene_FSMAction $action)
-    {
-        if (!isset($this->_states[$state])) {
-            throw new Zend_Search_Exception('Undefined state (' . $state. ').');
-        }
-
-        if (!isset($this->_entryActions[$state])) {
-            $this->_entryActions[$state] = array();
-        }
-
-        $this->_entryActions[$state][] = $action;
-    }
-
-    /**
-     * Add state exit action.
-     * Several exit actions are allowed.
-     * Action execution order is defined by addEntryAction() calls
-     *
-     * @param integer|string $state
-     * @param Zend_Search_Lucene_FSMAction $action
-     */
-    public function addExitAction($state, Zend_Search_Lucene_FSMAction $action)
-    {
-        if (!isset($this->_states[$state])) {
-            throw new Zend_Search_Exception('Undefined state (' . $state. ').');
-        }
-
-        if (!isset($this->_exitActions[$state])) {
-            $this->_exitActions[$state] = array();
-        }
-
-        $this->_exitActions[$state][] = $action;
-    }
-
-    /**
-     * Add input action (defined by {state, input} pair).
-     * Several input actions are allowed.
-     * Action execution order is defined by addInputAction() calls
-     *
-     * @param integer|string $state
-     * @param integer|string $input
-     * @param Zend_Search_Lucene_FSMAction $action
-     */
-    public function addInputAction($state, $inputSymbol, Zend_Search_Lucene_FSMAction $action)
-    {
-        if (!isset($this->_states[$state])) {
-            throw new Zend_Search_Exception('Undefined state (' . $state. ').');
-        }
-        if (!isset($this->_inputAphabet[$inputSymbol])) {
-            throw new Zend_Search_Exception('Undefined input symbol (' . $inputSymbol. ').');
-        }
-
-        if (!isset($this->_inputActions[$state])) {
-            $this->_inputActions[$state] = array();
-        }
-        if (!isset($this->_inputActions[$state][$inputSymbol])) {
-            $this->_inputActions[$state][$inputSymbol] = array();
-        }
-
-        $this->_inputActions[$state][$inputSymbol][] = $action;
-    }
-
-    /**
-     * Add transition action (defined by {state, input} pair).
-     * Several transition actions are allowed.
-     * Action execution order is defined by addTransitionAction() calls
-     *
-     * @param integer|string $sourceState
-     * @param integer|string $targetState
-     * @param Zend_Search_Lucene_FSMAction $action
-     */
-    public function addTransitionAction($sourceState, $targetState, Zend_Search_Lucene_FSMAction $action)
-    {
-        if (!isset($this->_states[$sourceState])) {
-            throw new Zend_Search_Exception('Undefined source state (' . $sourceState. ').');
-        }
-        if (!isset($this->_states[$targetState])) {
-            throw new Zend_Search_Exception('Undefined source state (' . $targetState. ').');
-        }
-
-        if (!isset($this->_transitionActions[$sourceState])) {
-            $this->_transitionActions[$sourceState] = array();
-        }
-        if (!isset($this->_transitionActions[$sourceState][$targetState])) {
-            $this->_transitionActions[$sourceState][$targetState] = array();
-        }
-
-        $this->_transitionActions[$sourceState][$targetState][] = $action;
-    }
-
-
-    /**
-     * Process an input
-     *
-     * @param mixed $input
-     * @throws Zend_Search_Exception
-     */
-    public function process($input)
-    {
-        if (!isset($this->_rules[$this->_currentState])) {
-            throw new Zend_Search_Exception('There is no any rule for current state (' . $this->_currentState . ').');
-        }
-        if (!isset($this->_rules[$this->_currentState][$input])) {
-            throw new Zend_Search_Exception('There is no any rule for {current state, input} pair (' . $this->_currentState . ', ' . $input . ').');
-        }
-
-        $sourceState = $this->_currentState;
-        $targetState = $this->_rules[$this->_currentState][$input];
-
-        if ($sourceState != $targetState  &&  isset($this->_exitActions[$sourceState])) {
-            foreach ($this->_exitActions[$sourceState] as $action) {
-                $action->doAction();
-            }
-        }
-        if (isset($this->_inputActions[$sourceState]) &&
-            isset($this->_inputActions[$sourceState][$input])) {
-            foreach ($this->_inputActions[$sourceState][$input] as $action) {
-                $action->doAction();
-            }
-        }
-
-
-        $this->_currentState = $targetState;
-
-        if (isset($this->_transitionActions[$sourceState]) &&
-            isset($this->_transitionActions[$sourceState][$targetState])) {
-            foreach ($this->_transitionActions[$sourceState][$targetState] as $action) {
-                $action->doAction();
-            }
-        }
-        if ($sourceState != $targetState  &&  isset($this->_entryActions[$targetState])) {
-            foreach ($this->_entryActions[$targetState] as $action) {
-                $action->doAction();
-            }
-        }
-    }
-
-    public function reset()
-    {
-        if (count($this->_states) == 0) {
-            throw new Zend_Search_Exception('There is no any state defined for FSM.');
-        }
-
-        $this->_currentState = $this->_states[0];
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/FSMAction.php b/search/Zend/Search/Lucene/FSMAction.php
deleted file mode 100644 (file)
index fdbd6ff..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/**
- * Abstract Finite State Machine
- *
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-class Zend_Search_Lucene_FSMAction
-{
-    /**
-     * Object reference
-     *
-     * @var object
-     */
-    private $_object;
-
-    /**
-     * Method name
-     *
-     * @var string
-     */
-    private $_method;
-
-    /**
-     * Object constructor
-     *
-     * @param object $object
-     * @param string $method
-     */
-    public function __construct($object, $method)
-    {
-        $this->_object = $object;
-        $this->_method = $method;
-    }
-
-    public function doAction()
-    {
-        $methodName = $this->_method;
-        $this->_object->$methodName();
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Field.php b/search/Zend/Search/Lucene/Field.php
deleted file mode 100644 (file)
index d02f1d9..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Document
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/**
- * A field is a section of a Document.  Each field has two parts,
- * a name and a value. Values may be free text or they may be atomic
- * keywords, which are not further processed. Such keywords may
- * be used to represent dates, urls, etc.  Fields are optionally
- * stored in the index, so that they may be returned with hits
- * on the document.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Document
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-class Zend_Search_Lucene_Field
-{
-    /**
-     * Field name
-     *
-     * @var string
-     */
-    public $name;
-
-
-    public $value;
-    public $isStored    = false;
-    public $isIndexed   = true;
-    public $isTokenized = true;
-    public $isBinary    = false;
-
-    public $storeTermVector = false;
-
-    /**
-     * Field boos factor
-     * It's not stored directly in the index, but affects on normalizetion factor
-     *
-     * @var float
-     */
-    public $boost = 1.0;
-
-    /**
-     * Field value encoding.
-     *
-     * @var string
-     */
-    public $encoding;
-
-    /**
-     * Object constructor
-     *
-     * @param string $name
-     * @param string $value
-     * @param string $encoding
-     * @param boolean $isStored
-     * @param boolean $isIndexed
-     * @param boolean $isTokenized
-     * @param boolean $isBinary
-     */
-    public function __construct($name, $value, $encoding, $isStored, $isIndexed, $isTokenized, $isBinary = false)
-    {
-        $this->name  = $name;
-        $this->value = $value;
-
-        if (!$isBinary) {
-            $this->encoding    = $encoding;
-            $this->isTokenized = $isTokenized;
-        } else {
-            $this->encoding    = '';
-            $this->isTokenized = false;
-        }
-
-        $this->isStored  = $isStored;
-        $this->isIndexed = $isIndexed;
-        $this->isBinary  = $isBinary;
-
-        $this->storeTermVector = false;
-        $this->boost           = 1.0;
-    }
-
-
-    /**
-     * Constructs a String-valued Field that is not tokenized, but is indexed
-     * and stored.  Useful for non-text fields, e.g. date or url.
-     *
-     * @param string $name
-     * @param string $value
-     * @param string $encoding
-     * @return Zend_Search_Lucene_Field
-     */
-    public static function Keyword($name, $value, $encoding = '')
-    {
-        return new self($name, $value, $encoding, true, true, false);
-    }
-
-
-    /**
-     * Constructs a String-valued Field that is not tokenized nor indexed,
-     * but is stored in the index, for return with hits.
-     *
-     * @param string $name
-     * @param string $value
-     * @param string $encoding
-     * @return Zend_Search_Lucene_Field
-     */
-    public static function UnIndexed($name, $value, $encoding = '')
-    {
-        return new self($name, $value, $encoding, true, false, false);
-    }
-
-
-    /**
-     * Constructs a Binary String valued Field that is not tokenized nor indexed,
-     * but is stored in the index, for return with hits.
-     *
-     * @param string $name
-     * @param string $value
-     * @param string $encoding
-     * @return Zend_Search_Lucene_Field
-     */
-    public static function Binary($name, $value)
-    {
-        return new self($name, $value, '', true, false, false, true);
-    }
-
-    /**
-     * Constructs a String-valued Field that is tokenized and indexed,
-     * and is stored in the index, for return with hits.  Useful for short text
-     * fields, like "title" or "subject". Term vector will not be stored for this field.
-     *
-     * @param string $name
-     * @param string $value
-     * @param string $encoding
-     * @return Zend_Search_Lucene_Field
-     */
-    public static function Text($name, $value, $encoding = '')
-    {
-        return new self($name, $value, $encoding, true, true, true);
-    }
-
-
-    /**
-     * Constructs a String-valued Field that is tokenized and indexed,
-     * but that is not stored in the index.
-     *
-     * @param string $name
-     * @param string $value
-     * @param string $encoding
-     * @return Zend_Search_Lucene_Field
-     */
-    public static function UnStored($name, $value, $encoding = '')
-    {
-        return new self($name, $value, $encoding, false, true, true);
-    }
-
-    /**
-     * Get field value in UTF-8 encoding
-     *
-     * @return string
-     */
-    public function getUtf8Value()
-    {
-        if (strcasecmp($this->encoding, 'utf8' ) == 0  ||
-            strcasecmp($this->encoding, 'utf-8') == 0 ) {
-                return $this->value;
-        } else {
-            return iconv($this->encoding, 'UTF-8', $this->value);
-        }
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Index/DictionaryLoader.php b/search/Zend/Search/Lucene/Index/DictionaryLoader.php
deleted file mode 100644 (file)
index f01be7b..0000000
+++ /dev/null
@@ -1,260 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Index
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Exception */
-require_once 'Zend/Search/Lucene/Exception.php';
-
-
-/**
- * Dictionary loader
- *
- * It's a dummy class which is created to encapsulate non-good structured code.
- * Manual "method inlining" is performed to increase dictionary index loading operation
- * which is major bottelneck for search performance.
- *
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Index
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-class Zend_Search_Lucene_Index_DictionaryLoader
-{
-    /**
-     * Dictionary index loader.
-     *
-     * It takes a string which is actually <segment_name>.tii index file data and
-     * returns two arrays - term and tremInfo lists.
-     *
-     * See Zend_Search_Lucene_Index_SegmintInfo class for details
-     *
-     * @param string $data
-     * @return array
-     * @throws Zend_Search_Lucene_Exception
-     */
-    public static function load($data)
-    {
-        $termDictionary = array();
-        $termInfos      = array();
-        $pos = 0;
-
-        // $tiVersion = $tiiFile->readInt();
-        $tiVersion = ord($data[0]) << 24 | ord($data[1]) << 16 | ord($data[2]) << 8  | ord($data[3]);
-        $pos += 4;
-        if ($tiVersion != (int)0xFFFFFFFE /* pre-2.1 format */ &&
-            $tiVersion != (int)0xFFFFFFFD /* 2.1+ format    */) {
-            throw new Zend_Search_Lucene_Exception('Wrong TermInfoIndexFile file format');
-        }
-
-        // $indexTermCount = $tiiFile->readLong();
-        if (PHP_INT_SIZE > 4) {
-            $indexTermCount = ord($data[$pos]) << 56  |
-                              ord($data[$pos+1]) << 48  |
-                              ord($data[$pos+2]) << 40  |
-                              ord($data[$pos+3]) << 32  |
-                              ord($data[$pos+4]) << 24  |
-                              ord($data[$pos+5]) << 16  |
-                              ord($data[$pos+6]) << 8   |
-                              ord($data[$pos+7]);
-        } else {
-            if ((ord($data[$pos])            != 0) ||
-                (ord($data[$pos+1])          != 0) ||
-                (ord($data[$pos+2])          != 0) ||
-                (ord($data[$pos+3])          != 0) ||
-                ((ord($data[$pos+4]) & 0x80) != 0)) {
-                     throw new Zend_Search_Lucene_Exception('Largest supported segment size (for 32-bit mode) is 2Gb');
-                 }
-
-            $indexTermCount = ord($data[$pos+4]) << 24  |
-                              ord($data[$pos+5]) << 16  |
-                              ord($data[$pos+6]) << 8   |
-                              ord($data[$pos+7]);
-        }
-        $pos += 8;
-
-        //                  $tiiFile->readInt();  // IndexInterval
-        $pos += 4;
-
-        // $skipInterval   = $tiiFile->readInt();
-        $skipInterval = ord($data[$pos]) << 24 | ord($data[$pos+1]) << 16 | ord($data[$pos+2]) << 8  | ord($data[$pos+3]);
-        $pos += 4;
-        if ($indexTermCount < 1) {
-            throw new Zend_Search_Lucene_Exception('Wrong number of terms in a term dictionary index');
-        }
-
-        if ($tiVersion == (int)0xFFFFFFFD /* 2.1+ format */) {
-            /* Skip MaxSkipLevels value */
-            $pos += 4;
-        }
-
-        $prevTerm     = '';
-        $freqPointer  =  0;
-        $proxPointer  =  0;
-        $indexPointer =  0;
-        for ($count = 0; $count < $indexTermCount; $count++) {
-            //$termPrefixLength = $tiiFile->readVInt();
-            $nbyte = ord($data[$pos++]);
-            $termPrefixLength = $nbyte & 0x7F;
-            for ($shift=7; ($nbyte & 0x80) != 0; $shift += 7) {
-                $nbyte = ord($data[$pos++]);
-                $termPrefixLength |= ($nbyte & 0x7F) << $shift;
-            }
-
-            // $termSuffix       = $tiiFile->readString();
-            $nbyte = ord($data[$pos++]);
-            $len = $nbyte & 0x7F;
-            for ($shift=7; ($nbyte & 0x80) != 0; $shift += 7) {
-                $nbyte = ord($data[$pos++]);
-                $len |= ($nbyte & 0x7F) << $shift;
-            }
-            if ($len == 0) {
-                $termSuffix = '';
-            } else {
-                $termSuffix = substr($data, $pos, $len);
-                $pos += $len;
-                for ($count1 = 0; $count1 < $len; $count1++ ) {
-                    if (( ord($termSuffix[$count1]) & 0xC0 ) == 0xC0) {
-                        $addBytes = 1;
-                        if (ord($termSuffix[$count1]) & 0x20 ) {
-                            $addBytes++;
-                        }
-                        $termSuffix .= substr($data, $pos, $addBytes);
-                        $pos += $addBytes;
-                        $len += $addBytes;
-
-                        // Check for null character. Java2 encodes null character
-                        // in two bytes.
-                        if (ord($termSuffix[$count1]) == 0xC0 &&
-                            ord($termSuffix[$count1+1]) == 0x80   ) {
-                            $termSuffix[$count1] = 0;
-                            $termSuffix = substr($termSuffix,0,$count1+1)
-                                        . substr($termSuffix,$count1+2);
-                        }
-                        $count1 += $addBytes;
-                    }
-                }
-            }
-
-            // $termValue        = Zend_Search_Lucene_Index_Term::getPrefix($prevTerm, $termPrefixLength) . $termSuffix;
-            $pb = 0; $pc = 0;
-            while ($pb < strlen($prevTerm)  &&  $pc < $termPrefixLength) {
-                $charBytes = 1;
-                if ((ord($prevTerm[$pb]) & 0xC0) == 0xC0) {
-                    $charBytes++;
-                    if (ord($prevTerm[$pb]) & 0x20 ) {
-                        $charBytes++;
-                        if (ord($prevTerm[$pb]) & 0x10 ) {
-                            $charBytes++;
-                        }
-                    }
-                }
-
-                if ($pb + $charBytes > strlen($data)) {
-                    // wrong character
-                    break;
-                }
-
-                $pc++;
-                $pb += $charBytes;
-            }
-            $termValue = substr($prevTerm, 0, $pb) . $termSuffix;
-
-            // $termFieldNum     = $tiiFile->readVInt();
-            $nbyte = ord($data[$pos++]);
-            $termFieldNum = $nbyte & 0x7F;
-            for ($shift=7; ($nbyte & 0x80) != 0; $shift += 7) {
-                $nbyte = ord($data[$pos++]);
-                $termFieldNum |= ($nbyte & 0x7F) << $shift;
-            }
-
-            // $docFreq          = $tiiFile->readVInt();
-            $nbyte = ord($data[$pos++]);
-            $docFreq = $nbyte & 0x7F;
-            for ($shift=7; ($nbyte & 0x80) != 0; $shift += 7) {
-                $nbyte = ord($data[$pos++]);
-                $docFreq |= ($nbyte & 0x7F) << $shift;
-            }
-
-            // $freqPointer     += $tiiFile->readVInt();
-            $nbyte = ord($data[$pos++]);
-            $vint = $nbyte & 0x7F;
-            for ($shift=7; ($nbyte & 0x80) != 0; $shift += 7) {
-                $nbyte = ord($data[$pos++]);
-                $vint |= ($nbyte & 0x7F) << $shift;
-            }
-            $freqPointer += $vint;
-
-            // $proxPointer     += $tiiFile->readVInt();
-            $nbyte = ord($data[$pos++]);
-            $vint = $nbyte & 0x7F;
-            for ($shift=7; ($nbyte & 0x80) != 0; $shift += 7) {
-                $nbyte = ord($data[$pos++]);
-                $vint |= ($nbyte & 0x7F) << $shift;
-            }
-            $proxPointer += $vint;
-
-            if( $docFreq >= $skipInterval ) {
-                // $skipDelta = $tiiFile->readVInt();
-                $nbyte = ord($data[$pos++]);
-                $vint = $nbyte & 0x7F;
-                for ($shift=7; ($nbyte & 0x80) != 0; $shift += 7) {
-                    $nbyte = ord($data[$pos++]);
-                    $vint |= ($nbyte & 0x7F) << $shift;
-                }
-                $skipDelta = $vint;
-            } else {
-                $skipDelta = 0;
-            }
-
-            // $indexPointer += $tiiFile->readVInt();
-            $nbyte = ord($data[$pos++]);
-            $vint = $nbyte & 0x7F;
-            for ($shift=7; ($nbyte & 0x80) != 0; $shift += 7) {
-                $nbyte = ord($data[$pos++]);
-                $vint |= ($nbyte & 0x7F) << $shift;
-            }
-            $indexPointer += $vint;
-
-
-            // $this->_termDictionary[] =  new Zend_Search_Lucene_Index_Term($termValue, $termFieldNum);
-            $termDictionary[] = array($termFieldNum, $termValue);
-
-            $termInfos[] =
-                 // new Zend_Search_Lucene_Index_TermInfo($docFreq, $freqPointer, $proxPointer, $skipDelta, $indexPointer);
-                 array($docFreq, $freqPointer, $proxPointer, $skipDelta, $indexPointer);
-
-            $prevTerm = $termValue;
-        }
-
-        // Check special index entry mark
-        if ($termDictionary[0][0] != (int)0xFFFFFFFF) {
-            throw new Zend_Search_Lucene_Exception('Wrong TermInfoIndexFile file format');
-        } else if (PHP_INT_SIZE > 4){
-            // Treat 64-bit 0xFFFFFFFF as -1
-            $termDictionary[0][0] = -1;
-        }
-
-        return array(&$termDictionary, &$termInfos);
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Index/FieldInfo.php b/search/Zend/Search/Lucene/Index/FieldInfo.php
deleted file mode 100644 (file)
index 0a91872..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Index
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/**
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Index
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-class Zend_Search_Lucene_Index_FieldInfo
-{
-    public $name;
-    public $isIndexed;
-    public $number;
-    public $storeTermVector;
-
-    public function __construct( $name, $isIndexed, $number, $storeTermVector )
-    {
-        $this->name            = $name;
-        $this->isIndexed       = $isIndexed;
-        $this->number          = $number;
-        $this->storeTermVector = $storeTermVector;
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Index/SegmentInfo.php b/search/Zend/Search/Lucene/Index/SegmentInfo.php
deleted file mode 100644 (file)
index 5270ee6..0000000
+++ /dev/null
@@ -1,1484 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Index
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-/** Zend_Search_Lucene_Index_DictionaryLoader */
-require_once 'Zend/Search/Lucene/Index/DictionaryLoader.php';
-
-
-/** Zend_Search_Lucene_Exception */
-require_once 'Zend/Search/Lucene/Exception.php';
-
-/** Zend_Search_Lucene_LockManager */
-require_once 'Zend/Search/Lucene/LockManager.php';
-
-
-/**
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Index
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-class Zend_Search_Lucene_Index_SegmentInfo
-{
-    /**
-     * Number of docs in a segment
-     *
-     * @var integer
-     */
-    private $_docCount;
-
-    /**
-     * Segment name
-     *
-     * @var string
-     */
-    private $_name;
-
-    /**
-     * Term Dictionary Index
-     *
-     * Array of arrays (Zend_Search_Lucene_Index_Term objects are represented as arrays because
-     * of performance considerations)
-     * [0] -> $termValue
-     * [1] -> $termFieldNum
-     *
-     * Corresponding Zend_Search_Lucene_Index_TermInfo object stored in the $_termDictionaryInfos
-     *
-     * @var array
-     */
-    private $_termDictionary;
-
-    /**
-     * Term Dictionary Index TermInfos
-     *
-     * Array of arrays (Zend_Search_Lucene_Index_TermInfo objects are represented as arrays because
-     * of performance considerations)
-     * [0] -> $docFreq
-     * [1] -> $freqPointer
-     * [2] -> $proxPointer
-     * [3] -> $skipOffset
-     * [4] -> $indexPointer
-     *
-     * @var array
-     */
-    private $_termDictionaryInfos;
-
-    /**
-     * Segment fields. Array of Zend_Search_Lucene_Index_FieldInfo objects for this segment
-     *
-     * @var array
-     */
-    private $_fields;
-
-    /**
-     * Field positions in a dictionary.
-     * (Term dictionary contains filelds ordered by names)
-     *
-     * @var array
-     */
-    private $_fieldsDicPositions;
-
-
-    /**
-     * Associative array where the key is the file name and the value is data offset
-     * in a compound segment file (.csf).
-     *
-     * @var array
-     */
-    private $_segFiles;
-
-    /**
-     * Associative array where the key is the file name and the value is file size (.csf).
-     *
-     * @var array
-     */
-    private $_segFileSizes;
-
-    /**
-     * Delete file generation number
-     *
-     * -1 means 'there is no delete file'
-     *  0 means pre-2.1 format delete file
-     *  X specifies used delete file
-     *
-     * @var integer
-     */
-    private $_delGen;
-
-    /**
-     * Segment has single norms file
-     *
-     * If true then one .nrm file is used for all fields
-     * Otherwise .fN files are used
-     *
-     * @var boolean
-     */
-    private $_hasSingleNormFile;
-
-    /**
-     * Use compound segment file (*.cfs) to collect all other segment files
-     * (excluding .del files)
-     *
-     * @var boolean
-     */
-    private $_isCompound;
-
-
-    /**
-     * File system adapter.
-     *
-     * @var Zend_Search_Lucene_Storage_Directory_Filesystem
-     */
-    private $_directory;
-
-    /**
-     * Normalization factors.
-     * An array fieldName => normVector
-     * normVector is a binary string.
-     * Each byte corresponds to an indexed document in a segment and
-     * encodes normalization factor (float value, encoded by
-     * Zend_Search_Lucene_Search_Similarity::encodeNorm())
-     *
-     * @var array
-     */
-    private $_norms = array();
-
-    /**
-     * List of deleted documents.
-     * bitset if bitset extension is loaded or array otherwise.
-     *
-     * @var mixed
-     */
-    private $_deleted = null;
-
-    /**
-     * $this->_deleted update flag
-     *
-     * @var boolean
-     */
-    private $_deletedDirty = false;
-
-
-    /**
-     * Zend_Search_Lucene_Index_SegmentInfo constructor
-     *
-     * @param Zend_Search_Lucene_Storage_Directory $directory
-     * @param string $name
-     * @param integer $docCount
-     * @param integer $delGen
-     * @param boolean $isCompound
-     */
-    public function __construct(Zend_Search_Lucene_Storage_Directory $directory, $name, $docCount, $delGen = 0, $hasSingleNormFile = false, $isCompound = null)
-    {
-        $this->_directory = $directory;
-        $this->_name              = $name;
-        $this->_docCount          = $docCount;
-        $this->_hasSingleNormFile = $hasSingleNormFile;
-        $this->_delGen            = $delGen;
-        $this->_termDictionary    = null;
-
-        if (!is_null($isCompound)) {
-            $this->_isCompound    = $isCompound;
-        } else {
-               // It's a pre-2.1 segment
-               // detect if it uses compond file
-               $this->_isCompound = true;
-
-               try {
-                       // Try to open compound file
-                       $this->_directory->getFileObject($name . '.cfs');
-               } catch (Zend_Search_Lucene_Exception $e) {
-                       if (strpos($e->getMessage(), 'is not readable') !== false) {
-                               // Compound file is not found or is not readable
-                               $this->_isCompound = false;
-                       } else {
-                               throw $e;
-                       }
-               }
-        }
-
-        $this->_segFiles = array();
-        if ($this->_isCompound) {
-            $cfsFile = $this->_directory->getFileObject($name . '.cfs');
-            $segFilesCount = $cfsFile->readVInt();
-
-            for ($count = 0; $count < $segFilesCount; $count++) {
-                $dataOffset = $cfsFile->readLong();
-                if ($count != 0) {
-                    $this->_segFileSizes[$fileName] = $dataOffset - end($this->_segFiles);
-                }
-                $fileName = $cfsFile->readString();
-                $this->_segFiles[$fileName] = $dataOffset;
-            }
-            if ($count != 0) {
-                $this->_segFileSizes[$fileName] = $this->_directory->fileLength($name . '.cfs') - $dataOffset;
-            }
-        }
-
-        $fnmFile = $this->openCompoundFile('.fnm');
-        $fieldsCount = $fnmFile->readVInt();
-        $fieldNames = array();
-        $fieldNums  = array();
-        $this->_fields = array();
-        for ($count=0; $count < $fieldsCount; $count++) {
-            $fieldName = $fnmFile->readString();
-            $fieldBits = $fnmFile->readByte();
-            $this->_fields[$count] = new Zend_Search_Lucene_Index_FieldInfo($fieldName,
-                                                                            $fieldBits & 1,
-                                                                            $count,
-                                                                            $fieldBits & 2 );
-            if ($fieldBits & 0x10) {
-                // norms are omitted for the indexed field
-                $this->_norms[$count] = str_repeat(chr(Zend_Search_Lucene_Search_Similarity::encodeNorm(1.0)), $docCount);
-            }
-
-            $fieldNums[$count]  = $count;
-            $fieldNames[$count] = $fieldName;
-        }
-        array_multisort($fieldNames, SORT_ASC, SORT_REGULAR, $fieldNums);
-        $this->_fieldsDicPositions = array_flip($fieldNums);
-
-        if ($this->_delGen == -1) {
-            // There is no delete file for this segment
-            // Do nothing
-        } else if ($this->_delGen == 0) {
-            // It's a segment with pre-2.1 format delete file
-            // Try to find delete file
-            try {
-                // '.del' files always stored in a separate file
-                // Segment compound is not used
-                $delFile = $this->_directory->getFileObject($this->_name . '.del');
-
-                $byteCount = $delFile->readInt();
-                $byteCount = ceil($byteCount/8);
-                $bitCount  = $delFile->readInt();
-
-                if ($bitCount == 0) {
-                    $delBytes = '';
-                } else {
-                    $delBytes = $delFile->readBytes($byteCount);
-                }
-
-                if (extension_loaded('bitset')) {
-                    $this->_deleted = $delBytes;
-                } else {
-                    $this->_deleted = array();
-                    for ($count = 0; $count < $byteCount; $count++) {
-                        $byte = ord($delBytes{$count});
-                        for ($bit = 0; $bit < 8; $bit++) {
-                            if ($byte & (1<<$bit)) {
-                                $this->_deleted[$count*8 + $bit] = 1;
-                            }
-                        }
-                    }
-                }
-            } catch(Zend_Search_Exception $e) {
-                if (strpos($e->getMessage(), 'is not readable') === false ) {
-                    throw $e;
-                }
-                // There is no delete file
-                // Do nothing
-            }
-        } else {
-            // It's 2.1+ format delete file
-            $delFile = $this->_directory->getFileObject($this->_name . '_' . base_convert($this->_delGen, 10, 36) . '.del');
-
-            $format = $delFile->readInt();
-
-            if ($format == (int)0xFFFFFFFF) {
-                /**
-                 * @todo Implement support of DGaps delete file format.
-                 * See Lucene file format for details - http://lucene.apache.org/java/docs/fileformats.html#Deleted%20Documents
-                 */
-                throw new Zend_Search_Lucene_Exception('DGaps delete file format is not supported. Optimize index to use it with Zend_Search_Lucene');
-            } else {
-                // $format is actually byte count
-                $byteCount = ceil($format/8);
-                $bitCount  = $delFile->readInt();
-
-                if ($bitCount == 0) {
-                    $delBytes = '';
-                } else {
-                    $delBytes = $delFile->readBytes($byteCount);
-                }
-
-                if (extension_loaded('bitset')) {
-                    $this->_deleted = $delBytes;
-                } else {
-                    $this->_deleted = array();
-                    for ($count = 0; $count < $byteCount; $count++) {
-                        $byte = ord($delBytes{$count});
-                        for ($bit = 0; $bit < 8; $bit++) {
-                            if ($byte & (1<<$bit)) {
-                                $this->_deleted[$count*8 + $bit] = 1;
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Opens index file stoted within compound index file
-     *
-     * @param string $extension
-     * @param boolean $shareHandler
-     * @throws Zend_Search_Lucene_Exception
-     * @return Zend_Search_Lucene_Storage_File
-     */
-    public function openCompoundFile($extension, $shareHandler = true)
-    {
-        $filename = $this->_name . $extension;
-
-        if (!$this->_isCompound) {
-            return $this->_directory->getFileObject($filename, $shareHandler);
-        }
-
-        if( !isset($this->_segFiles[$filename]) ) {
-            throw new Zend_Search_Lucene_Exception('Segment compound file doesn\'t contain '
-                                       . $filename . ' file.' );
-        }
-
-        $file = $this->_directory->getFileObject($this->_name . '.cfs', $shareHandler);
-        $file->seek($this->_segFiles[$filename]);
-        return $file;
-    }
-
-    /**
-     * Get compound file length
-     *
-     * @param string $extension
-     * @return integer
-     */
-    public function compoundFileLength($extension)
-    {
-        $filename = $this->_name . $extension;
-
-        // Try to get common file first
-        if ($this->_directory->fileExists($filename)) {
-            return $this->_directory->fileLength($filename);
-        }
-
-        if( !isset($this->_segFileSizes[$filename]) ) {
-            throw new Zend_Search_Lucene_Exception('Index compound file doesn\'t contain '
-                                       . $filename . ' file.' );
-        }
-
-        return $this->_segFileSizes[$filename];
-    }
-
-    /**
-     * Returns field index or -1 if field is not found
-     *
-     * @param string $fieldName
-     * @return integer
-     */
-    public function getFieldNum($fieldName)
-    {
-        foreach( $this->_fields as $field ) {
-            if( $field->name == $fieldName ) {
-                return $field->number;
-            }
-        }
-
-        return -1;
-    }
-
-    /**
-     * Returns field info for specified field
-     *
-     * @param integer $fieldNum
-     * @return Zend_Search_Lucene_Index_FieldInfo
-     */
-    public function getField($fieldNum)
-    {
-        return $this->_fields[$fieldNum];
-    }
-
-    /**
-     * Returns array of fields.
-     * if $indexed parameter is true, then returns only indexed fields.
-     *
-     * @param boolean $indexed
-     * @return array
-     */
-    public function getFields($indexed = false)
-    {
-        $result = array();
-        foreach( $this->_fields as $field ) {
-            if( (!$indexed) || $field->isIndexed ) {
-                $result[ $field->name ] = $field->name;
-            }
-        }
-        return $result;
-    }
-
-    /**
-     * Returns array of FieldInfo objects.
-     *
-     * @return array
-     */
-    public function getFieldInfos()
-    {
-        return $this->_fields;
-    }
-
-    /**
-     * Returns actual deletions file generation number.
-     *
-     * @return integer
-     */
-    public function getDelGen()
-    {
-        return $this->_delGen;
-    }
-
-    /**
-     * Returns the total number of documents in this segment (including deleted documents).
-     *
-     * @return integer
-     */
-    public function count()
-    {
-        return $this->_docCount;
-    }
-
-    /**
-     * Returns number of deleted documents.
-     *
-     * @return integer
-     */
-    private function _deletedCount()
-    {
-        if ($this->_deleted === null) {
-            return 0;
-        }
-
-        if (extension_loaded('bitset')) {
-            return count(bitset_to_array($this->_deleted));
-        } else {
-            return count($this->_deleted);
-        }
-    }
-
-    /**
-     * Returns the total number of non-deleted documents in this segment.
-     *
-     * @return integer
-     */
-    public function numDocs()
-    {
-        if ($this->hasDeletions()) {
-            return $this->_docCount - $this->_deletedCount();
-        } else {
-            return $this->_docCount;
-        }
-    }
-
-    /**
-     * Get field position in a fields dictionary
-     *
-     * @param integer $fieldNum
-     * @return integer
-     */
-    private function _getFieldPosition($fieldNum) {
-        // Treat values which are not in a translation table as a 'direct value'
-        return isset($this->_fieldsDicPositions[$fieldNum]) ?
-                           $this->_fieldsDicPositions[$fieldNum] : $fieldNum;
-    }
-
-    /**
-     * Return segment name
-     *
-     * @return string
-     */
-    public function getName()
-    {
-        return $this->_name;
-    }
-
-
-    /**
-     * TermInfo cache
-     *
-     * Size is 1024.
-     * Numbers are used instead of class constants because of performance considerations
-     *
-     * @var array
-     */
-    private $_termInfoCache = array();
-
-    private function _cleanUpTermInfoCache()
-    {
-        // Clean 256 term infos
-        foreach ($this->_termInfoCache as $key => $termInfo) {
-            unset($this->_termInfoCache[$key]);
-
-            // leave 768 last used term infos
-            if (count($this->_termInfoCache) == 768) {
-                break;
-            }
-        }
-    }
-
-    /**
-     * Load terms dictionary index
-     * 
-     * @throws Zend_Search_Lucene_Exception
-     */
-    private function _loadDictionaryIndex()
-    {
-        // Check, if index is already serialized
-        if ($this->_directory->fileExists($this->_name . '.sti')) {
-            // Load serialized dictionary index data
-            $stiFile = $this->_directory->getFileObject($this->_name . '.sti');
-            $stiFileData = $stiFile->readBytes($this->_directory->fileLength($this->_name . '.sti'));
-
-            // Load dictionary index data
-            if (($unserializedData = @unserialize($stiFileData)) !== false) {
-                list($this->_termDictionary, $this->_termDictionaryInfos) = $unserializedData;
-                return;
-            }
-        }
-
-        // Load data from .tii file and generate .sti file
-
-        // Prefetch dictionary index data
-        $tiiFile = $this->openCompoundFile('.tii');
-        $tiiFileData = $tiiFile->readBytes($this->compoundFileLength('.tii'));
-
-        // Load dictionary index data
-        list($this->_termDictionary, $this->_termDictionaryInfos) =
-                    Zend_Search_Lucene_Index_DictionaryLoader::load($tiiFileData);
-
-        $stiFileData = serialize(array($this->_termDictionary, $this->_termDictionaryInfos));
-        $stiFile = $this->_directory->createFile($this->_name . '.sti');
-        $stiFile->writeBytes($stiFileData);
-    }
-
-    /**
-     * Scans terms dictionary and returns term info
-     *
-     * @param Zend_Search_Lucene_Index_Term $term
-     * @return Zend_Search_Lucene_Index_TermInfo
-     */
-    public function getTermInfo(Zend_Search_Lucene_Index_Term $term)
-    {
-        $termKey = $term->key();
-        if (isset($this->_termInfoCache[$termKey])) {
-            $termInfo = $this->_termInfoCache[$termKey];
-
-            // Move termInfo to the end of cache
-            unset($this->_termInfoCache[$termKey]);
-            $this->_termInfoCache[$termKey] = $termInfo;
-
-            return $termInfo;
-        }
-
-
-        if ($this->_termDictionary === null) {
-            $this->_loadDictionaryIndex();
-        }
-
-        $searchField = $this->getFieldNum($term->field);
-
-        if ($searchField == -1) {
-            return null;
-        }
-        $searchDicField = $this->_getFieldPosition($searchField);
-
-        // search for appropriate value in dictionary
-        $lowIndex = 0;
-        $highIndex = count($this->_termDictionary)-1;
-        while ($highIndex >= $lowIndex) {
-            // $mid = ($highIndex - $lowIndex)/2;
-            $mid = ($highIndex + $lowIndex) >> 1;
-            $midTerm = $this->_termDictionary[$mid];
-
-            $fieldNum = $this->_getFieldPosition($midTerm[0] /* field */);
-            $delta = $searchDicField - $fieldNum;
-            if ($delta == 0) {
-                $delta = strcmp($term->text, $midTerm[1] /* text */);
-            }
-
-            if ($delta < 0) {
-                $highIndex = $mid-1;
-            } elseif ($delta > 0) {
-                $lowIndex  = $mid+1;
-            } else {
-                // return $this->_termDictionaryInfos[$mid]; // We got it!
-                $a = $this->_termDictionaryInfos[$mid];
-                $termInfo = new Zend_Search_Lucene_Index_TermInfo($a[0], $a[1], $a[2], $a[3], $a[4]);
-
-                // Put loaded termInfo into cache
-                $this->_termInfoCache[$termKey] = $termInfo;
-
-                return $termInfo;
-            }
-        }
-
-        if ($highIndex == -1) {
-            // Term is out of the dictionary range
-            return null;
-        }
-
-        $prevPosition = $highIndex;
-        $prevTerm = $this->_termDictionary[$prevPosition];
-        $prevTermInfo = $this->_termDictionaryInfos[$prevPosition];
-
-        $tisFile = $this->openCompoundFile('.tis');
-        $tiVersion = $tisFile->readInt();
-        if ($tiVersion != (int)0xFFFFFFFE /* pre-2.1 format */  &&
-            $tiVersion != (int)0xFFFFFFFD /* 2.1+ format    */) {
-            throw new Zend_Search_Lucene_Exception('Wrong TermInfoFile file format');
-        }
-
-        $termCount     = $tisFile->readLong();
-        $indexInterval = $tisFile->readInt();
-        $skipInterval  = $tisFile->readInt();
-        if ($tiVersion == (int)0xFFFFFFFD /* 2.1+ format */) {
-            $maxSkipLevels = $tisFile->readInt();
-        }
-
-        $tisFile->seek($prevTermInfo[4] /* indexPointer */ - (($tiVersion == (int)0xFFFFFFFD)? 24 : 20) /* header size*/, SEEK_CUR);
-
-        $termValue    = $prevTerm[1] /* text */;
-        $termFieldNum = $prevTerm[0] /* field */;
-        $freqPointer = $prevTermInfo[1] /* freqPointer */;
-        $proxPointer = $prevTermInfo[2] /* proxPointer */;
-        for ($count = $prevPosition*$indexInterval + 1;
-             $count <= $termCount &&
-             ( $this->_getFieldPosition($termFieldNum) < $searchDicField ||
-              ($this->_getFieldPosition($termFieldNum) == $searchDicField &&
-               strcmp($termValue, $term->text) < 0) );
-             $count++) {
-            $termPrefixLength = $tisFile->readVInt();
-            $termSuffix       = $tisFile->readString();
-            $termFieldNum     = $tisFile->readVInt();
-            $termValue        = Zend_Search_Lucene_Index_Term::getPrefix($termValue, $termPrefixLength) . $termSuffix;
-
-            $docFreq      = $tisFile->readVInt();
-            $freqPointer += $tisFile->readVInt();
-            $proxPointer += $tisFile->readVInt();
-            if( $docFreq >= $skipInterval ) {
-                $skipOffset = $tisFile->readVInt();
-            } else {
-                $skipOffset = 0;
-            }
-        }
-
-        if ($termFieldNum == $searchField && $termValue == $term->text) {
-            $termInfo = new Zend_Search_Lucene_Index_TermInfo($docFreq, $freqPointer, $proxPointer, $skipOffset);
-        } else {
-            $termInfo = null;
-        }
-
-        // Put loaded termInfo into cache
-        $this->_termInfoCache[$termKey] = $termInfo;
-
-        if (count($this->_termInfoCache) == 1024) {
-            $this->_cleanUpTermInfoCache();
-        }
-
-        return $termInfo;
-    }
-
-    /**
-     * Returns term freqs array.
-     * Result array structure: array(docId => freq, ...)
-     *
-     * @param Zend_Search_Lucene_Index_Term $term
-     * @param integer $shift
-     * @return Zend_Search_Lucene_Index_TermInfo
-     */
-    public function termFreqs(Zend_Search_Lucene_Index_Term $term, $shift = 0)
-    {
-        $termInfo = $this->getTermInfo($term);
-
-        if (!$termInfo instanceof Zend_Search_Lucene_Index_TermInfo) {
-            return array();
-        }
-
-        $frqFile = $this->openCompoundFile('.frq');
-        $frqFile->seek($termInfo->freqPointer,SEEK_CUR);
-        $result = array();
-        $docId = 0;
-
-        for ($count = 0; $count < $termInfo->docFreq; $count++) {
-            $docDelta = $frqFile->readVInt();
-            if ($docDelta % 2 == 1) {
-                $docId += ($docDelta-1)/2;
-                $result[$shift + $docId] = 1;
-            } else {
-                $docId += $docDelta/2;
-                $result[$shift + $docId] = $frqFile->readVInt();
-            }
-        }
-
-        return $result;
-    }
-
-    /**
-     * Returns term positions array.
-     * Result array structure: array(docId => array(pos1, pos2, ...), ...)
-     *
-     * @param Zend_Search_Lucene_Index_Term $term
-     * @param integer $shift
-     * @return Zend_Search_Lucene_Index_TermInfo
-     */
-    public function termPositions(Zend_Search_Lucene_Index_Term $term, $shift = 0)
-    {
-        $termInfo = $this->getTermInfo($term);
-
-        if (!$termInfo instanceof Zend_Search_Lucene_Index_TermInfo) {
-            return array();
-        }
-
-        $frqFile = $this->openCompoundFile('.frq');
-        $frqFile->seek($termInfo->freqPointer,SEEK_CUR);
-        $freqs = array();
-        $docId = 0;
-
-        for ($count = 0; $count < $termInfo->docFreq; $count++) {
-            $docDelta = $frqFile->readVInt();
-            if ($docDelta % 2 == 1) {
-                $docId += ($docDelta-1)/2;
-                $freqs[$docId] = 1;
-            } else {
-                $docId += $docDelta/2;
-                $freqs[$docId] = $frqFile->readVInt();
-            }
-        }
-
-        $result = array();
-        $prxFile = $this->openCompoundFile('.prx');
-        $prxFile->seek($termInfo->proxPointer, SEEK_CUR);
-        foreach ($freqs as $docId => $freq) {
-            $termPosition = 0;
-            $positions = array();
-
-            for ($count = 0; $count < $freq; $count++ ) {
-                $termPosition += $prxFile->readVInt();
-                $positions[] = $termPosition;
-            }
-
-            $result[$shift + $docId] = $positions;
-        }
-
-        return $result;
-    }
-
-    /**
-     * Load normalizatin factors from an index file
-     *
-     * @param integer $fieldNum
-     * @throws Zend_Search_Lucene_Exception
-     */
-    private function _loadNorm($fieldNum)
-    {
-        if ($this->_hasSingleNormFile) {
-            $normfFile = $this->openCompoundFile('.nrm');
-
-            $header              = $normfFile->readBytes(3);
-            $headerFormatVersion = $normfFile->readByte();
-
-            if ($header != 'NRM'  ||  $headerFormatVersion != (int)0xFF) {
-                throw new  Zend_Search_Lucene_Exception('Wrong norms file format.');
-            }
-
-            foreach ($this->_fields as $fieldNum => $fieldInfo) {
-                if ($fieldInfo->isIndexed) {
-                    $this->_norms[$fieldNum] = $normfFile->readBytes($this->_docCount);
-                }
-            }
-        } else {
-            $fFile = $this->openCompoundFile('.f' . $fieldNum);
-            $this->_norms[$fieldNum] = $fFile->readBytes($this->_docCount);
-        }
-    }
-
-    /**
-     * Returns normalization factor for specified documents
-     *
-     * @param integer $id
-     * @param string $fieldName
-     * @return float
-     */
-    public function norm($id, $fieldName)
-    {
-        $fieldNum = $this->getFieldNum($fieldName);
-
-        if ( !($this->_fields[$fieldNum]->isIndexed) ) {
-            return null;
-        }
-
-        if (!isset($this->_norms[$fieldNum])) {
-            $this->_loadNorm($fieldNum);
-        }
-
-        return Zend_Search_Lucene_Search_Similarity::decodeNorm( ord($this->_norms[$fieldNum]{$id}) );
-    }
-
-    /**
-     * Returns norm vector, encoded in a byte string
-     *
-     * @param string $fieldName
-     * @return string
-     */
-    public function normVector($fieldName)
-    {
-        $fieldNum = $this->getFieldNum($fieldName);
-
-        if ($fieldNum == -1  ||  !($this->_fields[$fieldNum]->isIndexed)) {
-            $similarity = Zend_Search_Lucene_Search_Similarity::getDefault();
-
-            return str_repeat(chr($similarity->encodeNorm( $similarity->lengthNorm($fieldName, 0) )),
-                              $this->_docCount);
-        }
-
-        if (!isset($this->_norms[$fieldNum])) {
-            $this->_loadNorm($fieldNum);
-        }
-
-        return $this->_norms[$fieldNum];
-    }
-
-
-    /**
-     * Returns true if any documents have been deleted from this index segment.
-     *
-     * @return boolean
-     */
-    public function hasDeletions()
-    {
-        return $this->_deleted !== null;
-    }
-
-
-    /**
-     * Returns true if segment has single norms file.
-     *
-     * @return boolean
-     */
-    public function hasSingleNormFile()
-    {
-        return $this->_hasSingleNormFile ? 1 : 0;
-    }
-
-    /**
-     * Returns true if segment is stored using compound segment file.
-     *
-     * @return boolean
-     */
-    public function isCompound()
-    {
-        return $this->_isCompound ? 1 : 0;
-    }
-
-    /**
-     * Deletes a document from the index segment.
-     * $id is an internal document id
-     *
-     * @param integer
-     */
-    public function delete($id)
-    {
-        $this->_deletedDirty = true;
-
-        if (extension_loaded('bitset')) {
-            if ($this->_deleted === null) {
-                $this->_deleted = bitset_empty($id);
-            }
-            bitset_incl($this->_deleted, $id);
-        } else {
-            if ($this->_deleted === null) {
-                $this->_deleted = array();
-            }
-
-            $this->_deleted[$id] = 1;
-        }
-    }
-
-    /**
-     * Checks, that document is deleted
-     *
-     * @param integer
-     * @return boolean
-     */
-    public function isDeleted($id)
-    {
-        if ($this->_deleted === null) {
-            return false;
-        }
-
-        if (extension_loaded('bitset')) {
-            return bitset_in($this->_deleted, $id);
-        } else {
-            return isset($this->_deleted[$id]);
-        }
-    }
-
-
-    /**
-     * Write changes if it's necessary.
-     */
-    public function writeChanges()
-    {
-        if (!$this->_deletedDirty) {
-            return;
-        }
-
-        if (extension_loaded('bitset')) {
-            $delBytes = $this->_deleted;
-            $bitCount = count(bitset_to_array($delBytes));
-        } else {
-            $byteCount = floor($this->_docCount/8)+1;
-            $delBytes = str_repeat(chr(0), $byteCount);
-            for ($count = 0; $count < $byteCount; $count++) {
-                $byte = 0;
-                for ($bit = 0; $bit < 8; $bit++) {
-                    if (isset($this->_deleted[$count*8 + $bit])) {
-                        $byte |= (1<<$bit);
-                    }
-                }
-                $delBytes{$count} = chr($byte);
-            }
-            $bitCount = count($this->_deleted);
-        }
-
-
-        // Get new generation number
-        Zend_Search_Lucene_LockManager::obtainWriteLock($this->_directory);
-
-        $delFileList = array();
-        foreach ($this->_directory->fileList() as $file) {
-               if ($file == $this->_name . '.del') {
-                       // Matches <segment_name>.del file name
-                       $delFileList[] = 0;
-               } else if (preg_match('/^' . $this->_name . '_([a-zA-Z0-9]+)\.del$/i', $file, $matches)) {
-                       // Matches <segment_name>_NNN.del file names
-                $delFileList[] = (int)base_convert($matches[1], 36, 10);
-            }
-        }
-
-        if (count($delFileList) == 0) {
-               // There is no deletions file for current segment in the directory
-               // Set detetions file generation number to 1
-               $this->_delGen = 1;
-        } else {
-               // There are some deletions files for current segment in the directory
-               // Set detetions file generation number to the highest + 1
-               $this->_delGen = max($delFileList) + 1;
-        }
-
-        $delFile = $this->_directory->createFile($this->_name . '_' . base_convert($this->_delGen, 10, 36) . '.del');
-
-        Zend_Search_Lucene_LockManager::releaseWriteLock($this->_directory);
-
-
-        $delFile->writeInt($this->_docCount);
-        $delFile->writeInt($bitCount);
-        $delFile->writeBytes($delBytes);
-
-        $this->_deletedDirty = false;
-    }
-
-
-
-    /**
-     * Term Dictionary File object for stream like terms reading
-     *
-     * @var Zend_Search_Lucene_Storage_File
-     */
-    private $_tisFile = null;
-
-    /**
-     * Actual offset of the .tis file data
-     *
-     * @var integer
-     */
-    private $_tisFileOffset;
-
-    /**
-     * Frequencies File object for stream like terms reading
-     *
-     * @var Zend_Search_Lucene_Storage_File
-     */
-    private $_frqFile = null;
-
-    /**
-     * Actual offset of the .frq file data
-     *
-     * @var integer
-     */
-    private $_frqFileOffset;
-
-    /**
-     * Positions File object for stream like terms reading
-     *
-     * @var Zend_Search_Lucene_Storage_File
-     */
-    private $_prxFile = null;
-
-    /**
-     * Actual offset of the .prx file in the compound file
-     *
-     * @var integer
-     */
-    private $_prxFileOffset;
-
-
-    /**
-     * Actual number of terms in term stream
-     *
-     * @var integer
-     */
-    private $_termCount = 0;
-
-    /**
-     * Overall number of terms in term stream
-     *
-     * @var integer
-     */
-    private $_termNum = 0;
-
-    /**
-     * Segment index interval
-     *
-     * @var integer
-     */
-    private $_indexInterval;
-
-    /**
-     * Segment skip interval
-     *
-     * @var integer
-     */
-    private $_skipInterval;
-
-    /**
-     * Last TermInfo in a terms stream
-     *
-     * @var Zend_Search_Lucene_Index_TermInfo
-     */
-    private $_lastTermInfo = null;
-
-    /**
-     * Last Term in a terms stream
-     *
-     * @var Zend_Search_Lucene_Index_Term
-     */
-    private $_lastTerm = null;
-
-    /**
-     * Map of the document IDs
-     * Used to get new docID after removing deleted documents.
-     * It's not very effective from memory usage point of view,
-     * but much more faster, then other methods
-     *
-     * @var array|null
-     */
-    private $_docMap = null;
-
-    /**
-     * An array of all term positions in the documents.
-     * Array structure: array( docId => array( pos1, pos2, ...), ...)
-     *
-     * Is set to null if term positions loading has to be skipped
-     *
-     * @var array|null
-     */
-    private $_lastTermPositions;
-
-
-    /**
-     * Terms scan mode
-     *
-     * Values:
-     *
-     * self::SM_TERMS_ONLY - terms are scanned, no additional info is retrieved
-     * self::SM_MERGE_INFO - terms are scanned, frequency and position info is retrieved
-     *                       document numbers are compacted (shifted if segment has deleted documents)
-     *
-     * @var integer
-     */
-    private $_termsScanMode;
-
-    /** Scan modes */
-    const SM_TERMS_ONLY = 0;    // terms are scanned, no additional info is retrieved
-    const SM_FULL_INFO  = 1;    // terms are scanned, frequency and position info is retrieved
-    const SM_MERGE_INFO = 2;    // terms are scanned, frequency and position info is retrieved
-                                // document numbers are compacted (shifted if segment contains deleted documents)
-
-    /**
-     * Reset terms stream
-     *
-     * $startId - id for the fist document
-     * $compact - remove deleted documents
-     *
-     * Returns start document id for the next segment
-     *
-     * @param integer $startId
-     * @param integer $mode
-     * @throws Zend_Search_Lucene_Exception
-     * @return integer
-     */
-    public function reset($startId = 0, $mode = self::SM_TERMS_ONLY)
-    {
-        if ($this->_tisFile !== null) {
-            $this->_tisFile = null;
-        }
-
-        $this->_tisFile = $this->openCompoundFile('.tis', false);
-        $this->_tisFileOffset = $this->_tisFile->tell();
-
-        $tiVersion = $this->_tisFile->readInt();
-        if ($tiVersion != (int)0xFFFFFFFE /* pre-2.1 format */  &&
-            $tiVersion != (int)0xFFFFFFFD /* 2.1+ format    */) {
-            throw new Zend_Search_Lucene_Exception('Wrong TermInfoFile file format');
-        }
-
-        $this->_termCount     =
-              $this->_termNum = $this->_tisFile->readLong(); // Read terms count
-        $this->_indexInterval = $this->_tisFile->readInt();  // Read Index interval
-        $this->_skipInterval  = $this->_tisFile->readInt();  // Read skip interval
-        if ($tiVersion == (int)0xFFFFFFFD /* 2.1+ format */) {
-            $maxSkipLevels = $this->_tisFile->readInt();
-        }
-
-        if ($this->_frqFile !== null) {
-            $this->_frqFile = null;
-        }
-        if ($this->_prxFile !== null) {
-            $this->_prxFile = null;
-        }
-        $this->_docMap = array();
-
-        $this->_lastTerm          = new Zend_Search_Lucene_Index_Term('', -1);
-        $this->_lastTermInfo      = new Zend_Search_Lucene_Index_TermInfo(0, 0, 0, 0);
-        $this->_lastTermPositions = null;
-
-        $this->_termsScanMode = $mode;
-
-        switch ($mode) {
-            case self::SM_TERMS_ONLY:
-                // Do nothing
-                break;
-
-            case self::SM_FULL_INFO:
-                // break intentionally omitted
-            case self::SM_MERGE_INFO:
-                $this->_frqFile = $this->openCompoundFile('.frq', false);
-                $this->_frqFileOffset = $this->_frqFile->tell();
-
-                $this->_prxFile = $this->openCompoundFile('.prx', false);
-                $this->_prxFileOffset = $this->_prxFile->tell();
-
-                for ($count = 0; $count < $this->_docCount; $count++) {
-                    if (!$this->isDeleted($count)) {
-                        $this->_docMap[$count] = $startId + (($mode == self::SM_MERGE_INFO) ? count($this->_docMap) : $count);
-                    }
-                }
-                break;
-
-            default:
-                throw new Zend_Search_Lucene_Exception('Wrong terms scaning mode specified.');
-                break;
-        }
-
-
-        $this->nextTerm();
-        return $startId + (($mode == self::SM_MERGE_INFO) ? count($this->_docMap) : $this->_docCount);
-    }
-
-
-    /**
-     * Skip terms stream up to specified term preffix.
-     *
-     * Prefix contains fully specified field info and portion of searched term
-     *
-     * @param Zend_Search_Lucene_Index_Term $prefix
-     * @throws Zend_Search_Lucene_Exception
-     */
-    public function skipTo(Zend_Search_Lucene_Index_Term $prefix)
-    {
-        if ($this->_termDictionary === null) {
-            $this->_loadDictionaryIndex();
-        }
-
-        $searchField = $this->getFieldNum($prefix->field);
-
-        if ($searchField == -1) {
-            /**
-             * Field is not presented in this segment
-             * Go to the end of dictionary
-             */
-            $this->_tisFile = null;
-            $this->_frqFile = null;
-            $this->_prxFile = null;
-
-            $this->_lastTerm          = null;
-            $this->_lastTermInfo      = null;
-            $this->_lastTermPositions = null;
-
-            return;
-        }
-        $searchDicField = $this->_getFieldPosition($searchField);
-
-        // search for appropriate value in dictionary
-        $lowIndex = 0;
-        $highIndex = count($this->_termDictionary)-1;
-        while ($highIndex >= $lowIndex) {
-            // $mid = ($highIndex - $lowIndex)/2;
-            $mid = ($highIndex + $lowIndex) >> 1;
-            $midTerm = $this->_termDictionary[$mid];
-
-            $fieldNum = $this->_getFieldPosition($midTerm[0] /* field */);
-            $delta = $searchDicField - $fieldNum;
-            if ($delta == 0) {
-                $delta = strcmp($prefix->text, $midTerm[1] /* text */);
-            }
-
-            if ($delta < 0) {
-                $highIndex = $mid-1;
-            } elseif ($delta > 0) {
-                $lowIndex  = $mid+1;
-            } else {
-                // We have reached term we are looking for
-                break;
-            }
-        }
-
-        if ($highIndex == -1) {
-            // Term is out of the dictionary range
-            $this->_tisFile = null;
-            $this->_frqFile = null;
-            $this->_prxFile = null;
-
-            $this->_lastTerm          = null;
-            $this->_lastTermInfo      = null;
-            $this->_lastTermPositions = null;
-
-            return;
-        }
-
-        $prevPosition = $highIndex;
-        $prevTerm = $this->_termDictionary[$prevPosition];
-        $prevTermInfo = $this->_termDictionaryInfos[$prevPosition];
-
-        if ($this->_tisFile === null) {
-            // The end of terms stream is reached and terms dictionary file is closed
-            // Perform mini-reset operation
-            $this->_tisFile = $this->openCompoundFile('.tis', false);
-
-            if ($this->_termsScanMode == self::SM_FULL_INFO  ||  $this->_termsScanMode == self::SM_MERGE_INFO) {
-                $this->_frqFile = $this->openCompoundFile('.frq', false);
-                $this->_prxFile = $this->openCompoundFile('.prx', false);
-            }
-        }
-        $this->_tisFile->seek($this->_tisFileOffset + $prevTermInfo[4], SEEK_SET);
-
-        $this->_lastTerm     = new Zend_Search_Lucene_Index_Term($prevTerm[1] /* text */,
-                                                                 ($prevTerm[0] == -1) ? '' : $this->_fields[$prevTerm[0] /* field */]->name);
-        $this->_lastTermInfo = new Zend_Search_Lucene_Index_TermInfo($prevTermInfo[0] /* docFreq */,
-                                                                     $prevTermInfo[1] /* freqPointer */,
-                                                                     $prevTermInfo[2] /* proxPointer */,
-                                                                     $prevTermInfo[3] /* skipOffset */);
-        $this->_termCount  =  $this->_termNum - $prevPosition*$this->_indexInterval;
-
-        if ($highIndex == 0) {
-            // skip start entry
-            $this->nextTerm();
-        } else if ($prefix->field == $this->_lastTerm->field  &&  $prefix->text  == $this->_lastTerm->text) {
-            // We got exact match in the dictionary index
-
-            if ($this->_termsScanMode == self::SM_FULL_INFO  ||  $this->_termsScanMode == self::SM_MERGE_INFO) {
-                $this->_lastTermPositions = array();
-
-                $this->_frqFile->seek($this->_lastTermInfo->freqPointer + $this->_frqFileOffset, SEEK_SET);
-                $freqs = array();   $docId = 0;
-                for( $count = 0; $count < $this->_lastTermInfo->docFreq; $count++ ) {
-                    $docDelta = $this->_frqFile->readVInt();
-                    if( $docDelta % 2 == 1 ) {
-                        $docId += ($docDelta-1)/2;
-                        $freqs[ $docId ] = 1;
-                    } else {
-                        $docId += $docDelta/2;
-                        $freqs[ $docId ] = $this->_frqFile->readVInt();
-                    }
-                }
-
-                $this->_prxFile->seek($this->_lastTermInfo->proxPointer + $this->_prxFileOffset, SEEK_SET);
-                foreach ($freqs as $docId => $freq) {
-                    $termPosition = 0;  $positions = array();
-
-                    for ($count = 0; $count < $freq; $count++ ) {
-                        $termPosition += $this->_prxFile->readVInt();
-                        $positions[] = $termPosition;
-                    }
-
-                    if (isset($this->_docMap[$docId])) {
-                        $this->_lastTermPositions[$this->_docMap[$docId]] = $positions;
-                    }
-                }
-            }
-
-            return;
-        }
-
-        // Search term matching specified prefix
-        while ($this->_lastTerm !== null) {
-            if ( strcmp($this->_lastTerm->field, $prefix->field) > 0  ||
-                 ($prefix->field == $this->_lastTerm->field  &&  strcmp($this->_lastTerm->text, $prefix->text) >= 0) ) {
-                    // Current term matches or greate than the pattern
-                    return;
-            }
-
-            $this->nextTerm();
-        }
-    }
-
-
-    /**
-     * Scans terms dictionary and returns next term
-     *
-     * @return Zend_Search_Lucene_Index_Term|null
-     */
-    public function nextTerm()
-    {
-        if ($this->_tisFile === null  ||  $this->_termCount == 0) {
-            $this->_lastTerm          = null;
-            $this->_lastTermInfo      = null;
-            $this->_lastTermPositions = null;
-            $this->_docMap            = null;
-
-            // may be necessary for "empty" segment
-            $this->_tisFile = null;
-            $this->_frqFile = null;
-            $this->_prxFile = null;
-
-            return null;
-        }
-
-        $termPrefixLength = $this->_tisFile->readVInt();
-        $termSuffix       = $this->_tisFile->readString();
-        $termFieldNum     = $this->_tisFile->readVInt();
-        $termValue        = Zend_Search_Lucene_Index_Term::getPrefix($this->_lastTerm->text, $termPrefixLength) . $termSuffix;
-
-        $this->_lastTerm = new Zend_Search_Lucene_Index_Term($termValue, $this->_fields[$termFieldNum]->name);
-
-        $docFreq     = $this->_tisFile->readVInt();
-        $freqPointer = $this->_lastTermInfo->freqPointer + $this->_tisFile->readVInt();
-        $proxPointer = $this->_lastTermInfo->proxPointer + $this->_tisFile->readVInt();
-        if ($docFreq >= $this->_skipInterval) {
-            $skipOffset = $this->_tisFile->readVInt();
-        } else {
-            $skipOffset = 0;
-        }
-
-        $this->_lastTermInfo = new Zend_Search_Lucene_Index_TermInfo($docFreq, $freqPointer, $proxPointer, $skipOffset);
-
-
-        if ($this->_termsScanMode == self::SM_FULL_INFO  ||  $this->_termsScanMode == self::SM_MERGE_INFO) {
-            $this->_lastTermPositions = array();
-
-            $this->_frqFile->seek($this->_lastTermInfo->freqPointer + $this->_frqFileOffset, SEEK_SET);
-            $freqs = array();   $docId = 0;
-            for( $count = 0; $count < $this->_lastTermInfo->docFreq; $count++ ) {
-                $docDelta = $this->_frqFile->readVInt();
-                if( $docDelta % 2 == 1 ) {
-                    $docId += ($docDelta-1)/2;
-                    $freqs[ $docId ] = 1;
-                } else {
-                    $docId += $docDelta/2;
-                    $freqs[ $docId ] = $this->_frqFile->readVInt();
-                }
-            }
-
-            $this->_prxFile->seek($this->_lastTermInfo->proxPointer + $this->_prxFileOffset, SEEK_SET);
-            foreach ($freqs as $docId => $freq) {
-                $termPosition = 0;  $positions = array();
-
-                for ($count = 0; $count < $freq; $count++ ) {
-                    $termPosition += $this->_prxFile->readVInt();
-                    $positions[] = $termPosition;
-                }
-
-                if (isset($this->_docMap[$docId])) {
-                    $this->_lastTermPositions[$this->_docMap[$docId]] = $positions;
-                }
-            }
-        }
-
-        $this->_termCount--;
-        if ($this->_termCount == 0) {
-            $this->_tisFile = null;
-            $this->_frqFile = null;
-            $this->_prxFile = null;
-        }
-
-        return $this->_lastTerm;
-    }
-
-    /**
-     * Close terms stream
-     *
-     * Should be used for resources clean up if stream is not read up to the end
-     */
-    public function closeTermsStream()
-    {
-        $this->_tisFile = null;
-        $this->_frqFile = null;
-        $this->_prxFile = null;
-
-        $this->_lastTerm          = null;
-        $this->_lastTermInfo      = null;
-        $this->_lastTermPositions = null;
-
-        $this->_docMap            = null;
-    }
-
-
-    /**
-     * Returns term in current position
-     *
-     * @return Zend_Search_Lucene_Index_Term|null
-     */
-    public function currentTerm()
-    {
-        return $this->_lastTerm;
-    }
-
-
-    /**
-     * Returns an array of all term positions in the documents.
-     * Return array structure: array( docId => array( pos1, pos2, ...), ...)
-     *
-     * @return array
-     */
-    public function currentTermPositions()
-    {
-        return $this->_lastTermPositions;
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Index/SegmentInfoPriorityQueue.php b/search/Zend/Search/Lucene/Index/SegmentInfoPriorityQueue.php
deleted file mode 100644 (file)
index 233d798..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Index
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Exception */
-require_once 'Zend/Search/Lucene/Exception.php';
-
-/** Zend_Search_Lucene */
-require_once 'Zend/Search/Lucene/PriorityQueue.php';
-
-
-/**
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Index
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-class Zend_Search_Lucene_Index_SegmentInfoPriorityQueue extends Zend_Search_Lucene_PriorityQueue
-{
-    /**
-     * Compare elements
-     *
-     * Returns true, if $el1 is less than $el2; else otherwise
-     *
-     * @param mixed $segmentInfo1
-     * @param mixed $segmentInfo2
-     * @return boolean
-     */
-    protected function _less($segmentInfo1, $segmentInfo2)
-    {
-        return strcmp($segmentInfo1->currentTerm()->key(), $segmentInfo2->currentTerm()->key()) < 0;
-    }
-
-}
diff --git a/search/Zend/Search/Lucene/Index/SegmentMerger.php b/search/Zend/Search/Lucene/Index/SegmentMerger.php
deleted file mode 100644 (file)
index 97ce4bf..0000000
+++ /dev/null
@@ -1,273 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Index
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Exception */
-require_once 'Zend/Search/Lucene/Exception.php';
-
-/** Zend_Search_Lucene_Index_SegmentInfo */
-require_once 'Zend/Search/Lucene/Index/SegmentInfo.php';
-
-/** Zend_Search_Lucene_Index_SegmentWriter_StreamWriter */
-require_once 'Zend/Search/Lucene/Index/SegmentWriter/StreamWriter.php';
-
-/** Zend_Search_Lucene_Index_SegmentInfoPriorityQueue */
-require_once 'Zend/Search/Lucene/Index/SegmentInfoPriorityQueue.php';
-
-
-/**
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Index
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-class Zend_Search_Lucene_Index_SegmentMerger
-{
-    /**
-     * Target segment writer
-     *
-     * @var Zend_Search_Lucene_Index_SegmentWriter_StreamWriter
-     */
-    private $_writer;
-
-    /**
-     * Number of docs in a new segment
-     *
-     * @var integer
-     */
-    private $_docCount;
-
-    /**
-     * A set of segments to be merged
-     *
-     * @var array Zend_Search_Lucene_Index_SegmentInfo
-     */
-    private $_segmentInfos = array();
-
-    /**
-     * Flag to signal, that merge is already done
-     *
-     * @var boolean
-     */
-    private $_mergeDone = false;
-
-    /**
-     * Field map
-     * [<segment_name>][<field_number>] => <target_field_number>
-     *
-     * @var array
-     */
-    private $_fieldsMap = array();
-
-
-
-    /**
-     * Object constructor.
-     *
-     * Creates new segment merger with $directory as target to merge segments into
-     * and $name as a name of new segment
-     *
-     * @param Zend_Search_Lucene_Storage_Directory $directory
-     * @param string $name
-     */
-    public function __construct($directory, $name)
-    {
-        $this->_writer = new Zend_Search_Lucene_Index_SegmentWriter_StreamWriter($directory, $name);
-    }
-
-
-    /**
-     * Add segmnet to a collection of segments to be merged
-     *
-     * @param Zend_Search_Lucene_Index_SegmentInfo $segment
-     */
-    public function addSource(Zend_Search_Lucene_Index_SegmentInfo $segmentInfo)
-    {
-        $this->_segmentInfos[$segmentInfo->getName()] = $segmentInfo;
-    }
-
-
-    /**
-     * Do merge.
-     *
-     * Returns number of documents in newly created segment
-     *
-     * @return Zend_Search_Lucene_Index_SegmentInfo
-     * @throws Zend_Search_Lucene_Exception
-     */
-    public function merge()
-    {
-        if ($this->_mergeDone) {
-            throw new Zend_Search_Lucene_Exception('Merge is already done.');
-        }
-
-        if (count($this->_segmentInfos) < 1) {
-            throw new Zend_Search_Lucene_Exception('Wrong number of segments to be merged ('
-                                                 . count($this->_segmentInfos)
-                                                 . ').');
-        }
-
-        $this->_mergeFields();
-        $this->_mergeNorms();
-        $this->_mergeStoredFields();
-        $this->_mergeTerms();
-
-        $this->_mergeDone = true;
-
-        return $this->_writer->close();
-    }
-
-
-    /**
-     * Merge fields information
-     */
-    private function _mergeFields()
-    {
-        foreach ($this->_segmentInfos as $segName => $segmentInfo) {
-            foreach ($segmentInfo->getFieldInfos() as $fieldInfo) {
-                $this->_fieldsMap[$segName][$fieldInfo->number] = $this->_writer->addFieldInfo($fieldInfo);
-            }
-        }
-    }
-
-    /**
-     * Merge field's normalization factors
-     */
-    private function _mergeNorms()
-    {
-        foreach ($this->_writer->getFieldInfos() as $fieldInfo) {
-            if ($fieldInfo->isIndexed) {
-                foreach ($this->_segmentInfos as $segName => $segmentInfo) {
-                    if ($segmentInfo->hasDeletions()) {
-                        $srcNorm = $segmentInfo->normVector($fieldInfo->name);
-                        $norm    = '';
-                        $docs    = $segmentInfo->count();
-                        for ($count = 0; $count < $docs; $count++) {
-                            if (!$segmentInfo->isDeleted($count)) {
-                                $norm .= $srcNorm[$count];
-                            }
-                        }
-                        $this->_writer->addNorm($fieldInfo->name, $norm);
-                    } else {
-                        $this->_writer->addNorm($fieldInfo->name, $segmentInfo->normVector($fieldInfo->name));
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * 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);
-                }
-            }
-        }
-    }
-
-
-    /**
-     * Merge fields information
-     */
-    private function _mergeTerms()
-    {
-        $segmentInfoQueue = new Zend_Search_Lucene_Index_SegmentInfoPriorityQueue();
-
-        $segmentStartId = 0;
-        foreach ($this->_segmentInfos as $segName => $segmentInfo) {
-            $segmentStartId = $segmentInfo->reset($segmentStartId, Zend_Search_Lucene_Index_SegmentInfo::SM_MERGE_INFO);
-
-            // Skip "empty" segments
-            if ($segmentInfo->currentTerm() !== null) {
-                $segmentInfoQueue->put($segmentInfo);
-            }
-        }
-
-        $this->_writer->initializeDictionaryFiles();
-
-        $termDocs = array();
-        while (($segmentInfo = $segmentInfoQueue->pop()) !== null) {
-            // Merge positions array
-            $termDocs += $segmentInfo->currentTermPositions();
-
-            if ($segmentInfoQueue->top() === null ||
-                $segmentInfoQueue->top()->currentTerm()->key() !=
-                            $segmentInfo->currentTerm()->key()) {
-                // We got new term
-                ksort($termDocs, SORT_NUMERIC);
-
-                // Add term if it's contained in any document
-                if (count($termDocs) > 0) {
-                    $this->_writer->addTerm($segmentInfo->currentTerm(), $termDocs);
-                }
-                $termDocs = array();
-            }
-
-            $segmentInfo->nextTerm();
-            // check, if segment dictionary is finished
-            if ($segmentInfo->currentTerm() !== null) {
-                // Put segment back into the priority queue
-                $segmentInfoQueue->put($segmentInfo);
-            }
-        }
-
-        $this->_writer->closeDictionaryFiles();
-    }
-}
diff --git a/search/Zend/Search/Lucene/Index/SegmentWriter.php b/search/Zend/Search/Lucene/Index/SegmentWriter.php
deleted file mode 100644 (file)
index 21e9a04..0000000
+++ /dev/null
@@ -1,630 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Index
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Exception */
-require_once 'Zend/Search/Lucene/Exception.php';
-
-/** Zend_Search_Lucene_Index_SegmentInfo */
-require_once 'Zend/Search/Lucene/Index/SegmentInfo.php';
-
-
-/**
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Index
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-abstract class Zend_Search_Lucene_Index_SegmentWriter
-{
-    /**
-     * Expert: The fraction of terms in the "dictionary" which should be stored
-     * in RAM.  Smaller values use more memory, but make searching slightly
-     * faster, while larger values use less memory and make searching slightly
-     * slower.  Searching is typically not dominated by dictionary lookup, so
-     * tweaking this is rarely useful.
-     *
-     * @var integer
-     */
-    public static $indexInterval = 128;
-
-    /**
-     * Expert: The fraction of TermDocs entries stored in skip tables.
-     * Larger values result in smaller indexes, greater acceleration, but fewer
-     * accelerable cases, while smaller values result in bigger indexes,
-     * less acceleration and more
-     * accelerable cases. More detailed experiments would be useful here.
-     *
-     * 0x7FFFFFFF indicates that we don't use skip data
-     *
-     * Note: not used in current implementation
-     *
-     * @var integer
-     */
-    public static $skipInterval = 0x7FFFFFFF;
-
-    /**
-     * Expert: The maximum number of skip levels. Smaller values result in
-     * slightly smaller indexes, but slower skipping in big posting lists.
-     *
-     * 0 indicates that we don't use skip data
-     *
-     * Note: not used in current implementation
-     *
-     * @var integer
-     */
-    public static $maxSkipLevels = 0;
-
-    /**
-     * Number of docs in a segment
-     *
-     * @var integer
-     */
-    protected $_docCount = 0;
-
-    /**
-     * Segment name
-     *
-     * @var string
-     */
-    protected $_name;
-
-    /**
-     * File system adapter.
-     *
-     * @var Zend_Search_Lucene_Storage_Directory
-     */
-    protected $_directory;
-
-    /**
-     * List of the index files.
-     * Used for automatic compound file generation
-     *
-     * @var unknown_type
-     */
-    protected $_files = array();
-
-    /**
-     * Segment fields. Array of Zend_Search_Lucene_Index_FieldInfo objects for this segment
-     *
-     * @var array
-     */
-    protected $_fields = array();
-
-    /**
-     * Normalization factors.
-     * An array fieldName => normVector
-     * normVector is a binary string.
-     * Each byte corresponds to an indexed document in a segment and
-     * encodes normalization factor (float value, encoded by
-     * Zend_Search_Lucene_Search_Similarity::encodeNorm())
-     *
-     * @var array
-     */
-    protected $_norms = array();
-
-
-    /**
-     * '.fdx'  file - Stored Fields, the field index.
-     *
-     * @var Zend_Search_Lucene_Storage_File
-     */
-    protected $_fdxFile = null;
-
-    /**
-     * '.fdt'  file - Stored Fields, the field data.
-     *
-     * @var Zend_Search_Lucene_Storage_File
-     */
-    protected $_fdtFile = null;
-
-
-    /**
-     * Object constructor.
-     *
-     * @param Zend_Search_Lucene_Storage_Directory $directory
-     * @param string $name
-     */
-    public function __construct(Zend_Search_Lucene_Storage_Directory $directory, $name)
-    {
-        $this->_directory = $directory;
-        $this->_name      = $name;
-    }
-
-
-    /**
-     * Add field to the segment
-     *
-     * Returns actual field number
-     *
-     * @param Zend_Search_Lucene_Field $field
-     * @return integer
-     */
-    public function addField(Zend_Search_Lucene_Field $field)
-    {
-        if (!isset($this->_fields[$field->name])) {
-            $fieldNumber = count($this->_fields);
-            $this->_fields[$field->name] =
-                                new Zend_Search_Lucene_Index_FieldInfo($field->name,
-                                                                       $field->isIndexed,
-                                                                       $fieldNumber,
-                                                                       $field->storeTermVector);
-
-            return $fieldNumber;
-        } else {
-            $this->_fields[$field->name]->isIndexed       |= $field->isIndexed;
-            $this->_fields[$field->name]->storeTermVector |= $field->storeTermVector;
-
-            return $this->_fields[$field->name]->number;
-        }
-    }
-
-    /**
-     * Add fieldInfo to the segment
-     *
-     * Returns actual field number
-     *
-     * @param Zend_Search_Lucene_Index_FieldInfo $fieldInfo
-     * @return integer
-     */
-    public function addFieldInfo(Zend_Search_Lucene_Index_FieldInfo $fieldInfo)
-    {
-        if (!isset($this->_fields[$fieldInfo->name])) {
-            $fieldNumber = count($this->_fields);
-            $this->_fields[$fieldInfo->name] =
-                                new Zend_Search_Lucene_Index_FieldInfo($fieldInfo->name,
-                                                                       $fieldInfo->isIndexed,
-                                                                       $fieldNumber,
-                                                                       $fieldInfo->storeTermVector);
-
-            return $fieldNumber;
-        } else {
-            $this->_fields[$fieldInfo->name]->isIndexed       |= $fieldInfo->isIndexed;
-            $this->_fields[$fieldInfo->name]->storeTermVector |= $fieldInfo->storeTermVector;
-
-            return $this->_fields[$fieldInfo->name]->number;
-        }
-    }
-
-    /**
-     * Returns array of FieldInfo objects.
-     *
-     * @return array
-     */
-    public function getFieldInfos()
-    {
-        return $this->_fields;
-    }
-
-    /**
-     * Add stored fields information
-     *
-     * @param array $storedFields array of Zend_Search_Lucene_Field objects
-     */
-    public function addStoredFields($storedFields)
-    {
-        if (!isset($this->_fdxFile)) {
-            $this->_fdxFile = $this->_directory->createFile($this->_name . '.fdx');
-            $this->_fdtFile = $this->_directory->createFile($this->_name . '.fdt');
-
-            $this->_files[] = $this->_name . '.fdx';
-            $this->_files[] = $this->_name . '.fdt';
-        }
-
-        $this->_fdxFile->writeLong($this->_fdtFile->tell());
-        $this->_fdtFile->writeVInt(count($storedFields));
-        foreach ($storedFields as $field) {
-            $this->_fdtFile->writeVInt($this->_fields[$field->name]->number);
-            $fieldBits = ($field->isTokenized ? 0x01 : 0x00) |
-                         ($field->isBinary ?    0x02 : 0x00) |
-                         0x00; /* 0x04 - third bit, compressed (ZLIB) */
-            $this->_fdtFile->writeByte($fieldBits);
-            if ($field->isBinary) {
-                $this->_fdtFile->writeVInt(strlen($field->value));
-                $this->_fdtFile->writeBytes($field->value);
-            } else {
-                $this->_fdtFile->writeString($field->getUtf8Value());
-            }
-        }
-
-        $this->_docCount++;
-    }
-
-    /**
-     * Returns the total number of documents in this segment.
-     *
-     * @return integer
-     */
-    public function count()
-    {
-        return $this->_docCount;
-    }
-
-    /**
-     * Return segment name
-     *
-     * @return string
-     */
-    public function getName()
-    {
-        return $this->_name;
-    }
-    
-    /**
-     * Dump Field Info (.fnm) segment file
-     */
-    protected function _dumpFNM()
-    {
-        $fnmFile = $this->_directory->createFile($this->_name . '.fnm');
-        $fnmFile->writeVInt(count($this->_fields));
-
-        $nrmFile = $this->_directory->createFile($this->_name . '.nrm');
-        // Write header
-        $nrmFile->writeBytes('NRM');
-        // Write format specifier
-        $nrmFile->writeByte((int)0xFF);
-
-        foreach ($this->_fields as $field) {
-            $fnmFile->writeString($field->name);
-            $fnmFile->writeByte(($field->isIndexed       ? 0x01 : 0x00) |
-                                ($field->storeTermVector ? 0x02 : 0x00)
-// not supported yet            0x04 /* term positions are stored with the term vectors */ |
-// not supported yet            0x08 /* term offsets are stored with the term vectors */   |
-                               );
-
-            if ($field->isIndexed) {
-                // pre-2.1 index mode (not used now)
-                // $normFileName = $this->_name . '.f' . $field->number;
-                // $fFile = $this->_directory->createFile($normFileName);
-                // $fFile->writeBytes($this->_norms[$field->name]);
-                // $this->_files[] = $normFileName;
-
-                $nrmFile->writeBytes($this->_norms[$field->name]);
-            }
-        }
-
-        $this->_files[] = $this->_name . '.fnm';
-        $this->_files[] = $this->_name . '.nrm';
-    }
-
-
-
-    /**
-     * Term Dictionary file
-     *
-     * @var Zend_Search_Lucene_Storage_File
-     */
-    private $_tisFile = null;
-
-    /**
-     * Term Dictionary index file
-     *
-     * @var Zend_Search_Lucene_Storage_File
-     */
-    private $_tiiFile = null;
-
-    /**
-     * Frequencies file
-     *
-     * @var Zend_Search_Lucene_Storage_File
-     */
-    private $_frqFile = null;
-
-    /**
-     * Positions file
-     *
-     * @var Zend_Search_Lucene_Storage_File
-     */
-    private $_prxFile = null;
-
-    /**
-     * Number of written terms
-     *
-     * @var integer
-     */
-    private $_termCount;
-
-
-    /**
-     * Last saved term
-     *
-     * @var Zend_Search_Lucene_Index_Term
-     */
-    private $_prevTerm;
-
-    /**
-     * Last saved term info
-     *
-     * @var Zend_Search_Lucene_Index_TermInfo
-     */
-    private $_prevTermInfo;
-
-    /**
-     * Last saved index term
-     *
-     * @var Zend_Search_Lucene_Index_Term
-     */
-    private $_prevIndexTerm;
-
-    /**
-     * Last saved index term info
-     *
-     * @var Zend_Search_Lucene_Index_TermInfo
-     */
-    private $_prevIndexTermInfo;
-
-    /**
-     * Last term dictionary file position
-     *
-     * @var integer
-     */
-    private $_lastIndexPosition;
-
-    /**
-     * Create dicrionary, frequency and positions files and write necessary headers
-     */
-    public function initializeDictionaryFiles()
-    {
-        $this->_tisFile = $this->_directory->createFile($this->_name . '.tis');
-        $this->_tisFile->writeInt((int)0xFFFFFFFD);
-        $this->_tisFile->writeLong(0 /* dummy data for terms count */);
-        $this->_tisFile->writeInt(self::$indexInterval);
-        $this->_tisFile->writeInt(self::$skipInterval);
-        $this->_tisFile->writeInt(self::$maxSkipLevels);
-
-        $this->_tiiFile = $this->_directory->createFile($this->_name . '.tii');
-        $this->_tiiFile->writeInt((int)0xFFFFFFFD);
-        $this->_tiiFile->writeLong(0 /* dummy data for terms count */);
-        $this->_tiiFile->writeInt(self::$indexInterval);
-        $this->_tiiFile->writeInt(self::$skipInterval);
-        $this->_tiiFile->writeInt(self::$maxSkipLevels);
-
-        /** Dump dictionary header */
-        $this->_tiiFile->writeVInt(0);                    // preffix length
-        $this->_tiiFile->writeString('');                 // suffix
-        $this->_tiiFile->writeInt((int)0xFFFFFFFF);       // field number
-        $this->_tiiFile->writeByte((int)0x0F);
-        $this->_tiiFile->writeVInt(0);                    // DocFreq
-        $this->_tiiFile->writeVInt(0);                    // FreqDelta
-        $this->_tiiFile->writeVInt(0);                    // ProxDelta
-        $this->_tiiFile->writeVInt(24);                   // IndexDelta
-
-        $this->_frqFile = $this->_directory->createFile($this->_name . '.frq');
-        $this->_prxFile = $this->_directory->createFile($this->_name . '.prx');
-
-        $this->_files[] = $this->_name . '.tis';
-        $this->_files[] = $this->_name . '.tii';
-        $this->_files[] = $this->_name . '.frq';
-        $this->_files[] = $this->_name . '.prx';
-
-        $this->_prevTerm          = null;
-        $this->_prevTermInfo      = null;
-        $this->_prevIndexTerm     = null;
-        $this->_prevIndexTermInfo = null;
-        $this->_lastIndexPosition = 24;
-        $this->_termCount         = 0;
-
-    }
-
-    /**
-     * Add term
-     *
-     * Term positions is an array( docId => array(pos1, pos2, pos3, ...), ... )
-     *
-     * @param Zend_Search_Lucene_Index_Term $termEntry
-     * @param array $termDocs
-     */
-    public function addTerm($termEntry, $termDocs)
-    {
-        $freqPointer = $this->_frqFile->tell();
-        $proxPointer = $this->_prxFile->tell();
-
-        $prevDoc = 0;
-        foreach ($termDocs as $docId => $termPositions) {
-            $docDelta = ($docId - $prevDoc)*2;
-            $prevDoc = $docId;
-            if (count($termPositions) > 1) {
-                $this->_frqFile->writeVInt($docDelta);
-                $this->_frqFile->writeVInt(count($termPositions));
-            } else {
-                $this->_frqFile->writeVInt($docDelta + 1);
-            }
-
-            $prevPosition = 0;
-            foreach ($termPositions as $position) {
-                $this->_prxFile->writeVInt($position - $prevPosition);
-                $prevPosition = $position;
-            }
-        }
-
-        if (count($termDocs) >= self::$skipInterval) {
-            /**
-             * @todo Write Skip Data to a freq file.
-             * It's not used now, but make index more optimal
-             */
-            $skipOffset = $this->_frqFile->tell() - $freqPointer;
-        } else {
-            $skipOffset = 0;
-        }
-
-        $term = new Zend_Search_Lucene_Index_Term($termEntry->text,
-                                                  $this->_fields[$termEntry->field]->number);
-        $termInfo = new Zend_Search_Lucene_Index_TermInfo(count($termDocs),
-                                                          $freqPointer, $proxPointer, $skipOffset);
-
-        $this->_dumpTermDictEntry($this->_tisFile, $this->_prevTerm, $term, $this->_prevTermInfo, $termInfo);
-
-        if (($this->_termCount + 1) % self::$indexInterval == 0) {
-            $this->_dumpTermDictEntry($this->_tiiFile, $this->_prevIndexTerm, $term, $this->_prevIndexTermInfo, $termInfo);
-
-            $indexPosition = $this->_tisFile->tell();
-            $this->_tiiFile->writeVInt($indexPosition - $this->_lastIndexPosition);
-            $this->_lastIndexPosition = $indexPosition;
-
-        }
-        $this->_termCount++;
-    }
-
-    /**
-     * Close dictionary
-     */
-    public function closeDictionaryFiles()
-    {
-        $this->_tisFile->seek(4);
-        $this->_tisFile->writeLong($this->_termCount);
-
-        $this->_tiiFile->seek(4);
-        $this->_tiiFile->writeLong(ceil(($this->_termCount + 2)/self::$indexInterval));
-    }
-
-
-    /**
-     * Dump Term Dictionary segment file entry.
-     * Used to write entry to .tis or .tii files
-     *
-     * @param Zend_Search_Lucene_Storage_File $dicFile
-     * @param Zend_Search_Lucene_Index_Term $prevTerm
-     * @param Zend_Search_Lucene_Index_Term $term
-     * @param Zend_Search_Lucene_Index_TermInfo $prevTermInfo
-     * @param Zend_Search_Lucene_Index_TermInfo $termInfo
-     */
-    protected function _dumpTermDictEntry(Zend_Search_Lucene_Storage_File $dicFile,
-                                        &$prevTerm,     Zend_Search_Lucene_Index_Term     $term,
-                                        &$prevTermInfo, Zend_Search_Lucene_Index_TermInfo $termInfo)
-    {
-        if (isset($prevTerm) && $prevTerm->field == $term->field) {
-            $matchedBytes = 0;
-            $maxBytes = min(strlen($prevTerm->text), strlen($term->text));
-            while ($matchedBytes < $maxBytes  &&
-                   $prevTerm->text[$matchedBytes] == $term->text[$matchedBytes]) {
-                $matchedBytes++;
-            }
-
-            // Calculate actual matched UTF-8 pattern
-            $prefixBytes = 0;
-            $prefixChars = 0;
-            while ($prefixBytes < $matchedBytes) {
-                $charBytes = 1;
-                if ((ord($term->text[$prefixBytes]) & 0xC0) == 0xC0) {
-                    $charBytes++;
-                    if (ord($term->text[$prefixBytes]) & 0x20 ) {
-                        $charBytes++;
-                        if (ord($term->text[$prefixBytes]) & 0x10 ) {
-                            $charBytes++;
-                        }
-                    }
-                }
-
-                if ($prefixBytes + $charBytes > $matchedBytes) {
-                    // char crosses matched bytes boundary
-                    // skip char
-                    break;
-                }
-
-                $prefixChars++;
-                $prefixBytes += $charBytes;
-            }
-
-            // Write preffix length
-            $dicFile->writeVInt($prefixChars);
-            // Write suffix
-            $dicFile->writeString(substr($term->text, $prefixBytes));
-        } else {
-            // Write preffix length
-            $dicFile->writeVInt(0);
-            // Write suffix
-            $dicFile->writeString($term->text);
-        }
-        // Write field number
-        $dicFile->writeVInt($term->field);
-        // DocFreq (the count of documents which contain the term)
-        $dicFile->writeVInt($termInfo->docFreq);
-
-        $prevTerm = $term;
-
-        if (!isset($prevTermInfo)) {
-            // Write FreqDelta
-            $dicFile->writeVInt($termInfo->freqPointer);
-            // Write ProxDelta
-            $dicFile->writeVInt($termInfo->proxPointer);
-        } else {
-            // Write FreqDelta
-            $dicFile->writeVInt($termInfo->freqPointer - $prevTermInfo->freqPointer);
-            // Write ProxDelta
-            $dicFile->writeVInt($termInfo->proxPointer - $prevTermInfo->proxPointer);
-        }
-        // Write SkipOffset - it's not 0 when $termInfo->docFreq > self::$skipInterval
-        if ($termInfo->skipOffset != 0) {
-            $dicFile->writeVInt($termInfo->skipOffset);
-        }
-
-        $prevTermInfo = $termInfo;
-    }
-
-
-    /**
-     * Generate compound index file
-     */
-    protected function _generateCFS()
-    {
-        $cfsFile = $this->_directory->createFile($this->_name . '.cfs');
-        $cfsFile->writeVInt(count($this->_files));
-
-        $dataOffsetPointers = array();
-        foreach ($this->_files as $fileName) {
-            $dataOffsetPointers[$fileName] = $cfsFile->tell();
-            $cfsFile->writeLong(0); // write dummy data
-            $cfsFile->writeString($fileName);
-        }
-
-        foreach ($this->_files as $fileName) {
-            // Get actual data offset
-            $dataOffset = $cfsFile->tell();
-            // Seek to the data offset pointer
-            $cfsFile->seek($dataOffsetPointers[$fileName]);
-            // Write actual data offset value
-            $cfsFile->writeLong($dataOffset);
-            // Seek back to the end of file
-            $cfsFile->seek($dataOffset);
-
-            $dataFile = $this->_directory->getFileObject($fileName);
-
-            $byteCount = $this->_directory->fileLength($fileName);
-            while ($byteCount > 0) {
-                $data = $dataFile->readBytes(min($byteCount, 131072 /*128Kb*/));
-                $byteCount -= strlen($data);
-                $cfsFile->writeBytes($data);
-            }
-
-            $this->_directory->deleteFile($fileName);
-        }
-    }
-
-
-    /**
-     * Close segment, write it to disk and return segment info
-     *
-     * @return Zend_Search_Lucene_Index_SegmentInfo
-     */
-    abstract public function close();
-}
-
diff --git a/search/Zend/Search/Lucene/Index/SegmentWriter/DocumentWriter.php b/search/Zend/Search/Lucene/Index/SegmentWriter/DocumentWriter.php
deleted file mode 100644 (file)
index 56d2265..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Index
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Exception */
-require_once 'Zend/Search/Lucene/Exception.php';
-
-/** Zend_Search_Lucene_Analysis_Analyzer */
-require_once 'Zend/Search/Lucene/Analysis/Analyzer.php';
-
-/** Zend_Search_Lucene_Index_SegmentWriter */
-require_once 'Zend/Search/Lucene/Index/SegmentWriter.php';
-
-
-/**
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Index
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-class Zend_Search_Lucene_Index_SegmentWriter_DocumentWriter extends Zend_Search_Lucene_Index_SegmentWriter
-{
-    /**
-     * Term Dictionary
-     * Array of the Zend_Search_Lucene_Index_Term objects
-     * Corresponding Zend_Search_Lucene_Index_TermInfo object stored in the $_termDictionaryInfos
-     *
-     * @var array
-     */
-    protected $_termDictionary;
-
-    /**
-     * Documents, which contain the term
-     *
-     * @var array
-     */
-    protected $_termDocs;
-
-    /**
-     * Object constructor.
-     *
-     * @param Zend_Search_Lucene_Storage_Directory $directory
-     * @param string $name
-     */
-    public function __construct(Zend_Search_Lucene_Storage_Directory $directory, $name)
-    {
-        parent::__construct($directory, $name);
-
-        $this->_termDocs       = array();
-        $this->_termDictionary = array();
-    }
-
-
-    /**
-     * Adds a document to this segment.
-     *
-     * @param Zend_Search_Lucene_Document $document
-     * @throws Zend_Search_Lucene_Exception
-     */
-    public function addDocument(Zend_Search_Lucene_Document $document)
-    {
-        $storedFields = array();
-        $docNorms     = array();
-        $similarity   = Zend_Search_Lucene_Search_Similarity::getDefault();
-
-        foreach ($document->getFieldNames() as $fieldName) {
-            $field = $document->getField($fieldName);
-            $this->addField($field);
-
-            if ($field->storeTermVector) {
-                /**
-                 * @todo term vector storing support
-                 */
-                throw new Zend_Search_Lucene_Exception('Store term vector functionality is not supported yet.');
-            }
-
-            if ($field->isIndexed) {
-                if ($field->isTokenized) {
-                    $analyzer = Zend_Search_Lucene_Analysis_Analyzer::getDefault();
-                    $analyzer->setInput($field->value, $field->encoding);
-
-                    $position     = 0;
-                    $tokenCounter = 0;
-                    while (($token = $analyzer->nextToken()) !== null) {
-                        $tokenCounter++;
-
-                        $term = new Zend_Search_Lucene_Index_Term($token->getTermText(), $field->name);
-                        $termKey = $term->key();
-
-                        if (!isset($this->_termDictionary[$termKey])) {
-                            // New term
-                            $this->_termDictionary[$termKey] = $term;
-                            $this->_termDocs[$termKey] = array();
-                            $this->_termDocs[$termKey][$this->_docCount] = array();
-                        } else if (!isset($this->_termDocs[$termKey][$this->_docCount])) {
-                            // Existing term, but new term entry
-                            $this->_termDocs[$termKey][$this->_docCount] = array();
-                        }
-                        $position += $token->getPositionIncrement();
-                        $this->_termDocs[$termKey][$this->_docCount][] = $position;
-                    }
-
-                    $docNorms[$field->name] = chr($similarity->encodeNorm( $similarity->lengthNorm($field->name,
-                                                                                                   $tokenCounter)*
-                                                                           $document->boost*
-                                                                           $field->boost ));
-                } else {
-                    $term = new Zend_Search_Lucene_Index_Term($field->getUtf8Value(), $field->name);
-                    $termKey = $term->key();
-
-                    if (!isset($this->_termDictionary[$termKey])) {
-                        // New term
-                        $this->_termDictionary[$termKey] = $term;
-                        $this->_termDocs[$termKey] = array();
-                        $this->_termDocs[$termKey][$this->_docCount] = array();
-                    } else if (!isset($this->_termDocs[$termKey][$this->_docCount])) {
-                        // Existing term, but new term entry
-                        $this->_termDocs[$termKey][$this->_docCount] = array();
-                    }
-                    $this->_termDocs[$termKey][$this->_docCount][] = 0; // position
-
-                    $docNorms[$field->name] = chr($similarity->encodeNorm( $similarity->lengthNorm($field->name, 1)*
-                                                                           $document->boost*
-                                                                           $field->boost ));
-                }
-            }
-
-            if ($field->isStored) {
-                $storedFields[] = $field;
-            }
-        }
-
-
-        foreach ($this->_fields as $fieldName => $field) {
-            if (!$field->isIndexed) {
-                continue;
-            }
-
-            if (!isset($this->_norms[$fieldName])) {
-                $this->_norms[$fieldName] = str_repeat(chr($similarity->encodeNorm( $similarity->lengthNorm($fieldName, 0) )),
-                                                       $this->_docCount);
-            }
-
-            if (isset($docNorms[$fieldName])){
-                $this->_norms[$fieldName] .= $docNorms[$fieldName];
-            } else {
-                $this->_norms[$fieldName] .= chr($similarity->encodeNorm( $similarity->lengthNorm($fieldName, 0) ));
-            }
-        }
-
-        $this->addStoredFields($storedFields);
-    }
-
-
-    /**
-     * Dump Term Dictionary (.tis) and Term Dictionary Index (.tii) segment files
-     */
-    protected function _dumpDictionary()
-    {
-        ksort($this->_termDictionary, SORT_STRING);
-
-        $this->initializeDictionaryFiles();
-
-        foreach ($this->_termDictionary as $termId => $term) {
-            $this->addTerm($term, $this->_termDocs[$termId]);
-        }
-
-        $this->closeDictionaryFiles();
-    }
-
-
-    /**
-     * Close segment, write it to disk and return segment info
-     *
-     * @return Zend_Search_Lucene_Index_SegmentInfo
-     */
-    public function close()
-    {
-        if ($this->_docCount == 0) {
-            return null;
-        }
-
-        $this->_dumpFNM();
-        $this->_dumpDictionary();
-
-        $this->_generateCFS();
-
-        return new Zend_Search_Lucene_Index_SegmentInfo($this->_directory,
-                                                        $this->_name,
-                                                        $this->_docCount,
-                                                        -1,
-                                                        true,
-                                                        true);
-    }
-
-}
-
diff --git a/search/Zend/Search/Lucene/Index/SegmentWriter/StreamWriter.php b/search/Zend/Search/Lucene/Index/SegmentWriter/StreamWriter.php
deleted file mode 100644 (file)
index 318a3a3..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Index
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/** Zend_Search_Lucene_Exception */
-require_once 'Zend/Search/Lucene/Exception.php';
-
-/** Zend_Search_Lucene_Index_SegmentInfo */
-require_once 'Zend/Search/Lucene/Index/SegmentInfo.php';
-
-/** Zend_Search_Lucene_Index_SegmentWriter */
-require_once 'Zend/Search/Lucene/Index/SegmentWriter.php';
-
-
-/**
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Index
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-class Zend_Search_Lucene_Index_SegmentWriter_StreamWriter extends Zend_Search_Lucene_Index_SegmentWriter
-{
-    /**
-     * Object constructor.
-     *
-     * @param Zend_Search_Lucene_Storage_Directory $directory
-     * @param string $name
-     */
-    public function __construct(Zend_Search_Lucene_Storage_Directory $directory, $name)
-    {
-        parent::__construct($directory, $name);
-    }
-
-
-    /**
-     * Create stored fields files and open them for write
-     */
-    public function createStoredFieldsFiles()
-    {
-        $this->_fdxFile = $this->_directory->createFile($this->_name . '.fdx');
-        $this->_fdtFile = $this->_directory->createFile($this->_name . '.fdt');
-
-        $this->_files[] = $this->_name . '.fdx';
-        $this->_files[] = $this->_name . '.fdt';
-    }
-
-    public function addNorm($fieldName, $normVector)
-    {
-        if (isset($this->_norms[$fieldName])) {
-            $this->_norms[$fieldName] .= $normVector;
-        } else {
-            $this->_norms[$fieldName] = $normVector;
-        }
-    }
-
-    /**
-     * Close segment, write it to disk and return segment info
-     *
-     * @return Zend_Search_Lucene_Index_SegmentInfo
-     */
-    public function close()
-    {
-        if ($this->_docCount == 0) {
-            return null;
-        }
-
-        $this->_dumpFNM();
-        $this->_generateCFS();
-
-        return new Zend_Search_Lucene_Index_SegmentInfo($this->_directory,
-                                                        $this->_name,
-                                                        $this->_docCount,
-                                                        -1,
-                                                        true,
-                                                        true);
-    }
-}
-
diff --git a/search/Zend/Search/Lucene/Index/Term.php b/search/Zend/Search/Lucene/Index/Term.php
deleted file mode 100644 (file)
index 1a5ac62..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-<?php
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Index
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-
-
-/**
- * A Term represents a word from text.  This is the unit of search.  It is
- * composed of two elements, the text of the word, as a string, and the name of
- * the field that the text occured in, an interned string.
- *
- * Note that terms may represent more than words from text fields, but also
- * things like dates, email addresses, urls, etc.
- *
- * @category   Zend
- * @package    Zend_Search_Lucene
- * @subpackage Index
- * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
- * @license    http://framework.zend.com/license/new-bsd     New BSD License
- */
-class Zend_Search_Lucene_Index_Term
-{
-    /**
-     * Field name or field number (depending from context)
-     *
-     * @var mixed