1つの可能性は、配列要素として役立つと思われるすべてのバリアントを格納することですが、それが可能かどうかはわかりません!
{
"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"
}
また、MongoDBと同じように全表スキャンを実行する必要があるため、ランダムな単語形式の検索でMySQLのパフォーマンスが向上するかどうかも疑問です。クエリキャッシュを使用できるのはクエリキャッシュだけですが、もちろん、アプリケーションの検索UI/APIに簡単に組み込むことができます。