-class ICUQueryAnalyzer(AbstractQueryAnalyzer):
- """ Converter for query strings into a tokenized query
- using the tokens created by a ICU tokenizer.
- """
- def __init__(self, conn: SearchConnection) -> None:
- self.conn = conn
-
- async def setup(self) -> None:
- """ Set up static data structures needed for the analysis.
- """
- async def _make_normalizer() -> Any:
- rules = await self.conn.get_property('tokenizer_import_normalisation')
- return Transliterator.createFromRules("normalization", rules)
-
- self.normalizer = await self.conn.get_cached_value('ICUTOK', 'normalizer',
- _make_normalizer)
-
- async def _make_transliterator() -> Any:
- rules = await self.conn.get_property('tokenizer_import_transliteration')
- return Transliterator.createFromRules("transliteration", rules)
-
- self.transliterator = await self.conn.get_cached_value('ICUTOK', 'transliterator',
- _make_transliterator)
-
- await self._setup_preprocessing()
-
- if 'word' not in self.conn.t.meta.tables:
- sa.Table('word', self.conn.t.meta,
- sa.Column('word_id', sa.Integer),
- sa.Column('word_token', sa.Text, nullable=False),
- sa.Column('type', sa.Text, nullable=False),
- sa.Column('word', sa.Text),
- sa.Column('info', Json))
+@dataclasses.dataclass
+class ICUAnalyzerConfig:
+ postcode_parser: PostcodeParser
+ normalizer: Transliterator
+ transliterator: Transliterator
+ preprocessors: List[QueryProcessingFunc]