return $this->iSearchRank;
}
- /**
- * Increase the search rank.
- *
- * @param integer $iAddRank Number of ranks to increase.
- *
- * @return void
- */
- public function addToRank($iAddRank)
- {
- $this->iSearchRank += $iAddRank;
- return $this->iSearchRank;
- }
-
/**
* Make this search a POI search.
*
* @param bool $bFirstPhrase True if the token is in the first phrase of
* the query.
* @param bool $bLastToken True if the token is at the end of the query.
- * @param integer $iGlobalRank Changable ranking of all searches in the
- * batch.
*
* @return SearchDescription[] List of derived search descriptions.
*/
- public function extendWithFullTerm($aSearchTerm, $bHasPartial, $sPhraseType, $bFirstToken, $bFirstPhrase, $bLastToken, &$iGlobalRank)
+ public function extendWithFullTerm($aSearchTerm, $bHasPartial, $sPhraseType, $bFirstToken, $bFirstPhrase, $bLastToken)
{
$aNewSearches = array();
$oSearch->iSearchRank += 5;
}
$aNewSearches[] = $oSearch;
-
- // If it is at the beginning, we can be almost sure that
- // the terms are in the wrong order. Increase score for all searches.
- if ($bFirstToken) {
- $iGlobalRank++;
- }
}
} elseif (($sPhraseType == '' || $sPhraseType == 'postalcode')
&& $aSearchTerm['class'] == 'place' && $aSearchTerm['type'] == 'postcode'
$oSearch->sHouseNumber = trim($aSearchTerm['word_token']);
// sanity check: if the housenumber is not mainly made
// up of numbers, add a penalty
- if (preg_match_all("/[^0-9]/", $oSearch->sHouseNumber, $aMatches) > 2) {
+ if (preg_match_all('/[^0-9]/', $oSearch->sHouseNumber, $aMatches) > 2) {
$oSearch->iSearchRank++;
}
if (!isset($aSearchTerm['word_id'])) {
$oSearch->iSearchRank++;
}
// also must not appear in the middle of the address
- if (sizeof($this->aAddress) || sizeof($this->aAddressNonSearch)) {
+ if (sizeof($this->aAddress)
+ || sizeof($this->aAddressNonSearch)
+ || $this->sPostcode
+ ) {
$oSearch->iSearchRank++;
}
$aNewSearches[] = $oSearch;
) {
if ($aSearchTerm['search_name_count'] + 1 < CONST_Max_Word_Frequency) {
$oSearch = clone $this;
- $oSearch->iSearchRank++;
+ $oSearch->iSearchRank += 2;
$oSearch->aAddress[$iWordID] = $iWordID;
$aNewSearches[] = $oSearch;
} else {
}
if (CONST_Debug) {
- echo "<br><b>Place IDs:</b> ";
+ echo '<br><b>Place IDs:</b> ';
var_dump(array_keys($aResults));
}
if ($aFilteredPlaceIDs) {
$aNewResults = array();
foreach ($aFilteredPlaceIDs as $iPlaceId) {
- $aNewResults[$iPlaceId] = $aResults[$iPLaceId];
+ $aNewResults[$iPlaceId] = $aResults[$iPlaceId];
}
$aResults = $aNewResults;
if (CONST_Debug) {
- echo "<br><b>Place IDs after postcode filtering:</b> ";
+ echo '<br><b>Place IDs after postcode filtering:</b> ';
var_dump(array_keys($aResults));
}
}
if ($this->oContext->bViewboxBounded) {
$sSQL .= ' AND ST_Intersects('.$this->oContext->sqlViewboxSmall.', geometry)';
}
- $sSQL .= " ORDER BY st_area(geometry) DESC LIMIT 1";
+ $sSQL .= ' ORDER BY st_area(geometry) DESC LIMIT 1';
if (CONST_Debug) var_dump($sSQL);
if ($this->oContext->sqlCountryList) {
$sSQL .= ' AND country_code in '.$this->oContext->sqlCountryList;
}
- $sSQL .= ' ORDER BY '.$this->oContext->distanceSQL('centroid')." ASC";
+ $sSQL .= ' ORDER BY '.$this->oContext->distanceSQL('centroid').' ASC';
$sSQL .= " LIMIT $iLimit";
if (CONST_Debug) var_dump($sSQL);
$aDBResults = chksql($oDB->getCol($sSQL));
}
if ($this->sHouseNumber) {
- $aTerms[] = "address_rank between 16 and 27";
+ $aTerms[] = 'address_rank between 16 and 27';
} elseif (!$this->sClass || $this->iOperator == Operator::NAME) {
if ($iMinAddressRank > 0) {
- $aTerms[] = "address_rank >= ".$iMinAddressRank;
+ $aTerms[] = 'address_rank >= '.$iMinAddressRank;
}
if ($iMaxAddressRank < 30) {
- $aTerms[] = "address_rank <= ".$iMaxAddressRank;
+ $aTerms[] = 'address_rank <= '.$iMaxAddressRank;
}
}
$aDBResults = chksql(
$oDB->getAll($sSQL),
- "Could not get places for search terms."
+ 'Could not get places for search terms.'
);
foreach ($aDBResults as $aResult) {
$sSQL .= "interpolationtype='odd'";
}
$sSQL .= " or interpolationtype='all') and ";
- $sSQL .= $iHousenumber.">=startnumber and ";
- $sSQL .= $iHousenumber."<=endnumber";
+ $sSQL .= $iHousenumber.'>=startnumber and ';
+ $sSQL .= $iHousenumber.'<=endnumber';
$sSQL .= $this->oContext->excludeSQL(' AND place_id');
$sSQL .= " limit $iLimit";
$sSQL .= "interpolationtype='odd'";
}
$sSQL .= " or interpolationtype='all') and ";
- $sSQL .= $iHousenumber.">=startnumber and ";
- $sSQL .= $iHousenumber."<=endnumber";
+ $sSQL .= $iHousenumber.'>=startnumber and ';
+ $sSQL .= $iHousenumber.'<=endnumber';
$sSQL .= $this->oContext->excludeSQL(' AND place_id');
$sSQL .= " limit $iLimit";
$sSQL .= " WHERE place_id in ($sPlaceIDs)";
$sSQL .= " AND class='".$this->sClass."' ";
$sSQL .= " AND type='".$this->sType."'";
- $sSQL .= " AND linked_place_id is null";
+ $sSQL .= ' AND linked_place_id is null';
$sSQL .= $this->oContext->excludeSQL(' AND place_id');
- $sSQL .= " ORDER BY rank_search ASC ";
+ $sSQL .= ' ORDER BY rank_search ASC ';
$sSQL .= " LIMIT $iLimit";
if (CONST_Debug) var_dump($sSQL);
$sSQL .= " WHERE place_id in ($sPlaceIDs)";
$sSQL .= " AND rank_search < $iMaxRank + 5";
$sSQL .= " AND ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon')";
- $sSQL .= " ORDER BY rank_search ASC ";
- $sSQL .= " LIMIT 1";
+ $sSQL .= ' ORDER BY rank_search ASC ';
+ $sSQL .= ' LIMIT 1';
if (CONST_Debug) var_dump($sSQL);
$sPlaceGeom = chksql($oDB->getOne($sSQL));
}
if ($this->oContext->hasNearPoint()) {
$sOrderBySQL = $this->oContext->distanceSQL('l.centroid');
} elseif ($sPlaceIDs) {
- $sOrderBySQL = "ST_Distance(l.centroid, f.geometry)";
+ $sOrderBySQL = 'ST_Distance(l.centroid, f.geometry)';
} elseif ($sPlaceGeom) {
$sOrderBySQL = "ST_Distance(st_centroid('".$sPlaceGeom."'), l.centroid)";
}
$sSQL .= ' from '.$sClassTable.' as l';
if ($sPlaceIDs) {
- $sSQL .= ",placex as f WHERE ";
+ $sSQL .= ',placex as f WHERE ';
$sSQL .= "f.place_id in ($sPlaceIDs) ";
$sSQL .= " AND ST_DWithin(l.centroid, f.centroid, $fRange)";
} elseif ($sPlaceGeom) {
if ($this->oContext->hasNearPoint()) {
$sOrderBySQL = $this->oContext->distanceSQL('l.geometry');
} else {
- $sOrderBySQL = "ST_Distance(l.geometry, f.geometry)";
+ $sOrderBySQL = 'ST_Distance(l.geometry, f.geometry)';
}
$sSQL = 'SELECT distinct l.place_id';
$sSQL .= " AND l.type='".$this->sType."'";
$sSQL .= $this->oContext->excludeSQL(' AND l.place_id');
if ($sOrderBySQL) {
- $sSQL .= "ORDER BY orderterm ASC";
+ $sSQL .= 'ORDER BY orderterm ASC';
}
$sSQL .= " limit $iLimit";
return $aWordIDs[$k];
};
- echo "<tr>";
+ echo '<tr>';
echo "<td>$this->iSearchRank</td>";
- echo "<td>".join(', ', array_map($kf, $this->aName))."</td>";
- echo "<td>".join(', ', array_map($kf, $this->aNameNonSearch))."</td>";
- echo "<td>".join(', ', array_map($kf, $this->aAddress))."</td>";
- echo "<td>".join(', ', array_map($kf, $this->aAddressNonSearch))."</td>";
- echo "<td>".$this->sCountryCode."</td>";
- echo "<td>".Operator::toString($this->iOperator)."</td>";
- echo "<td>".$this->sClass."</td>";
- echo "<td>".$this->sType."</td>";
- echo "<td>".$this->sPostcode."</td>";
- echo "<td>".$this->sHouseNumber."</td>";
-
- echo "</tr>";
+ echo '<td>'.join(', ', array_map($kf, $this->aName)).'</td>';
+ echo '<td>'.join(', ', array_map($kf, $this->aNameNonSearch)).'</td>';
+ echo '<td>'.join(', ', array_map($kf, $this->aAddress)).'</td>';
+ echo '<td>'.join(', ', array_map($kf, $this->aAddressNonSearch)).'</td>';
+ echo '<td>'.$this->sCountryCode.'</td>';
+ echo '<td>'.Operator::toString($this->iOperator).'</td>';
+ echo '<td>'.$this->sClass.'</td>';
+ echo '<td>'.$this->sType.'</td>';
+ echo '<td>'.$this->sPostcode.'</td>';
+ echo '<td>'.$this->sHouseNumber.'</td>';
+
+ echo '</tr>';
}
}