364 lines
5.6 KiB
Python
364 lines
5.6 KiB
Python
|
"""Spanish search language: includes the JS Spanish stemmer."""
|
||
|
|
||
|
from __future__ import annotations
|
||
|
|
||
|
from typing import TYPE_CHECKING, Dict
|
||
|
|
||
|
import snowballstemmer
|
||
|
|
||
|
from sphinx.search import SearchLanguage, parse_stop_word
|
||
|
|
||
|
spanish_stopwords = parse_stop_word('''
|
||
|
|source: http://snowball.tartarus.org/algorithms/spanish/stop.txt
|
||
|
de | from, of
|
||
|
la | the, her
|
||
|
que | who, that
|
||
|
el | the
|
||
|
en | in
|
||
|
y | and
|
||
|
a | to
|
||
|
los | the, them
|
||
|
del | de + el
|
||
|
se | himself, from him etc
|
||
|
las | the, them
|
||
|
por | for, by, etc
|
||
|
un | a
|
||
|
para | for
|
||
|
con | with
|
||
|
no | no
|
||
|
una | a
|
||
|
su | his, her
|
||
|
al | a + el
|
||
|
| es from SER
|
||
|
lo | him
|
||
|
como | how
|
||
|
más | more
|
||
|
pero | pero
|
||
|
sus | su plural
|
||
|
le | to him, her
|
||
|
ya | already
|
||
|
o | or
|
||
|
| fue from SER
|
||
|
este | this
|
||
|
| ha from HABER
|
||
|
sí | himself etc
|
||
|
porque | because
|
||
|
esta | this
|
||
|
| son from SER
|
||
|
entre | between
|
||
|
| está from ESTAR
|
||
|
cuando | when
|
||
|
muy | very
|
||
|
sin | without
|
||
|
sobre | on
|
||
|
| ser from SER
|
||
|
| tiene from TENER
|
||
|
también | also
|
||
|
me | me
|
||
|
hasta | until
|
||
|
hay | there is/are
|
||
|
donde | where
|
||
|
| han from HABER
|
||
|
quien | whom, that
|
||
|
| están from ESTAR
|
||
|
| estado from ESTAR
|
||
|
desde | from
|
||
|
todo | all
|
||
|
nos | us
|
||
|
durante | during
|
||
|
| estados from ESTAR
|
||
|
todos | all
|
||
|
uno | a
|
||
|
les | to them
|
||
|
ni | nor
|
||
|
contra | against
|
||
|
otros | other
|
||
|
| fueron from SER
|
||
|
ese | that
|
||
|
eso | that
|
||
|
| había from HABER
|
||
|
ante | before
|
||
|
ellos | they
|
||
|
e | and (variant of y)
|
||
|
esto | this
|
||
|
mí | me
|
||
|
antes | before
|
||
|
algunos | some
|
||
|
qué | what?
|
||
|
unos | a
|
||
|
yo | I
|
||
|
otro | other
|
||
|
otras | other
|
||
|
otra | other
|
||
|
él | he
|
||
|
tanto | so much, many
|
||
|
esa | that
|
||
|
estos | these
|
||
|
mucho | much, many
|
||
|
quienes | who
|
||
|
nada | nothing
|
||
|
muchos | many
|
||
|
cual | who
|
||
|
| sea from SER
|
||
|
poco | few
|
||
|
ella | she
|
||
|
estar | to be
|
||
|
| haber from HABER
|
||
|
estas | these
|
||
|
| estaba from ESTAR
|
||
|
| estamos from ESTAR
|
||
|
algunas | some
|
||
|
algo | something
|
||
|
nosotros | we
|
||
|
|
||
|
| other forms
|
||
|
|
||
|
mi | me
|
||
|
mis | mi plural
|
||
|
tú | thou
|
||
|
te | thee
|
||
|
ti | thee
|
||
|
tu | thy
|
||
|
tus | tu plural
|
||
|
ellas | they
|
||
|
nosotras | we
|
||
|
vosotros | you
|
||
|
vosotras | you
|
||
|
os | you
|
||
|
mío | mine
|
||
|
mía |
|
||
|
míos |
|
||
|
mías |
|
||
|
tuyo | thine
|
||
|
tuya |
|
||
|
tuyos |
|
||
|
tuyas |
|
||
|
suyo | his, hers, theirs
|
||
|
suya |
|
||
|
suyos |
|
||
|
suyas |
|
||
|
nuestro | ours
|
||
|
nuestra |
|
||
|
nuestros |
|
||
|
nuestras |
|
||
|
vuestro | yours
|
||
|
vuestra |
|
||
|
vuestros |
|
||
|
vuestras |
|
||
|
esos | those
|
||
|
esas | those
|
||
|
|
||
|
| forms of estar, to be (not including the infinitive):
|
||
|
estoy
|
||
|
estás
|
||
|
está
|
||
|
estamos
|
||
|
estáis
|
||
|
están
|
||
|
esté
|
||
|
estés
|
||
|
estemos
|
||
|
estéis
|
||
|
estén
|
||
|
estaré
|
||
|
estarás
|
||
|
estará
|
||
|
estaremos
|
||
|
estaréis
|
||
|
estarán
|
||
|
estaría
|
||
|
estarías
|
||
|
estaríamos
|
||
|
estaríais
|
||
|
estarían
|
||
|
estaba
|
||
|
estabas
|
||
|
estábamos
|
||
|
estabais
|
||
|
estaban
|
||
|
estuve
|
||
|
estuviste
|
||
|
estuvo
|
||
|
estuvimos
|
||
|
estuvisteis
|
||
|
estuvieron
|
||
|
estuviera
|
||
|
estuvieras
|
||
|
estuviéramos
|
||
|
estuvierais
|
||
|
estuvieran
|
||
|
estuviese
|
||
|
estuvieses
|
||
|
estuviésemos
|
||
|
estuvieseis
|
||
|
estuviesen
|
||
|
estando
|
||
|
estado
|
||
|
estada
|
||
|
estados
|
||
|
estadas
|
||
|
estad
|
||
|
|
||
|
| forms of haber, to have (not including the infinitive):
|
||
|
he
|
||
|
has
|
||
|
ha
|
||
|
hemos
|
||
|
habéis
|
||
|
han
|
||
|
haya
|
||
|
hayas
|
||
|
hayamos
|
||
|
hayáis
|
||
|
hayan
|
||
|
habré
|
||
|
habrás
|
||
|
habrá
|
||
|
habremos
|
||
|
habréis
|
||
|
habrán
|
||
|
habría
|
||
|
habrías
|
||
|
habríamos
|
||
|
habríais
|
||
|
habrían
|
||
|
había
|
||
|
habías
|
||
|
habíamos
|
||
|
habíais
|
||
|
habían
|
||
|
hube
|
||
|
hubiste
|
||
|
hubo
|
||
|
hubimos
|
||
|
hubisteis
|
||
|
hubieron
|
||
|
hubiera
|
||
|
hubieras
|
||
|
hubiéramos
|
||
|
hubierais
|
||
|
hubieran
|
||
|
hubiese
|
||
|
hubieses
|
||
|
hubiésemos
|
||
|
hubieseis
|
||
|
hubiesen
|
||
|
habiendo
|
||
|
habido
|
||
|
habida
|
||
|
habidos
|
||
|
habidas
|
||
|
|
||
|
| forms of ser, to be (not including the infinitive):
|
||
|
soy
|
||
|
eres
|
||
|
es
|
||
|
somos
|
||
|
sois
|
||
|
son
|
||
|
sea
|
||
|
seas
|
||
|
seamos
|
||
|
seáis
|
||
|
sean
|
||
|
seré
|
||
|
serás
|
||
|
será
|
||
|
seremos
|
||
|
seréis
|
||
|
serán
|
||
|
sería
|
||
|
serías
|
||
|
seríamos
|
||
|
seríais
|
||
|
serían
|
||
|
era
|
||
|
eras
|
||
|
éramos
|
||
|
erais
|
||
|
eran
|
||
|
fui
|
||
|
fuiste
|
||
|
fue
|
||
|
fuimos
|
||
|
fuisteis
|
||
|
fueron
|
||
|
fuera
|
||
|
fueras
|
||
|
fuéramos
|
||
|
fuerais
|
||
|
fueran
|
||
|
fuese
|
||
|
fueses
|
||
|
fuésemos
|
||
|
fueseis
|
||
|
fuesen
|
||
|
siendo
|
||
|
sido
|
||
|
| sed also means 'thirst'
|
||
|
|
||
|
| forms of tener, to have (not including the infinitive):
|
||
|
tengo
|
||
|
tienes
|
||
|
tiene
|
||
|
tenemos
|
||
|
tenéis
|
||
|
tienen
|
||
|
tenga
|
||
|
tengas
|
||
|
tengamos
|
||
|
tengáis
|
||
|
tengan
|
||
|
tendré
|
||
|
tendrás
|
||
|
tendrá
|
||
|
tendremos
|
||
|
tendréis
|
||
|
tendrán
|
||
|
tendría
|
||
|
tendrías
|
||
|
tendríamos
|
||
|
tendríais
|
||
|
tendrían
|
||
|
tenía
|
||
|
tenías
|
||
|
teníamos
|
||
|
teníais
|
||
|
tenían
|
||
|
tuve
|
||
|
tuviste
|
||
|
tuvo
|
||
|
tuvimos
|
||
|
tuvisteis
|
||
|
tuvieron
|
||
|
tuviera
|
||
|
tuvieras
|
||
|
tuviéramos
|
||
|
tuvierais
|
||
|
tuvieran
|
||
|
tuviese
|
||
|
tuvieses
|
||
|
tuviésemos
|
||
|
tuvieseis
|
||
|
tuviesen
|
||
|
teniendo
|
||
|
tenido
|
||
|
tenida
|
||
|
tenidos
|
||
|
tenidas
|
||
|
tened
|
||
|
''')
|
||
|
|
||
|
|
||
|
class SearchSpanish(SearchLanguage):
|
||
|
lang = 'es'
|
||
|
language_name = 'Spanish'
|
||
|
js_stemmer_rawcode = 'spanish-stemmer.js'
|
||
|
stopwords = spanish_stopwords
|
||
|
|
||
|
def init(self, options: dict) -> None:
|
||
|
self.stemmer = snowballstemmer.stemmer('spanish')
|
||
|
|
||
|
def stem(self, word: str) -> str:
|
||
|
return self.stemmer.stemWord(word.lower())
|