atlasbot: gate metric keys by token overlap
This commit is contained in:
parent
692b059b52
commit
ed038ebb8d
@ -1431,6 +1431,8 @@ async def _select_metric_chunks(
|
|||||||
selected = _parse_key_list(raw, available_keys, max_keys)
|
selected = _parse_key_list(raw, available_keys, max_keys)
|
||||||
if candidate_keys:
|
if candidate_keys:
|
||||||
selected = _merge_metric_keys(selected, candidate_keys, max_keys)
|
selected = _merge_metric_keys(selected, candidate_keys, max_keys)
|
||||||
|
if selected and candidate_keys and not _metric_key_overlap(selected, token_set):
|
||||||
|
selected = candidate_keys[:max_keys]
|
||||||
if not selected and candidate_keys:
|
if not selected and candidate_keys:
|
||||||
selected = candidate_keys[:max_keys]
|
selected = candidate_keys[:max_keys]
|
||||||
if available_keys:
|
if available_keys:
|
||||||
@ -1582,6 +1584,17 @@ def _filter_metric_keys(keys: list[str], tokens: set[str]) -> list[str]:
|
|||||||
return [item[1] for item in ranked]
|
return [item[1] for item in ranked]
|
||||||
|
|
||||||
|
|
||||||
|
def _metric_key_overlap(keys: list[str], tokens: set[str]) -> bool:
|
||||||
|
if not keys or not tokens:
|
||||||
|
return False
|
||||||
|
lowered_tokens = {token.lower() for token in tokens if token and len(token) >= TOKEN_MIN_LEN}
|
||||||
|
for key in keys:
|
||||||
|
parts = [part for part in re.split(r"[_\\W]+", key.lower()) if part]
|
||||||
|
if set(parts) & lowered_tokens:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
def _lines_for_metric_keys(lines: list[str], keys: list[str], max_lines: int = 0) -> list[str]:
|
def _lines_for_metric_keys(lines: list[str], keys: list[str], max_lines: int = 0) -> list[str]:
|
||||||
if not lines or not keys:
|
if not lines or not keys:
|
||||||
return []
|
return []
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user