]> git.openstreetmap.org Git - nominatim.git/blob - docs/admin/Maintenance.md
Merge remote-tracking branch 'upstream/master'
[nominatim.git] / docs / admin / Maintenance.md
1 This chapter describes the various operations the Nominatim database administrator
2 may use to clean and maintain the database. None of these operations is mandatory
3 but they may help improve the performance and accuracy of results.
4
5
6 ## Updating postcodes
7
8 Command: `nominatim refresh --postcodes`
9
10 Postcode centroids (aka 'calculated postcodes') are generated by looking at all
11 postcodes of a country, grouping them and calculating the geometric centroid.
12 There is currently no logic to deal with extreme outliers (typos or other
13 mistakes in OSM data). There is also no check if a postcodes adheres to a
14 country's format, e.g. if Swiss postcodes are 4 digits.
15
16 When running regular updates, postcodes results can be improved by running
17 this command on a regular basis. Note that only the postcode table and the
18 postcode search terms are updated. The postcode that is assigned to each place
19 is only updated when the place is updated.
20
21 The command takes around 70min to run on the planet and needs ca. 40GB of
22 temporary disk space.
23
24
25 ## Updating word counts
26
27 Command: `nominatim refresh --word-counts`
28
29 Nominatim keeps frequency statistics about all search terms it indexes. These
30 statistics are currently used to optimise queries to the database. Thus better
31 statistics mean better performance. Word counts are created once after import
32 and are usually sufficient even when running regular updates. You might want
33 to rerun the statistics computation when adding larger amounts of new data,
34 for example, when adding an additional country via `nominatim add-data`.
35
36
37 ## Removing large deleted objects
38
39 Nominatim refuses to delete very large areas because often these deletions are
40 accidental and are reverted within hours. Instead the deletions are logged in
41 the `import_polygon_delete` table and left to the administrator to clean up.
42
43 There is currently no command to do that. You can use the following SQL
44 query to force a deletion on all objects that have been deleted more than
45 a certain timespan ago (here: 1 month):
46
47 ```sql
48 SELECT place_force_delete(p.place_id) FROM import_polygon_delete d, placex p
49 WHERE p.osm_type = d.osm_type and p.osm_id = d.osm_id
50       and age(p.indexed_date) > '1 month'::interval
51 ```