fix: match explicit company registration intents
This commit is contained in:
@@ -11,17 +11,14 @@ from search.minjust_opensearch import APP_VERSION, request_json
|
|||||||
|
|
||||||
|
|
||||||
def company_registration_clauses(language: str, query: str) -> list[dict]:
|
def company_registration_clauses(language: str, query: str) -> list[dict]:
|
||||||
tokens = set(re.findall(r"\w+", query.casefold()))
|
patterns = {
|
||||||
intent = {
|
"ru": (r"\bкак\s+откры\w*\s+осоо\b", r"\b(порядок|процедура)\s+откры\w*\s+осоо\b", r"\bкак\s+зарегистр\w*\s+осоо\b"),
|
||||||
"ru": ("осоо", ("как", "порядок", "процедура"), ("откр", "созд", "зарегистр"), ("счет", "счёт", "филиал"), "Действует"),
|
"ky": (r"\bжчк\s+ач\w*\s+тартиби\b", r"\bжчк\s+кантип\s+ач\w*\b"),
|
||||||
"ky": ("жчк", ("кантип", "тартиби"), ("ач", "түз", "кат"), ("эсеп", "эсеб", "филиал"), "Күчүндө"),
|
|
||||||
}[language]
|
}[language]
|
||||||
entity, procedure_terms, action_prefixes, excluded_terms, status = intent
|
if not any(re.search(pattern, query.casefold()) for pattern in patterns):
|
||||||
if entity not in tokens or any(token.startswith(term) for token in tokens for term in excluded_terms) or not tokens.intersection(procedure_terms) or not any(
|
|
||||||
token.startswith(prefix) for token in tokens for prefix in action_prefixes
|
|
||||||
):
|
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
status = {"ru": "Действует", "ky": "Күчүндө"}[language]
|
||||||
# ponytail: curated legal mapping; replace with a reviewed intent catalog when coverage expands.
|
# ponytail: curated legal mapping; replace with a reviewed intent catalog when coverage expands.
|
||||||
def clause(document_code: str, boost: int) -> dict:
|
def clause(document_code: str, boost: int) -> dict:
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -61,8 +61,12 @@ class SearchRelevanceTest(unittest.TestCase):
|
|||||||
("ru", "кто зарегистрировал ОсОО"),
|
("ru", "кто зарегистрировал ОсОО"),
|
||||||
("ru", "как открыть счет ОсОО"),
|
("ru", "как открыть счет ОсОО"),
|
||||||
("ru", "как открыть филиал ОсОО"),
|
("ru", "как открыть филиал ОсОО"),
|
||||||
|
("ru", "как создать договор для ОсОО"),
|
||||||
|
("ru", "порядок создания логотипа ОсОО"),
|
||||||
("ky", "ЖЧК ачык маалымат"),
|
("ky", "ЖЧК ачык маалымат"),
|
||||||
("ky", "ЖЧК кантип банк эсебин ачуу"),
|
("ky", "ЖЧК кантип банк эсебин ачуу"),
|
||||||
|
("ky", "ЖЧК кантип келишим түзүү"),
|
||||||
|
("ky", "ЖЧК кантип логотип түзүү"),
|
||||||
):
|
):
|
||||||
body = json.loads(build_search_body(language, query, 10))
|
body = json.loads(build_search_body(language, query, 10))
|
||||||
self.assertNotIn("should", body["query"]["bool"])
|
self.assertNotIn("should", body["query"]["bool"])
|
||||||
|
|||||||
Reference in New Issue
Block a user