forked from hans/Nominatim
It is now possible to configure functions for changing the query input before it is analysed by the tokenizer. Code is a cleaned-up version of the implementation by @miku.
27 lines
730 B
Python
27 lines
730 B
Python
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
#
|
|
# This file is part of Nominatim. (https://nominatim.org)
|
|
#
|
|
# Copyright (C) 2024 by the Nominatim developer community.
|
|
# For a full list of authors see the git log.
|
|
"""
|
|
Normalize query test using an ICU transliterator.
|
|
"""
|
|
from typing import cast
|
|
|
|
from .config import QueryConfig
|
|
from .base import QueryProcessingFunc
|
|
from ..search.query import Phrase
|
|
|
|
|
|
def create(config: QueryConfig) -> QueryProcessingFunc:
|
|
normalizer = config.get('_normalizer')
|
|
|
|
if not normalizer:
|
|
return lambda p: p
|
|
|
|
return lambda phrases: list(
|
|
filter(lambda p: p.text,
|
|
(Phrase(p.ptype, cast(str, normalizer.transliterate(p.text)))
|
|
for p in phrases)))
|