implementaion of 'nominatim index'

This commit is contained in:
Sarah Hoffmann
2021-01-17 20:05:41 +01:00
parent 27977411e9
commit c77877a934
3 changed files with 49 additions and 31 deletions

View File

@@ -11,6 +11,17 @@ from pathlib import Path
from .config import Configuration
from .admin.exec_utils import run_legacy_script
from .indexer.indexer import Indexer
def _num_system_cpus():
try:
cpus = len(os.sched_getaffinity(0))
except NotImplementedError:
cpus = None
return cpus or os.cpu_count()
class CommandlineParser:
""" Wraps some of the common functions for parsing the command line
and setting up subcommands.
@@ -297,11 +308,27 @@ class UpdateIndex:
@staticmethod
def add_args(parser):
pass
group = parser.add_argument_group('Filter arguments')
group.add_argument('--boundaries-only', action='store_true',
help="""Index only administrative boundaries.""")
group.add_argument('--no-boundaries', action='store_true',
help="""Index everything except administrative boundaries.""")
group.add_argument('--minrank', '-r', type=int, metavar='RANK', default=0,
help='Minimum/starting rank')
group.add_argument('--maxrank', '-R', type=int, metavar='RANK', default=30,
help='Maximum/finishing rank')
@staticmethod
def run(args):
return run_legacy_script('update.php', '--index', nominatim_env=args)
indexer = Indexer(args.config.get_libpq_dsn(),
args.threads or _num_system_cpus() or 1)
if not args.no_boundaries:
indexer.index_boundaries(args.minrank, args.maxrank)
if not args.boundaries_only:
indexer.index_by_rank(args.minrank, args.maxrank)
return 0
class UpdateRefresh: