Initial commit
[moodle.git] / search / Zend / Search / Lucene / Search / Weight / 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) 2006 Zend Technologies USA Inc. (http://www.zend.com)
19  * @license    http://framework.zend.com/license/new-bsd     New BSD License
20  */
23 /**
24  * Zend_Search_Lucene_Search_Weight
25  */
26 require_once 'Zend/Search/Lucene/Search/Weight.php';
29 /**
30  * @category   Zend
31  * @package    Zend_Search_Lucene
32  * @subpackage Search
33  * @copyright  Copyright (c) 2006 Zend Technologies USA Inc. (http://www.zend.com)
34  * @license    http://framework.zend.com/license/new-bsd     New BSD License
35  */
36 class Zend_Search_Lucene_Search_Weight_Phrase extends Zend_Search_Lucene_Search_Weight
37 {
38     /**
39      * IndexReader.
40      *
41      * @var Zend_Search_Lucene
42      */
43     private $_reader;
45     /**
46      * The query that this concerns.
47      *
48      * @var Zend_Search_Lucene_Search_Query_Phrase
49      */
50     private $_query;
52     /**
53      * Weight value
54      *
55      * @var float
56      */
57     private $_value;
59     /**
60      * Score factor
61      *
62      * @var float
63      */
64     private $_idf;
66     /**
67      * Normalization factor
68      *
69      * @var float
70      */
71     private $_queryNorm;
74     /**
75      * Query weight
76      *
77      * @var float
78      */
79     private $_queryWeight;
82     /**
83      * Zend_Search_Lucene_Search_Weight_Phrase constructor
84      *
85      * @param Zend_Search_Lucene_Search_Query_Phrase $query
86      * @param Zend_Search_Lucene $reader
87      */
88     public function __construct(Zend_Search_Lucene_Search_Query_Phrase $query, Zend_Search_Lucene $reader)
89     {
90         $this->_query  = $query;
91         $this->_reader = $reader;
92     }
95     /**
96      * The weight for this query
97      *
98      * @return float
99      */
100     public function getValue()
101     {
102         return $this->_value;
103     }
106     /**
107      * The sum of squared weights of contained query clauses.
108      *
109      * @return float
110      */
111     public function sumOfSquaredWeights()
112     {
113         // compute idf
114         $this->_idf = $this->_reader->getSimilarity()->idf($this->_query->getTerms(), $this->_reader);
116         // compute query weight
117         $this->_queryWeight = $this->_idf * $this->_query->getBoost();
119         // square it
120         return $this->_queryWeight * $this->_queryWeight;
121     }
124     /**
125      * Assigns the query normalization factor to this.
126      *
127      * @param float $queryNorm
128      */
129     public function normalize($queryNorm)
130     {
131         $this->_queryNorm = $queryNorm;
133         // normalize query weight
134         $this->_queryWeight *= $queryNorm;
136         // idf for documents
137         $this->_value = $this->_queryWeight * $this->_idf;
138     }