⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 querytokenizer.php

📁 很棒的在线教学系统
💻 PHP
字号:
<?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 Search * @copyright  Copyright (c) 2006 Zend Technologies USA Inc. (http://www.zend.com) * @license    http://framework.zend.com/license/new-bsd     New BSD License *//** Zend_Search_Lucene_Search_QueryToken */require_once $CFG->dirroot.'/search/Zend/Search/Lucene/Search/QueryToken.php';/** Zend_Search_Lucene_Exception */require_once $CFG->dirroot.'/search/Zend/Search/Lucene/Exception.php';/** * @category   Zend * @package    Zend_Search_Lucene * @subpackage Search * @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_Search_Lucene_Search_QueryTokenizer implements Iterator{    /**     * inputString tokens.     *     * @var array     */    protected $_tokens = array();    /**     * tokens pointer.     *     * @var integer     */    protected $_currToken = 0;    /**     * QueryTokenize constructor needs query string as a parameter.     *     * @param string $inputString     */    public function __construct($inputString)    {        if (!strlen($inputString)) {            throw new Zend_Search_Lucene_Exception('Cannot tokenize empty query string.');        }        $currentToken = '';        for ($count = 0; $count < strlen($inputString); $count++) {            if (ctype_alnum( $inputString{$count} ) ||                $inputString{$count} == '_') {                $currentToken .= $inputString{$count};            } else if ($inputString{$count} == '\\') { // Escaped character                $count++;                if ($count == strlen($inputString)) {                    throw new Zend_Search_Lucene_Exception('Non finished escape sequence.');                }                $currentToken .= $inputString{$count};            } else {                // Previous token is finished                if (strlen($currentToken)) {                    $this->_tokens[] = new Zend_Search_Lucene_Search_QueryToken(Zend_Search_Lucene_Search_QueryToken::TOKTYPE_WORD,                                                                $currentToken);                    $currentToken = '';                }                if ($inputString{$count} == '+' || $inputString{$count} == '-') {                    $this->_tokens[] = new Zend_Search_Lucene_Search_QueryToken(Zend_Search_Lucene_Search_QueryToken::TOKTYPE_SIGN,                                                                $inputString{$count});                } elseif ($inputString{$count} == '(' || $inputString{$count} == ')') {                    $this->_tokens[] = new Zend_Search_Lucene_Search_QueryToken(Zend_Search_Lucene_Search_QueryToken::TOKTYPE_BRACKET,                                                                $inputString{$count});                } elseif ($inputString{$count} == ':' && $this->count()) {                    if ($this->_tokens[count($this->_tokens)-1]->type == Zend_Search_Lucene_Search_QueryToken::TOKTYPE_WORD) {                        $this->_tokens[count($this->_tokens)-1]->type = Zend_Search_Lucene_Search_QueryToken::TOKTYPE_FIELD;                    }                }            }        }        if (strlen($currentToken)) {            $this->_tokens[] = new Zend_Search_Lucene_Search_QueryToken(Zend_Search_Lucene_Search_QueryToken::TOKTYPE_WORD, $currentToken);        }    }    /**     * Returns number of tokens     *     * @return integer     */    public function count()    {        return count($this->_tokens);    }    /**     * Returns TRUE if a token exists at the current position.     *     * @return boolean     */    public function valid()    {        return $this->_currToken < $this->count();    }    /**     * Resets token stream.     *     * @return integer     */    public function rewind()    {        $this->_currToken = 0;    }    /**     * Returns the token at the current position or FALSE if     * the position does not contain a valid token.     *     * @return mixed     */    public function current()    {        return $this->valid() ? $this->_tokens[$this->_currToken] : false;    }    /**     * Returns next token     *     * @return Zend_Search_Lucene_Search_QueryToken     */    public function next()    {        return ++$this->_currToken;    }    /**     * Return the position of the current token.     *     * @return integer     */    public function key()    {        return $this->_currToken;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -