fix: match explicit company registration intents

This commit is contained in:
2026-08-20 15:12:07 +03:00
parent 2faac7b74e
commit 74873451ab
2 changed files with 9 additions and 8 deletions

View File

@@ -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"\ак\s+откры\w*\s+осоо\b", r"\b(порядок|процедура)\s+откры\w*\s+осоо\b", r"\ак\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 {

View File

@@ -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"])