Method PigeonholeFragments
- Namespace
- UsluzionicaServer.Infrastructure.Search
- Assembly
- UsluzionicaServer.dll
PigeonholeFragments(string, int)
Deli token na d+1 delova za SQL prefilter.
PIGEONHOLE PRINCIP: ako se q i w razlikuju za najviše d izmena,
a q podelimo na d+1 disjunktnih delova, onda d izmena može
„pokvariti" najviše d delova — bar jedan deo ostaje netaknut i mora
doslovno postojati u w.
Zato WHERE SearchTitle LIKE '%fri%' OR LIKE '%zerr%' ne može
promašiti pravi rezultat. Prefilter je korektan po konstrukciji, a ne
heuristika koja „obično radi".
Primeri: frizerr (7, d=1) → "fri" + "zerr" ; „frizer" sadrži "fri" ✓ frizre (6, d=1) → "fri" + "zre" ; „frizer" sadrži "fri" ✓ vodoinstalter (13,d=2) → "vodo"+"inst"+"alter" ; „vodoinstalater" sadrži "vodo" i "inst" ✓
public static IReadOnlyList<string> PigeonholeFragments(string token, int maxDistance)