UNPKG

@orama/stemmers

Version:
1 lines 7.16 kB
"use strict";function _export(r,s){for(var t in s)Object.defineProperty(r,t,{enumerable:!0,get:Object.getOwnPropertyDescriptor(s,t).get})}Object.defineProperty(exports,"__esModule",{value:!0}),_export(exports,{get language(){return language},get stemmer(){return stemmer}});var g=!0,p=!1;function C(){this.p=function(r){this.j=r,this.cursor=0,this.a=this.j.length,this.f=0,this.c=this.cursor,this.d=this.a},this.z=function(){return this.j},this.w=function(r){this.j=r.j,this.cursor=r.cursor,this.a=r.a,this.f=r.f,this.c=r.c,this.d=r.d},this.i=function(r,s,t){if(this.cursor>=this.a)return p;var i=this.j.charCodeAt(this.cursor);return i>t||i<s||0==(r[(i-=s)>>>3]&1<<(7&i))?p:(this.cursor++,g)},this.n=function(r,s,t){if(this.cursor<=this.f)return p;var i=this.j.charCodeAt(this.cursor-1);return i>t||i<s||0==(r[(i-=s)>>>3]&1<<(7&i))?p:(this.cursor--,g)},this.k=function(r,s,t){if(this.cursor>=this.a)return p;var i=this.j.charCodeAt(this.cursor);return i>t||i<s||0==(r[(i-=s)>>>3]&1<<(7&i))?(this.cursor++,g):p},this.q=function(r,s,t){if(this.cursor<=this.f)return p;var i=this.j.charCodeAt(this.cursor-1);return i>t||i<s||0==(r[(i-=s)>>>3]&1<<(7&i))?(this.cursor--,g):p},this.m=function(r){return this.a-this.cursor<r.length||this.j.slice(this.cursor,this.cursor+r.length)!=r?p:(this.cursor+=r.length,g)},this.g=function(r){return this.cursor-this.f<r.length||this.j.slice(this.cursor-r.length,this.cursor)!=r?p:(this.cursor-=r.length,g)},this.o=function(r){for(var s=0,t=r.length,i=this.cursor,c=this.a,u=0,e=0,o=p;;){var h,n=s+(t-s>>>1),a=0,f=u<e?u:e,l=r[n];for(h=f;h<l[0].length;h++){if(i+f==c){a=-1;break}if(0!=(a=this.j.charCodeAt(i+f)-l[0].charCodeAt(h)))break;f++}if(0>a?(t=n,e=f):(s=n,u=f),1>=t-s){if(0<s||t==s||o)break;o=g}}for(;;){if(u>=(l=r[s])[0].length&&(this.cursor=i+l[0].length,4>l.length||(s=l[3](this),this.cursor=i+l[0].length,s)))return l[2];if(0>(s=l[1]))return 0}},this.h=function(r){for(var s=0,t=r.length,i=this.cursor,c=this.f,u=0,e=0,o=p;;){var h,n=s+(t-s>>1),a=0,f=u<e?u:e,l=r[n];for(h=l[0].length-1-f;0<=h;h--){if(i-f==c){a=-1;break}if(0!=(a=this.j.charCodeAt(i-1-f)-l[0].charCodeAt(h)))break;f++}if(0>a?(t=n,e=f):(s=n,u=f),1>=t-s){if(0<s||t==s||o)break;o=g}}for(;;){if(u>=(l=r[s])[0].length&&(this.cursor=i-l[0].length,4>l.length||(s=l[3](this),this.cursor=i-l[0].length,s)))return l[2];if(0>(s=l[1]))return 0}},this.s=function(r,s,t){var i=t.length-(s-r);return this.j=this.j.slice(0,r)+t+this.j.slice(s),this.a+=i,this.cursor>=s?this.cursor+=i:this.cursor>r&&(this.cursor=r),i},this.t=function(){return 0>this.c||this.c>this.d||this.d>this.a||this.a>this.j.length?p:g},this.b=function(r){var s=p;return this.t()&&(this.s(this.c,this.d,r),s=g),s},this.e=function(){return this.b("")},this.r=function(r,s,t){s=this.s(r,s,t),r<=this.c&&(this.c+=s),r<=this.d&&(this.d+=s)},this.u=function(){var r="";return this.t()&&(r=this.j.slice(this.c,this.d)),r},this.v=function(){return this.j.slice(0,this.a)}}function stem(){var r=new C,s=[["в",-1,1],["ив",0,2],["ыв",0,2],["вши",-1,1],["ивши",3,2],["ывши",3,2],["вшись",-1,1],["ившись",6,2],["ывшись",6,2]],t=[["ее",-1,1],["ие",-1,1],["ое",-1,1],["ые",-1,1],["ими",-1,1],["ыми",-1,1],["ей",-1,1],["ий",-1,1],["ой",-1,1],["ый",-1,1],["ем",-1,1],["им",-1,1],["ом",-1,1],["ым",-1,1],["его",-1,1],["ого",-1,1],["ему",-1,1],["ому",-1,1],["их",-1,1],["ых",-1,1],["ею",-1,1],["ою",-1,1],["ую",-1,1],["юю",-1,1],["ая",-1,1],["яя",-1,1]],i=[["ем",-1,1],["нн",-1,1],["вш",-1,1],["ивш",2,2],["ывш",2,2],["щ",-1,1],["ющ",5,1],["ующ",6,2]],c=[["сь",-1,1],["ся",-1,1]],u=[["ла",-1,1],["ила",0,2],["ыла",0,2],["на",-1,1],["ена",3,2],["ете",-1,1],["ите",-1,2],["йте",-1,1],["ейте",7,2],["уйте",7,2],["ли",-1,1],["или",10,2],["ыли",10,2],["й",-1,1],["ей",13,2],["уй",13,2],["л",-1,1],["ил",16,2],["ыл",16,2],["ем",-1,1],["им",-1,2],["ым",-1,2],["н",-1,1],["ен",22,2],["ло",-1,1],["ило",24,2],["ыло",24,2],["но",-1,1],["ено",27,2],["нно",27,1],["ет",-1,1],["ует",30,2],["ит",-1,2],["ыт",-1,2],["ют",-1,1],["уют",34,2],["ят",-1,2],["ны",-1,1],["ены",37,2],["ть",-1,1],["ить",39,2],["ыть",39,2],["ешь",-1,1],["ишь",-1,2],["ю",-1,2],["ую",44,2]],e=[["а",-1,1],["ев",-1,1],["ов",-1,1],["е",-1,1],["ие",3,1],["ье",3,1],["и",-1,1],["еи",6,1],["ии",6,1],["ами",6,1],["ями",6,1],["иями",10,1],["й",-1,1],["ей",12,1],["ией",13,1],["ий",12,1],["ой",12,1],["ам",-1,1],["ем",-1,1],["ием",18,1],["ом",-1,1],["ям",-1,1],["иям",21,1],["о",-1,1],["у",-1,1],["ах",-1,1],["ях",-1,1],["иях",26,1],["ы",-1,1],["ь",-1,1],["ю",-1,1],["ию",30,1],["ью",30,1],["я",-1,1],["ия",33,1],["ья",33,1]],o=[["ост",-1,1],["ость",-1,1]],h=[["ейше",-1,1],["н",-1,2],["ейш",-1,1],["ь",-1,3]],n=[33,65,8,232],a=0,f=0;this.l=function(){for(var l,d=r.cursor;;){var b=r.cursor;r:{for(;;){var k=r.cursor;if(r.c=r.cursor,r.m("ё")){r.d=r.cursor,r.cursor=k;break}if(r.cursor=k,r.cursor>=r.a)break r;r.cursor++}if(!r.b("е"))return p;continue}r.cursor=b;break}r.cursor=d,a=f=r.a,d=r.cursor;s:{for(;!r.i(n,1072,1103);){if(r.cursor>=r.a)break s;r.cursor++}for(f=r.cursor;!r.k(n,1072,1103);){if(r.cursor>=r.a)break s;r.cursor++}for(;!r.i(n,1072,1103);){if(r.cursor>=r.a)break s;r.cursor++}for(;!r.k(n,1072,1103);){if(r.cursor>=r.a)break s;r.cursor++}a=r.cursor}if(r.cursor=d,r.f=r.cursor,r.cursor=r.a,r.cursor<f)return p;if(d=r.f,r.f=f,b=r.a-r.cursor,k=r.a-r.cursor,!function(){var t;if(r.d=r.cursor,0==(t=r.h(s)))return p;switch(r.c=r.cursor,t){case 1:if((t=r.a-r.cursor,!r.g("а"))&&(r.cursor=r.a-t,!r.g("я")))return p;if(!r.e())return p;break;case 2:if(!r.e())return p}return g}()){r.cursor=r.a-k,k=r.a-r.cursor,r.d=r.cursor,0==r.h(c)?l=p:(r.c=r.cursor,l=r.e()?g:p),l||(r.cursor=r.a-k);t:if(k=r.a-r.cursor,!function(){var s,c;if(r.d=r.cursor,0==r.h(t)?c=p:(r.c=r.cursor,c=r.e()?g:p),!c)return p;c=r.a-r.cursor;s:if(r.d=r.cursor,0==(s=r.h(i)))r.cursor=r.a-c;else switch(r.c=r.cursor,s){case 1:if((s=r.a-r.cursor,!r.g("а"))&&(r.cursor=r.a-s,!r.g("я"))){r.cursor=r.a-c;break s}if(!r.e())return p;break;case 2:if(!r.e())return p}return g}()){if(r.cursor=r.a-k,function(){var s;if(r.d=r.cursor,0==(s=r.h(u)))return p;switch(r.c=r.cursor,s){case 1:if((s=r.a-r.cursor,!r.g("а"))&&(r.cursor=r.a-s,!r.g("я")))return p;if(!r.e())return p;break;case 2:if(!r.e())return p}return g}())break t;r.cursor=r.a-k,r.d=r.cursor,0!=r.h(e)&&(r.c=r.cursor,r.e())}}if(r.cursor=r.a-b,b=r.a-r.cursor,r.d=r.cursor,r.g("и")){if(r.c=r.cursor,!r.e())return p}else r.cursor=r.a-b;if(b=r.a-r.cursor,r.d=r.cursor,0!=r.h(o)&&(r.c=r.cursor,a<=r.cursor&&r.e()),r.cursor=r.a-b,b=r.a-r.cursor,r.d=r.cursor,0!=(k=r.h(h)))switch(r.c=r.cursor,k){case 1:if(!r.e()||(r.d=r.cursor,!r.g("н")))break;r.c=r.cursor,r.g("н")&&r.e();break;case 2:r.g("н")&&r.e();break;case 3:r.e()}return r.cursor=r.a-b,r.f=d,r.cursor=r.f,g},this.stemWord=function(s){return r.p(s),this.l(),r.j}}let stemmerInstance=new stem;function stemmer(r){return stemmerInstance.stemWord(r)}let language="russian";