add migration for configurable tokenizer

Adds a migration that initialises a legacy tokenizer for
an existing database. The migration is not active yet as
it will need completion when more functionality is added
to the legacy tokenizer.
This commit is contained in:
Sarah Hoffmann
2021-04-21 15:38:52 +02:00
parent 296a66558f
commit b5540dc35c
3 changed files with 63 additions and 31 deletions

View File

@@ -6,7 +6,8 @@ import logging
from nominatim.db import properties
from nominatim.db.connection import connect
from nominatim.version import NOMINATIM_VERSION
from nominatim.tools import refresh, database_import
from nominatim.tools import refresh
from nominatim.tokenizer import factory as tokenizer_factory
from nominatim.errors import UsageError
LOG = logging.getLogger()
@@ -108,17 +109,6 @@ def import_status_timestamp_change(conn, **_):
TYPE timestamp with time zone;""")
@_migration(3, 5, 0, 99)
def install_database_module_in_project_directory(conn, config, paths, **_):
""" Install database module in project directory.
The database module needs to be present in the project directory
since those were introduced.
"""
database_import.install_module(paths.module_dir, paths.project_dir,
config.DATABASE_MODULE_PATH, conn=conn)
@_migration(3, 5, 0, 99)
def add_nominatim_property_table(conn, config, **_):
""" Add nominatim_property table.
@@ -173,3 +163,17 @@ def switch_placenode_geometry_index(conn, **_):
and class = 'place' and type != 'postcode'
and linked_place_id is null""")
cur.execute(""" DROP INDEX IF EXISTS idx_placex_adminname """)
@_migration(3, 7, 0, 1)
def install_legacy_tokenizer(conn, config, **_):
""" Setup legacy tokenizer.
If no other tokenizer has been configured yet, then create the
configuration for the backwards-compatible legacy tokenizer
"""
if properties.get_property(conn, 'tokenizer') is None:
tokenizer = tokenizer_factory.create_tokenizer(config, init_db=False,
module_name='legacy')
tokenizer.migrate_database(config)