]> git.openstreetmap.org Git - nominatim.git/blobdiff - nominatim/api/search/query_analyzer_factory.py
Merge pull request #3375 from matkoniecz/patch-1
[nominatim.git] / nominatim / api / search / query_analyzer_factory.py
index 9804f3ce8a1129b7a3b7699425e94ba4017f4592..3666b7fcf5c33cf33cd5ab416ede48a7d22f4d34 100644 (file)
@@ -7,27 +7,38 @@
 """
 Factory for creating a query analyzer for the configured tokenizer.
 """
 """
 Factory for creating a query analyzer for the configured tokenizer.
 """
-from typing import List, cast
+from typing import List, cast, TYPE_CHECKING
 from abc import ABC, abstractmethod
 from pathlib import Path
 import importlib
 
 from nominatim.api.logging import log
 from nominatim.api.connection import SearchConnection
 from abc import ABC, abstractmethod
 from pathlib import Path
 import importlib
 
 from nominatim.api.logging import log
 from nominatim.api.connection import SearchConnection
-from nominatim.api.search.query import Phrase, QueryStruct
+
+if TYPE_CHECKING:
+    from nominatim.api.search.query import Phrase, QueryStruct
 
 class AbstractQueryAnalyzer(ABC):
 
 class AbstractQueryAnalyzer(ABC):
-    """ Class for analysing incomming queries.
+    """ Class for analysing incoming queries.
 
         Query analyzers are tied to the tokenizer used on import.
     """
 
     @abstractmethod
 
         Query analyzers are tied to the tokenizer used on import.
     """
 
     @abstractmethod
-    async def analyze_query(self, phrases: List[Phrase]) -> QueryStruct:
+    async def analyze_query(self, phrases: List['Phrase']) -> 'QueryStruct':
         """ Analyze the given phrases and return the tokenized query.
         """
 
 
         """ Analyze the given phrases and return the tokenized query.
         """
 
 
+    @abstractmethod
+    def normalize_text(self, text: str) -> str:
+        """ Bring the given text into a normalized form. That is the
+            standardized form search will work with. All information removed
+            at this stage is inevitably lost.
+        """
+
+
+
 async def make_query_analyzer(conn: SearchConnection) -> AbstractQueryAnalyzer:
     """ Create a query analyzer for the tokenizer used by the database.
     """
 async def make_query_analyzer(conn: SearchConnection) -> AbstractQueryAnalyzer:
     """ Create a query analyzer for the tokenizer used by the database.
     """