X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/bef300305e3c445fe483b806b838ad8ce5b689f6..044bb6afa53f2c799490d8a95ca050c8b755ca4c:/nominatim/tokenizer/legacy_tokenizer.py diff --git a/nominatim/tokenizer/legacy_tokenizer.py b/nominatim/tokenizer/legacy_tokenizer.py index d4068aea..d6755835 100644 --- a/nominatim/tokenizer/legacy_tokenizer.py +++ b/nominatim/tokenizer/legacy_tokenizer.py @@ -5,7 +5,9 @@ from collections import OrderedDict import logging import re import shutil +from textwrap import dedent +from icu import Transliterator import psycopg2 import psycopg2.extras @@ -86,7 +88,7 @@ class LegacyTokenizer: self.normalization = None - def init_new_db(self, config): + def init_new_db(self, config, init_db=True): """ Set up a new tokenizer for the database. This copies all necessary data in the project directory to make @@ -98,13 +100,16 @@ class LegacyTokenizer: self.normalization = config.TERM_NORMALIZATION + self._install_php(config) + with connect(self.dsn) as conn: _check_module(module_dir, conn) self._save_config(conn, config) conn.commit() - self.update_sql_functions(config) - self._init_db_tables(config) + if init_db: + self.update_sql_functions(config) + self._init_db_tables(config) def init_from_project(self): @@ -134,6 +139,7 @@ class LegacyTokenizer: This is a special migration function for updating existing databases to new software versions. """ + self.normalization = config.TERM_NORMALIZATION module_dir = _install_module(config.DATABASE_MODULE_PATH, config.lib_dir.module, config.project_dir / 'module') @@ -158,7 +164,21 @@ class LegacyTokenizer: Analyzers are not thread-safe. You need to instantiate one per thread. """ - return LegacyNameAnalyzer(self.dsn) + normalizer = Transliterator.createFromRules("phrase normalizer", + self.normalization) + return LegacyNameAnalyzer(self.dsn, normalizer) + + + def _install_php(self, config): + """ Install the php script for the tokenizer. + """ + php_file = self.data_dir / "tokenizer.php" + php_file.write_text(dedent("""\ +