1""" 2 sphinx.search.fi 3 ~~~~~~~~~~~~~~~~ 4 5 Finnish search language: includes the JS Finnish stemmer. 6 7 :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. 8 :license: BSD, see LICENSE for details. 9""" 10 11from typing import Dict 12 13import snowballstemmer 14 15from sphinx.search import SearchLanguage, parse_stop_word 16 17finnish_stopwords = parse_stop_word(''' 18| source: http://snowball.tartarus.org/algorithms/finnish/stop.txt 19| forms of BE 20 21olla 22olen 23olet 24on 25olemme 26olette 27ovat 28ole | negative form 29 30oli 31olisi 32olisit 33olisin 34olisimme 35olisitte 36olisivat 37olit 38olin 39olimme 40olitte 41olivat 42ollut 43olleet 44 45en | negation 46et 47ei 48emme 49ette 50eivät 51 52|Nom Gen Acc Part Iness Elat Illat Adess Ablat Allat Ess Trans 53minä minun minut minua minussa minusta minuun minulla minulta minulle | I 54sinä sinun sinut sinua sinussa sinusta sinuun sinulla sinulta sinulle | you 55hän hänen hänet häntä hänessä hänestä häneen hänellä häneltä hänelle | he she 56me meidän meidät meitä meissä meistä meihin meillä meiltä meille | we 57te teidän teidät teitä teissä teistä teihin teillä teiltä teille | you 58he heidän heidät heitä heissä heistä heihin heillä heiltä heille | they 59 60tämä tämän tätä tässä tästä tähän tällä tältä tälle tänä täksi | this 61tuo tuon tuota tuossa tuosta tuohon tuolla tuolta tuolle tuona tuoksi | that 62se sen sitä siinä siitä siihen sillä siltä sille sinä siksi | it 63nämä näiden näitä näissä näistä näihin näillä näiltä näille näinä näiksi | these 64nuo noiden noita noissa noista noihin noilla noilta noille noina noiksi | those 65ne niiden niitä niissä niistä niihin niillä niiltä niille niinä niiksi | they 66 67kuka kenen kenet ketä kenessä kenestä keneen kenellä keneltä kenelle kenenä keneksi| who 68ketkä keiden ketkä keitä keissä keistä keihin keillä keiltä keille keinä keiksi | (pl) 69mikä minkä minkä mitä missä mistä mihin millä miltä mille minä miksi | which what 70mitkä | (pl) 71 72joka jonka jota jossa josta johon jolla jolta jolle jona joksi | who which 73jotka joiden joita joissa joista joihin joilla joilta joille joina joiksi | (pl) 74 75| conjunctions 76 77että | that 78ja | and 79jos | if 80koska | because 81kuin | than 82mutta | but 83niin | so 84sekä | and 85sillä | for 86tai | or 87vaan | but 88vai | or 89vaikka | although 90 91 92| prepositions 93 94kanssa | with 95mukaan | according to 96noin | about 97poikki | across 98yli | over, across 99 100| other 101 102kun | when 103niin | so 104nyt | now 105itse | self 106''') 107 108 109class SearchFinnish(SearchLanguage): 110 lang = 'fi' 111 language_name = 'Finnish' 112 js_stemmer_rawcode = 'finnish-stemmer.js' 113 stopwords = finnish_stopwords 114 115 def init(self, options: Dict) -> None: 116 self.stemmer = snowballstemmer.stemmer('finnish') 117 118 def stem(self, word: str) -> str: 119 return self.stemmer.stemWord(word.lower()) 120