本文整理汇总了PHP中Zend_Search_Lucene_Search_Query类的典型用法代码示例。如果您正苦于以下问题:PHP Zend_Search_Lucene_Search_Query类的具体用法?PHP Zend_Search_Lucene_Search_Query怎么用?PHP Zend_Search_Lucene_Search_Query使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Zend_Search_Lucene_Search_Query类的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: __construct
public function __construct(Zend_Search_Lucene_Search_Query $query, Zend_Search_Lucene_Interface $reader)
{
$this->_query = $query;
$this->_reader = $reader;
$this->_weights = array();
$signs = $query->getSigns();
foreach ($query->getSubqueries() as $num => $subquery) {
if ($signs === null || $signs[$num] === null || $signs[$num]) {
$this->_weights[$num] = $subquery->createWeight($reader);
}
}
}
示例2: __construct
public function __construct(Zend_Search_Lucene_Search_Query $query, Zend_Search_Lucene_Interface $reader)
{
$this->_query = $query;
$this->_reader = $reader;
$this->_weights = array();
$signs = $query->getSigns();
foreach ($query->getTerms() as $id => $term) {
if ($signs === null || $signs[$id] === null || $signs[$id]) {
$this->_weights[$id] = new Zend_Search_Lucene_Search_Weight_Term($term, $query, $reader);
$query->setWeight($id, $this->_weights[$id]);
}
}
}
示例3: __construct
/**
* Constructor
*
* @param \Zend_Search_Lucene_Interface Lucene index instance
* @param \Zend_Search_Lucene_Search_Query $query Lucene query
* @param array $terms Original search terms
* @param boolean $highlight Highlight search terms in results
* @return void
*/
public function __construct(\Zend_Search_Lucene_Interface $index, \Zend_Search_Lucene_Search_Query $query, array $terms = array(), $highlight = false)
{
$this->_index = $index;
$this->_query = $query;
$this->_terms = $terms;
$this->_index->addReference();
// Run the Lucene search and register the results
foreach ($this->_index->find($this->_query) as $hit) {
$this->_hits[] = \Tollwerk\TwLucenesearch\Domain\Model\QueryHit::cast($hit);
}
// If search terms should be highlighted ...
if (count($this->_hits) && $highlight) {
$this->_highlight = array();
foreach ($this->_query->rewrite($this->_index)->getQueryTerms() as $term) {
if (!array_key_exists($term->field, $this->_highlight)) {
$this->_highlight[$term->field] = array($term->text);
} else {
$this->_highlight[$term->field][] = $term->text;
}
}
}
}
示例4: getQuery
/**
* Transform entry to a subquery
*
* @param string $encoding
* @return Zend_Search_Lucene_Search_Query
*/
public function getQuery($encoding)
{
$this->_query->setBoost($this->_boost);
return $this->_query;
}
示例5: getDocumentData
/**
*
* @param int $id
* @param Zend_Search_Lucene_Search_Query $query
* @return array
*/
public function getDocumentData($id, $query = null)
{
$highlighter = Axis::single('search/highlighter_default');
$doc = $this->_index->getDocument($id);
$result = array('type' => $doc->type, 'nameHighlight' => null === $query ? $doc->name : @$query->htmlFragmentHighlightMatches($doc->name, $this->_encoding, $highlighter), 'name' => $doc->name, 'contents' => null === $query ? $doc->contents : @$query->htmlFragmentHighlightMatches($doc->contents, $this->_encoding, $highlighter), 'urlHighlight' => null === $query ? $doc->url : @$query->htmlFragmentHighlightMatches($doc->url, $this->_encoding, $highlighter), 'url' => $doc->url);
if (in_array($doc->type, array('product'))) {
$result['image'] = $doc->image;
$result['image_title'] = $doc->image_title;
}
return $result;
}
示例6: _highlightMatches
/**
* Use the Zend engine to highlight matches for terms in a document
* @param Zend_Search_Lucene_Search_Query $query
* @param string $content
*/
private function _highlightMatches(&$query, $content)
{
$content = preg_replace('/.*<html><body><p>/s', '', $query->highlightMatches($content));
$content = preg_replace('/<\\/p><\\/body><\\/html>/s', '', $content);
return $content;
}
示例7: getQueryTerms
/**
* Return the search terms of a lucene search query within the context of the current index
*
* @param \Zend_Search_Lucene_Search_Query $query Lucene search query
* @return array Search terms
*/
public function getQueryTerms(\Zend_Search_Lucene_Search_Query $query)
{
$terms = array();
foreach ($query->rewrite($this->_index)->getQueryTerms() as $term) {
if (!array_key_exists($term->field, $terms)) {
$terms[$term->field] = array($term->text);
} else {
$terms[$term->field][] = $term->text;
}
}
return $terms;
}
示例8: add
/**
* Adds a query.
*
* @param Zend_Search_Lucene_Search_Query $q
*/
private function add(Zend_Search_Lucene_Search_Query $q)
{
$autoClose = false;
// apply modifiers
foreach ($this->modifiers as $type => $value) {
switch ($type) {
case self::M_BOOST:
$q->setBoost($value);
break;
case self::M_REQUIREMENT:
$q = new Zend_Search_Lucene_Search_Query_Boolean(array($q), array($value));
$autoClose = true;
break;
}
}
$this->modifiers = array();
// determine how to add the query
if ($this->master === null) {
$this->master = $q;
} else {
$c = count($this->queries);
if ($c == 0) {
throw new xfLuceneException('Cannot add a query to a ' . get_class($this->master) . ' query, likely a mismatch in creating a boolean query');
}
$this->queries[count($this->queries) - 1]->addSubquery($q);
}
if (!$autoClose && $q instanceof Zend_Search_Lucene_Search_Query_Boolean) {
$this->queries[] = $q;
}
}
示例9: sumOfSquaredWeights
/**
* The sum of squared weights of contained query clauses.
*
* @return float
*/
public function sumOfSquaredWeights()
{
// compute idf
$this->_idf = $this->_reader->getSimilarity()->idf($this->_term, $this->_reader);
// compute query weight
$this->_queryWeight = $this->_idf * $this->_query->getBoost();
// square it
return $this->_queryWeight * $this->_queryWeight;
}
示例10: normalize
/**
* Assigns the query normalization factor to this.
*
* @param float $queryNorm
*/
public function normalize($queryNorm)
{
// incorporate boost
$queryNorm *= $this->_query->getBoost();
foreach ($this->_weights as $weight) {
$weight->normalize($queryNorm);
}
}