@orama/stemmers
Version:
Stemmers for Orama
1 lines • 1.42 kB
JavaScript
let e;let g=RegExp("[аеиоуюяіїє]"),p=RegExp("(?:[иы]в(?:ши(?:сь)?)?|(?<=[ая])(?:в(?:ши(?:сь)?)?))$"),x=RegExp("с[яьи]$"),t=RegExp("(?:[аеєуюя]|еє|ем|єє|ий|их|іх|ів|ій|ім|їй|ім|им|ими|іми|йми|ої|ою|ова|ове|ого|ому)$"),E=RegExp("(?:[аіу]|ій|ий|им|ім|их|йми|ого|ому|ою)$"),R=RegExp("(?:[еєую]|ав|али|ати|вши|ив|ити|ме|сь|ся|ши|учи|яти|ячи|ать|ять)$","g"),$=RegExp("(?:[аеєіїийоуыьюя]|ам|ах|ами|ев|еві|еи|ей|ем|ею|єм|єю|ів|їв|ий|ием|ию|ия|иям|иях|ов|ові|ой|ом|ою|ью|ья|ям|ями|ях)$","g"),r=RegExp("[^аеиоуюяіїє][аеиоуюяіїє]+[^аеиоуюяіїє]+[аеиоуюяіїє].*(?<=о)сть?$","g"),n=RegExp("и$"),l=RegExp("ость$"),a=RegExp("ь$"),i=RegExp("ейше$"),u=RegExp("нн$"),c=RegExp("([гджзкстхцчш]|ст|дж|ждж|ьц|сі|ці|зі|он|ін|ів|ев|ок|шк)$"),o=(g,p,x)=>(e=g.replace(p,x))!==g;export function stemmer(s){return((s,m=!1)=>{e=s.toLowerCase();let f=s.match(g);if(null===f)return s;f=f.index;let d=e.slice(0,f+1);return""===(e=e.slice(f+1))?s:(!o(e,p,"")&&(o(e,x,""),o(e,t,"")?o(e,E,""):o(e,R,"")||o(e,$,"")),o(e,n,""),r.test(e)&&o(e,l,""),o(e,a,"")||(o(e,i,""),o(e,u,"н")),m&&o(e,c,""),d+e)})(s)}export const language="ukrainian";