diff options
Diffstat (limited to 'buildscripts/texbuilder/Zend/Search/Lucene/Search/QueryParser.php')
-rw-r--r-- | buildscripts/texbuilder/Zend/Search/Lucene/Search/QueryParser.php | 140 |
1 files changed, 0 insertions, 140 deletions
diff --git a/buildscripts/texbuilder/Zend/Search/Lucene/Search/QueryParser.php b/buildscripts/texbuilder/Zend/Search/Lucene/Search/QueryParser.php deleted file mode 100644 index 9387afca..00000000 --- a/buildscripts/texbuilder/Zend/Search/Lucene/Search/QueryParser.php +++ /dev/null @@ -1,140 +0,0 @@ -<?php -/** - * Zend Framework - * - * LICENSE - * - * This source file is subject to version 1.0 of the Zend Framework - * license, that is bundled with this package in the file LICENSE, and - * is available through the world-wide-web at the following URL: - * http://www.zend.com/license/framework/1_0.txt. If you did not receive - * a copy of the Zend Framework license and are unable to obtain it - * through the world-wide-web, please send a note to license@zend.com - * so we can mail you a copy immediately. - * - * @package Zend_Search_Lucene - * @subpackage Search - * @copyright Copyright (c) 2005-2006 Zend Technologies USA Inc. (http://www.zend.com) - * @license http://www.zend.com/license/framework/1_0.txt Zend Framework License version 1.0 - */ - - -/** Zend_Search_Lucene_Search_QueryTokenizer */ -require_once 'Zend/Search/Lucene/Search/QueryTokenizer.php'; - -/** Zend_Search_Lucene_Index_Term */ -require_once 'Zend/Search/Lucene/Index/Term.php'; - -/** Zend_Search_Lucene_Search_Query_Term */ -require_once 'Zend/Search/Lucene/Search/Query/Term.php'; - -/** Zend_Search_Lucene_Search_Query_MultiTerm */ -require_once 'Zend/Search/Lucene/Search/Query/MultiTerm.php'; - -/** Zend_Search_Lucene_Search_Query_Phrase */ -require_once 'Zend/Search/Lucene/Search/Query/Phrase.php'; - - -/** Zend_Search_Lucene_Exception */ -require_once 'Zend/Search/Lucene/Exception.php'; - - -/** - * @package Zend_Search_Lucene - * @subpackage Search - * @copyright Copyright (c) 2005-2006 Zend Technologies USA Inc. (http://www.zend.com) - * @license http://www.zend.com/license/framework/1_0.txt Zend Framework License version 1.0 - */ -class Zend_Search_Lucene_Search_QueryParser -{ - - /** - * Parses a query string, returning a Zend_Search_Lucene_Search_Query - * - * @param string $strQuery - * @return Zend_Search_Lucene_Search_Query - */ - static public function parse($strQuery) - { - $tokens = new Zend_Search_Lucene_Search_QueryTokenizer($strQuery); - - // Empty query - if (!$tokens->count()) { - throw new Zend_Search_Lucene_Exception('Syntax error: query string cannot be empty.'); - } - - // Term query - if ($tokens->count() == 1) { - if ($tokens->current()->type == Zend_Search_Lucene_Search_QueryToken::TOKTYPE_WORD) { - return new Zend_Search_Lucene_Search_Query_Term(new Zend_Search_Lucene_Index_Term($tokens->current()->text, 'contents')); - } else { - throw new Zend_Search_Lucene_Exception('Syntax error: query string must contain at least one word.'); - } - } - - - /** - * MultiTerm Query - * - * Process each token that was returned by the tokenizer. - */ - $terms = array(); - $signs = array(); - $prevToken = null; - $openBrackets = 0; - $field = 'contents'; - foreach ($tokens as $token) { - switch ($token->type) { - case Zend_Search_Lucene_Search_QueryToken::TOKTYPE_WORD: - $terms[] = new Zend_Search_Lucene_Index_Term($token->text, $field); - $field = 'contents'; - if ($prevToken !== null && - $prevToken->type == Zend_Search_Lucene_Search_QueryToken::TOKTYPE_SIGN) { - if ($prevToken->text == "+") { - $signs[] = true; - } else { - $signs[] = false; - } - } else { - $signs[] = null; - } - break; - case Zend_Search_Lucene_Search_QueryToken::TOKTYPE_SIGN: - if ($prevToken !== null && - $prevToken->type == Zend_Search_Lucene_Search_QueryToken::TOKTYPE_SIGN) { - throw new Zend_Search_Lucene_Exception('Syntax error: sign operator must be followed by a word.'); - } - break; - case Zend_Search_Lucene_Search_QueryToken::TOKTYPE_FIELD: - $field = $token->text; - // let previous token to be signed as next $prevToken - $token = $prevToken; - break; - case Zend_Search_Lucene_Search_QueryToken::TOKTYPE_BRACKET: - $token->text=='(' ? $openBrackets++ : $openBrackets--; - } - $prevToken = $token; - } - - // Finish up parsing: check the last token in the query for an opening sign or parenthesis. - if ($prevToken->type == Zend_Search_Lucene_Search_QueryToken::TOKTYPE_SIGN) { - throw new Zend_Search_Lucene_Exception('Syntax Error: sign operator must be followed by a word.'); - } - - // Finish up parsing: check that every opening bracket has a matching closing bracket. - if ($openBrackets != 0) { - throw new Zend_Search_Lucene_Exception('Syntax Error: mismatched parentheses, every opening must have closing.'); - } - - switch (count($terms)) { - case 0: - throw new Zend_Search_Lucene_Exception('Syntax error: bad term count.'); - case 1: - return new Zend_Search_Lucene_Search_Query_Term($terms[0],$signs[0] !== false); - default: - return new Zend_Search_Lucene_Search_Query_MultiTerm($terms,$signs); - } - } - -} - |