En möjlighet skulle vara att lagra alla varianter som du tror kan vara användbara som ett array-element – dock inte säker på om det kan vara möjligt!
{
"number" : "pl",
"surface_form" : "skrejjen",
"surface_forms: [ "skrej", "skre" ],
"phonetic" : "'skrɛjjɛn",
"pattern" : "CCCVCCVC"
}
Jag skulle nog också föreslå att inte lagra 1000 ordformer med varje ord, utan vända på detta för att få mindre dokument. Ju mindre dina dokument är, desto mindre skulle MongoDB behöva läsa in i minnet för varje sökning (så länge sökvillkoren inte kräver en fullständig skanning förstås):
{
"word": {
"pos" : "N",
"lemma" : "skrun",
"gloss" : "screw",
},
"form" : {
"number" : "sg",
"surface_form" : "skrun",
"phonetic" : "ˈskruːn",
"gender" : "m"
},
"source" : "Mayer2013"
}
{
"word": {
"pos" : "N",
"lemma" : "skrun",
"gloss" : "screw",
},
"form" : {
"number" : "pl",
"surface_form" : "skrejjen",
"phonetic" : "'skrɛjjɛn",
"pattern" : "CCCVCCVC"
},
"source" : "Mayer2013"
}
Jag tvivlar också på att MySQL skulle fungera bättre här med sökningar efter slumpmässiga ordformer eftersom det kommer att behöva göra en fullständig tabellskanning precis som MongoDB skulle göra. Det enda som kan hjälpa där är en frågecache - men det är något som du kan bygga i ditt sökgränssnitt/API i din applikation ganska enkelt förstås.