X-Git-Url: https://git.openstreetmap.org/nominatim.git/blobdiff_plain/27977411e958a6bfc9037db728d61d296c5487c0..c77877a93401dd2f87e3caefb7aa6f04d05f7c95:/nominatim/cli.py diff --git a/nominatim/cli.py b/nominatim/cli.py index 8d4071db..acb6839f 100644 --- a/nominatim/cli.py +++ b/nominatim/cli.py @@ -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: