public function testQueryNameSuggestion() { $expected = array('Arinsal' => array('Arinsal'), 'Arins' => array('Arinsal'), 'ARI' => array('Arinsal'), 'el serrat' => array('El Serrat'), 'ENCAMP' => array('Encamp', 'Encamp'), 'Soldeu Andorra' => array('Soldeu'), 'Andorra Soldeu' => array('Soldeu'), 'El serrat Andorra' => array('El Serrat'), 'Andorra El serrat' => array('El Serrat'), 'El Andorra serrat' => array('El Serrat'), 'El Andor ser' => array('El Serrat'), 'El Andorra' => array('El Tarter', 'El Serrat'), 'serrat Andorra' => array('El Serrat'), 'Merit ad' => array('Meritxell')); foreach ($expected as $term => $expectedList) { $searchQuery = new CM_Elasticsearch_Query_Location(); $searchQuery->queryNameSuggestion($term); $source = new CM_PagingSource_Elasticsearch_Location($searchQuery); $this->_assertItemsByName($expectedList, $source->getItems(), 'Wrong items for term `' . $term . '`.'); } }
/** * @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); }