/** * Re-write queries into primitive queries * Also used for query optimization and binding to the index * * @param Zend_Search_Lucene $index * @return Zend_Search_Lucene_Search_Query */ public function rewrite(Zend_Search_Lucene $index) { if ($this->_term->field != null) { return $this; } else { $query = new Zend_Search_Lucene_Search_Query_MultiTerm(); $query->setBoost($this->getBoost()); foreach ($index->getFieldNames(true) as $fieldName) { $term = new Zend_Search_Lucene_Index_Term($this->_term->text, $fieldName); $query->addTerm($term); } return $query->rewrite($index); } }
/** * Re-write queries into primitive queries * Also used for query optimization and binding to the index * * @param Zend_Search_Lucene $index * @return Zend_Search_Lucene_Search_Query */ public function rewrite(Zend_Search_Lucene $index) { if (count($this->_terms) == 0) { return new Zend_Search_Lucene_Search_Query_Empty(); } else { if ($this->_terms[0]->field !== null) { return $this; } else { $query = new Zend_Search_Lucene_Search_Query_Boolean(); $query->setBoost($this->getBoost()); foreach ($index->getFieldNames(true) as $fieldName) { $subquery = new Zend_Search_Lucene_Search_Query_Phrase(); $subquery->setSlop($this->getSlop()); foreach ($this->_terms as $termId => $term) { $qualifiedTerm = new Zend_Search_Lucene_Index_Term($term->text, $fieldName); $subquery->addTerm($qualifiedTerm, $this->_offsets[$termId]); } $query->addSubquery($subquery); } return $query; } } }