]> git.openstreetmap.org Git - nominatim.git/blobdiff - utils/update.php
details page: differentiate between spheric distance and distance in meters
[nominatim.git] / utils / update.php
index ef7e3c9f25395ec7a0c114327f81261bdbbe9449..4317367a42ee2772386eb73bbe2784082b3f5741 100644 (file)
@@ -322,12 +322,18 @@ if ($aResult['update-address-levels']) {
 }
 
 if ($aResult['recompute-importance']) {
 }
 
 if ($aResult['recompute-importance']) {
-    echo 'Updating importance values for database.\n';
+    echo "Updating importance values for database.\n";
     $oDB = new Nominatim\DB();
     $oDB->connect();
 
     $sSQL = 'ALTER TABLE placex DISABLE TRIGGER ALL;';
     $oDB = new Nominatim\DB();
     $oDB->connect();
 
     $sSQL = 'ALTER TABLE placex DISABLE TRIGGER ALL;';
-    $sSQL .= 'UPDATE placex SET (wikipedia, importance) = (SELECT wikipedia, importance FROM compute_importance(extratags, country_code, osm_type, osm_id));';
+    $sSQL .= 'UPDATE placex SET (wikipedia, importance) =';
+    $sSQL .= '   (SELECT wikipedia, importance';
+    $sSQL .= '    FROM compute_importance(extratags, country_code, osm_type, osm_id));';
+    $sSQL .= 'UPDATE placex s SET wikipedia = d.wikipedia, importance = d.importance';
+    $sSQL .= ' FROM placex d';
+    $sSQL .= ' WHERE s.place_id = d.linked_place_id and d.wikipedia is not null';
+    $sSQL .= '       and (s.wikipedia is null or s.importance < d.importance);';
     $sSQL .= 'ALTER TABLE placex ENABLE TRIGGER ALL;';
     $oDB->exec($sSQL);
 }
     $sSQL .= 'ALTER TABLE placex ENABLE TRIGGER ALL;';
     $oDB->exec($sSQL);
 }