Initial commit
[moodle.git] / search / Zend / Search / Lucene / Search / Query.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  * @category   Zend
25  * @package    Zend_Search_Lucene
26  * @subpackage Search
27  * @copyright  Copyright (c) 2006 Zend Technologies USA Inc. (http://www.zend.com)
28  * @license    http://framework.zend.com/license/new-bsd     New BSD License
29  */
30 abstract class Zend_Search_Lucene_Search_Query
31 {
33     /**
34      * query boost factor
35      *
36      * @var float
37      */
38     private $_boost = 1.0;
40     /**
41      * Query weight
42      *
43      * @var Zend_Search_Lucene_Search_Weight
44      */
45     protected $_weight;
48     /**
49      * Gets the boost for this clause.  Documents matching
50      * this clause will (in addition to the normal weightings) have their score
51      * multiplied by boost.   The boost is 1.0 by default.
52      *
53      * @return float
54      */
55     public function getBoost()
56     {
57         return $this->_boost;
58     }
60     /**
61      * Sets the boost for this query clause to $boost.
62      *
63      * @param float $boost
64      */
65     public function setBoost($boost)
66     {
67         $this->_boost = $boost;
68     }
70     /**
71      * Score specified document
72      *
73      * @param integer $docId
74      * @param Zend_Search_Lucene $reader
75      * @return float
76      */
77     abstract public function score($docId, $reader);
79     /**
80      * Constructs an appropriate Weight implementation for this query.
81      *
82      * @param Zend_Search_Lucene $reader
83      * @return Zend_Search_Lucene_Search_Weight
84      */
85     abstract protected function _createWeight($reader);
87     /**
88      * Constructs an initializes a Weight for a query.
89      *
90      * @param Zend_Search_Lucene $reader
91      */
92     protected function _initWeight($reader)
93     {
94         $this->_weight = $this->_createWeight($reader);
95         $sum = $this->_weight->sumOfSquaredWeights();
96         $queryNorm = $reader->getSimilarity()->queryNorm($sum);
97         $this->_weight->normalize($queryNorm);
98     }