mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-26 11:08:13 +00:00
Merge pull request #2212 from darkshredder/country-name
Ported createCountryNames() to python and Added tests
This commit is contained in:
@@ -130,8 +130,8 @@ class SetupAll:
|
||||
database_import.create_search_indices(conn, args.config,
|
||||
args.sqllib_dir,
|
||||
drop=args.no_updates)
|
||||
run_legacy_script('setup.php', '--create-country-names',
|
||||
nominatim_env=args, throw_on_fail=not args.ignore_errors)
|
||||
LOG.warning('Create search index for default country names.')
|
||||
database_import.create_country_names(conn, args.config)
|
||||
|
||||
webdir = args.project_dir / 'website'
|
||||
LOG.warning('Setup website at %s', webdir)
|
||||
|
||||
@@ -43,6 +43,8 @@ class AdminTransition:
|
||||
help='Index the data')
|
||||
group.add_argument('--create-search-indices', action='store_true',
|
||||
help='Create additional indices required for search and update')
|
||||
group.add_argument('--create-country-names', action='store_true',
|
||||
help='Create search index for default country names.')
|
||||
group = parser.add_argument_group('Options')
|
||||
group.add_argument('--no-partitions', action='store_true',
|
||||
help='Do not partition search indices')
|
||||
@@ -62,7 +64,7 @@ class AdminTransition:
|
||||
help='File to import')
|
||||
|
||||
@staticmethod
|
||||
def run(args):
|
||||
def run(args): # pylint: disable=too-many-statements
|
||||
from ..tools import database_import, tiger_data
|
||||
from ..tools import refresh
|
||||
|
||||
@@ -137,3 +139,8 @@ class AdminTransition:
|
||||
args.threads or 1,
|
||||
args.config,
|
||||
args.sqllib_dir)
|
||||
|
||||
if args.create_country_names:
|
||||
LOG.warning('Create search index for default country names.')
|
||||
with connect(args.config.get_libpq_dsn()) as conn:
|
||||
database_import.create_country_names(conn, args.config)
|
||||
|
||||
@@ -306,3 +306,35 @@ def create_search_indices(conn, config, sqllib_dir, drop=False):
|
||||
sql = SQLPreprocessor(conn, config, sqllib_dir)
|
||||
|
||||
sql.run_sql_file(conn, 'indices.sql', drop=drop)
|
||||
|
||||
def create_country_names(conn, config):
|
||||
""" Create search index for default country names.
|
||||
"""
|
||||
|
||||
with conn.cursor() as cur:
|
||||
cur.execute("""SELECT getorcreate_country(make_standard_name('uk'), 'gb')""")
|
||||
cur.execute("""SELECT getorcreate_country(make_standard_name('united states'), 'us')""")
|
||||
cur.execute("""SELECT COUNT(*) FROM
|
||||
(SELECT getorcreate_country(make_standard_name(country_code),
|
||||
country_code) FROM country_name WHERE country_code is not null) AS x""")
|
||||
cur.execute("""SELECT COUNT(*) FROM
|
||||
(SELECT getorcreate_country(make_standard_name(name->'name'), country_code)
|
||||
FROM country_name WHERE name ? 'name') AS x""")
|
||||
sql_statement = """SELECT COUNT(*) FROM (SELECT getorcreate_country(make_standard_name(v),
|
||||
country_code) FROM (SELECT country_code, skeys(name)
|
||||
AS k, svals(name) AS v FROM country_name) x WHERE k"""
|
||||
|
||||
languages = config.LANGUAGES
|
||||
|
||||
if languages:
|
||||
sql_statement = "{} IN (".format(sql_statement)
|
||||
delim = ''
|
||||
for language in languages.split(','):
|
||||
sql_statement = "{}{}'name:{}'".format(sql_statement, delim, language)
|
||||
delim = ', '
|
||||
sql_statement = '{})'.format(sql_statement)
|
||||
else:
|
||||
sql_statement = "{} LIKE 'name:%'".format(sql_statement)
|
||||
sql_statement = "{}) v".format(sql_statement)
|
||||
cur.execute(sql_statement)
|
||||
conn.commit()
|
||||
|
||||
Reference in New Issue
Block a user