feat(canonical-lexicon): 3-harfli kök stem çekimlerini ekle
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled

"yag/mil/far/aku" gibi 3-harfli kökler ≥4 prefix kuralı yüzünden çekimli
hallerine (yagi/yaglar, mili, farlar/fari, akusu) eşleşmiyordu — "HPS yağı",
"Kardan Mili", "araba aküsü" "Diğer"e düşüyordu. Çekimleri açıkça ekledim +
sanziman'a "kardan". Global düşürmek riskli (sis→sistemi). 13/13 test.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-04 18:42:06 +03:00
parent cc1d22a7d4
commit 07d4bf7e69
2 changed files with 18 additions and 6 deletions

View File

@@ -53,6 +53,15 @@ describe("mapToCanonical", () => {
expect(mapToCanonical("merkezi elektrik kontrol unitesi bcm").slug).toBe("elektrik");
});
it("maps short-stem inflections (yağı, mili, kardan)", () => {
expect(mapToCanonical("hps yagi").slug).toBe("yaglar-sivilar");
expect(mapToCanonical("kardan mili").slug).toBe("sanziman");
expect(mapToCanonical("araba akusu").slug).toBe("elektrik");
// regression: a strong term still wins over the newly-added weak inflection
expect(mapToCanonical("eksantrik mili supaplar").slug).toBe("motor");
expect(mapToCanonical("yag filtresi").slug).toBe("filtreler");
});
it("returns null when no keyword matches", () => {
expect(mapToCanonical("romork duzenegi cikarilabilir").slug).toBeNull();
});

View File

@@ -91,8 +91,9 @@ export const LEXICON: Record<string, Bucket> = {
weak: "kavrama".split(" "),
},
sanziman: {
strong: "sanziman vites diferansiyel".split(" "),
weak: "flans kavrama saft mil".split(" "),
strong: "sanziman vites diferansiyel kardan".split(" "),
// 3-char stems (mil…) don't prefix-match their inflections, so list them.
weak: "flans kavrama saft mil mili miller".split(" "),
},
suspansiyon: {
strong: "amortisor salincak rotil helezon viraj mafsal".split(" "),
@@ -104,18 +105,19 @@ export const LEXICON: Record<string, Bucket> = {
},
elektrik: {
strong:
"alternator mars sarj role sigorta sensor korna bcm ecu beyin modul aku enstruman gosterge".split(
"alternator mars sarj role sigorta sensor korna bcm ecu beyin modul aku akusu enstruman gosterge".split(
" ",
),
weak: "kablo sinyal silecek tesisat".split(" "),
},
aydinlatma: {
strong: "far stop lamba ampul sis reflektor".split(" "),
// far/farlar/fari — 3-char "far" only matches exactly; add inflections.
strong: "far farlar fari stop lamba ampul sis reflektor".split(" "),
weak: "sinyal".split(" "),
},
"dis-kaporta": {
strong: "ayna".split(" "),
weak: "cam fitil krikosu kapi mentese cikma bagaj camlik".split(" "),
weak: "cam camlar camlari fitil krikosu kapi mentese cikma bagaj camlik".split(" "),
},
tampon: {
strong: "tampon izgara".split(" "),
@@ -131,7 +133,8 @@ export const LEXICON: Record<string, Bucket> = {
},
"yaglar-sivilar": {
strong: "antifriz gres adblue".split(" "),
weak: "yag hidrolik sprey katki madeni sivi".split(" "),
// "yag" (3 chars) misses "yagi/yaglar/yagli" under the >=4 prefix rule.
weak: "yag yagi yaglar yagli hidrolik sprey katki madeni sivi".split(" "),
},
};