Initial commit
[moodle.git] / search / Zend / Search / Lucene / Search / Weight / Term.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 /** Zend_Search_Lucene_Search_Weight */
24 require_once 'Zend/Search/Lucene/Search/Weight.php';
27 /**
28  * @category   Zend
29  * @package    Zend_Search_Lucene
30  * @subpackage Search
31  * @copyright  Copyright (c) 2006 Zend Technologies USA Inc. (http://www.zend.com)
32  * @license    http://framework.zend.com/license/new-bsd     New BSD License
33  */
34 class Zend_Search_Lucene_Search_Weight_Term extends Zend_Search_Lucene_Search_Weight
35 {
36     /**
37      * IndexReader.
38      *
39      * @var Zend_Search_Lucene
40      */
41     private $_reader;
43     /**
44      * Term
45      *
46      * @var Zend_Search_Lucene_Index_Term
47      */
48     private $_term;
50     /**
51      * The query that this concerns.
52      *
53      * @var Zend_Search_Lucene_Search_Query
54      */
55     private $_query;
57     /**
58      * Weight value
59      *
60      * @var float
61      */
62     private $_value;
64     /**
65      * Score factor
66      *
67      * @var float
68      */
69     private $_idf;
71     /**
72      * Normalization factor
73      *
74      * @var float
75      */
76     private $_queryNorm;
79     /**
80      * Query weight
81      *
82      * @var float
83      */
84     private $_queryWeight;
87     /**
88      * Zend_Search_Lucene_Search_Weight_Term constructor
89      * reader - index reader
90      *
91      * @param Zend_Search_Lucene $reader
92      */
93     public function __construct($term, $query, $reader)
94     {
95         $this->_term   = $term;
96         $this->_query  = $query;
97         $this->_reader = $reader;
98     }
101     /**
102      * The weight for this query
103      *
104      * @return float
105      */
106     public function getValue()
107     {
108         return $this->_value;
109     }
112     /**
113      * The sum of squared weights of contained query clauses.
114      *
115      * @return float
116      */
117     public function sumOfSquaredWeights()
118     {
119         // compute idf
120         $this->_idf = $this->_reader->getSimilarity()->idf($this->_term, $this->_reader);
122         // compute query weight
123         $this->_queryWeight = $this->_idf * $this->_query->getBoost();
125         // square it
126         return $this->_queryWeight * $this->_queryWeight;
127     }
130     /**
131      * Assigns the query normalization factor to this.
132      *
133      * @param float $queryNorm
134      */
135     public function normalize($queryNorm)
136     {
137         $this->_queryNorm = $queryNorm;
139         // normalize query weight
140         $this->_queryWeight *= $queryNorm;
142         // idf for documents
143         $this->_value = $this->_queryWeight * $this->_idf;
144     }