Една от възможностите би била да съхраните всички варианти, които смятате, че могат да бъдат полезни като елемент от масив — но не съм сигурен дали това може да е възможно!
{
"number" : "pl",
"surface_form" : "skrejjen",
"surface_forms: [ "skrej", "skre" ],
"phonetic" : "'skrɛjjɛn",
"pattern" : "CCCVCCVC"
}
Вероятно бих предложил да не съхранявате 1000 формуляра на дума с всяка дума, а да обърнете това, за да имате по-малки документи. Колкото по-малки са вашите документи, толкова по-малко MongoDB ще трябва да чете в паметта за всяко търсене (стига условията за търсене да не изискват пълно сканиране, разбира се):
{
"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"
}
Също така се съмнявам, че MySQL ще се представи по-добре тук с търсения на произволни словоформи, тъй като ще трябва да направи пълно сканиране на таблица, точно както би било MongoDB. Единственото нещо, което би могло да помогне там, е кешът на заявките - но това е нещо, което бихте могли да изградите в своя UI/API за търсене във вашето приложение доста лесно, разбира се.