示例#1
0
 /**
  * @param string $term
  */
 public function queryNameSuggestion($term)
 {
     $subquery = new CM_Elasticsearch_Query_Location();
     $subquery->queryMatch('name.prefix', $term, array('operator' => 'or', 'analyzer' => 'standard'));
     $subquery->queryMatch('nameFull.prefix', $term, array('operator' => 'and', 'analyzer' => 'standard'));
     $this->query($subquery);
 }
示例#2
0
 public function testQueryName()
 {
     $expected = array('Arinsal' => array('Arinsal'), 'ARINSAL' => array('Arinsal'), 'Arins' => array(), 'el serrat' => array('El Serrat'), 'Soldeu Andorra' => array('Soldeu'), 'Andorra Soldeu' => array('Soldeu'), 'El serrat Andorra' => array('El Serrat'), 'El Andor ser' => array(), 'El Andorra' => array('El Tarter', 'El Serrat'), 'serrat Andorra' => array('El Serrat'));
     foreach ($expected as $term => $expectedList) {
         $searchQuery = new CM_Elasticsearch_Query_Location();
         $searchQuery->queryName($term);
         $source = new CM_PagingSource_Elasticsearch_Location($searchQuery);
         $this->_assertItemsByName($expectedList, $source->getItems(), 'Wrong items for term `' . $term . '`.');
     }
 }
示例#3
0
 /**
  * @param string                 $term
  * @param int                    $minLevel
  * @param int                    $maxLevel
  * @param CM_Model_Location|null $sortDistanceLocation
  * @param CM_Model_Location|null $scopeLocation
  */
 public function __construct($term, $minLevel, $maxLevel, CM_Model_Location $sortDistanceLocation = null, CM_Model_Location $scopeLocation = null)
 {
     $term = (string) $term;
     $minLevel = (int) $minLevel;
     $maxLevel = (int) $maxLevel;
     $query = new CM_Elasticsearch_Query_Location();
     $query->filterLevel($minLevel, $maxLevel);
     if ($scopeLocation) {
         $query->filterLocation($scopeLocation);
     }
     if (strlen($term) > 0) {
         $query->queryNameSuggestion($term);
     }
     $query->sortLevel();
     if ($sortDistanceLocation) {
         $query->sortDistance($sortDistanceLocation);
     }
     $query->sortScore();
     $source = new CM_PagingSource_Elasticsearch_Location($query);
     $source->enableCacheLocal();
     parent::__construct($source);
 }