final move of files
[web.mtrack] / Zend / Search / Lucene / Search / QueryEntry / Phrase.php
1 <?php
2 /**
3  * Zend Framework
4  *
5  * LICENSE
6  *
7  * This source file is subject to the new BSD license that is bundled
8  * with this package in the file LICENSE.txt.
9  * It is also available through the world-wide-web at this URL:
10  * http://framework.zend.com/license/new-bsd
11  * If you did not receive a copy of the license and are unable to
12  * obtain it through the world-wide-web, please send an email
13  * to license@zend.com so we can send you a copy immediately.
14  *
15  * @category   Zend
16  * @package    Zend_Search_Lucene
17  * @subpackage Search
18  * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
19  * @license    http://framework.zend.com/license/new-bsd     New BSD License
20  * @version    $Id: Phrase.php 16971 2009-07-22 18:05:45Z mikaelkael $
21  */
22
23 /** Zend_Search_Lucene_Index_Term */
24 require_once 'Zend/Search/Lucene/Index/Term.php';
25
26 /** Zend_Search_Lucene_Search_QueryEntry */
27 require_once 'Zend/Search/Lucene/Search/QueryEntry.php';
28
29 /** Zend_Search_Lucene_Analysis_Analyzer */
30 require_once 'Zend/Search/Lucene/Analysis/Analyzer.php';
31
32 /**
33  * @category   Zend
34  * @package    Zend_Search_Lucene
35  * @subpackage Search
36  * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
37  * @license    http://framework.zend.com/license/new-bsd     New BSD License
38  */
39 class Zend_Search_Lucene_Search_QueryEntry_Phrase extends Zend_Search_Lucene_Search_QueryEntry
40 {
41     /**
42      * Phrase value
43      *
44      * @var string
45      */
46     private $_phrase;
47
48     /**
49      * Field
50      *
51      * @var string|null
52      */
53     private $_field;
54
55
56     /**
57      * Proximity phrase query
58      *
59      * @var boolean
60      */
61     private $_proximityQuery = false;
62
63     /**
64      * Words distance, used for proximiti queries
65      *
66      * @var integer
67      */
68     private $_wordsDistance = 0;
69
70
71     /**
72      * Object constractor
73      *
74      * @param string $phrase
75      * @param string $field
76      */
77     public function __construct($phrase, $field)
78     {
79         $this->_phrase = $phrase;
80         $this->_field  = $field;
81     }
82
83     /**
84      * Process modifier ('~')
85      *
86      * @param mixed $parameter
87      */
88     public function processFuzzyProximityModifier($parameter = null)
89     {
90         $this->_proximityQuery = true;
91
92         if ($parameter !== null) {
93             $this->_wordsDistance = $parameter;
94         }
95     }
96
97     /**
98      * Transform entry to a subquery
99      *
100      * @param string $encoding
101      * @return Zend_Search_Lucene_Search_Query
102      * @throws Zend_Search_Lucene_Search_QueryParserException
103      */
104     public function getQuery($encoding)
105     {
106         $query = new Zend_Search_Lucene_Search_Query_Preprocessing_Phrase($this->_phrase,
107                                                                           $encoding,
108                                                                           ($this->_field !== null)?
109                                                                               iconv($encoding, 'UTF-8', $this->_field) :
110                                                                               null);
111
112         if ($this->_proximityQuery) {
113             $query->setSlop($this->_wordsDistance);
114         }
115
116         $query->setBoost($this->_boost);
117
118         return $query;
119     }
120 }