mirror of
https://github.com/silverstripe/silverstripe-fulltextsearch
synced 2024-09-29 12:49:23 +02:00
55 lines
1.4 KiB
PHP
55 lines
1.4 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace SilverStripe\FullTextSearch\Solr\Writers;
|
||
|
|
||
|
use SilverStripe\FullTextSearch\Search\Criteria\SearchCriterion;
|
||
|
use SilverStripe\FullTextSearch\Search\Queries\AbstractSearchQueryWriter;
|
||
|
|
||
|
/**
|
||
|
* Class SolrSearchQueryWriter_Basic
|
||
|
* @package SilverStripe\FullTextSearch\Solr\Writers
|
||
|
*/
|
||
|
class SolrSearchQueryWriterBasic extends AbstractSearchQueryWriter
|
||
|
{
|
||
|
/**
|
||
|
* @var SearchCriterion $searchCriterion
|
||
|
* @return string
|
||
|
*/
|
||
|
public function generateQueryString(SearchCriterion $searchCriterion)
|
||
|
{
|
||
|
return sprintf(
|
||
|
'%s(%s%s%s)',
|
||
|
$this->getComparisonPolarity($searchCriterion->getComparison()),
|
||
|
addslashes($searchCriterion->getTarget()),
|
||
|
$this->getComparisonConjunction(),
|
||
|
$searchCriterion->getQuoteValue($searchCriterion->getValue())
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Is this a positive (+) or negative (-) Solr comparison.
|
||
|
*
|
||
|
* @param string $comparison
|
||
|
* @return string
|
||
|
*/
|
||
|
protected function getComparisonPolarity($comparison)
|
||
|
{
|
||
|
switch ($comparison) {
|
||
|
case SearchCriterion::NOT_EQUAL:
|
||
|
return '-';
|
||
|
default:
|
||
|
return '+';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Decide how we are comparing our left and right values.
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
protected function getComparisonConjunction()
|
||
|
{
|
||
|
return ':';
|
||
|
}
|
||
|
}
|