Một khả năng sẽ là lưu trữ tất cả các biến thể mà bạn cho rằng có thể hữu ích dưới dạng một phần tử mảng - tuy nhiên, bạn không chắc liệu điều đó có thể thực hiện được hay không!
{
"number" : "pl",
"surface_form" : "skrejjen",
"surface_forms: [ "skrej", "skre" ],
"phonetic" : "'skrɛjjɛn",
"pattern" : "CCCVCCVC"
}
Tôi có lẽ cũng sẽ đề nghị không lưu trữ các mẫu 1000 từ với mỗi từ, nhưng hãy xoay chuyển điều này để có các tài liệu nhỏ hơn. Tài liệu của bạn càng nhỏ thì MongoDB càng ít phải đọc vào bộ nhớ cho mỗi lần tìm kiếm (tất nhiên là miễn là điều kiện tìm kiếm không yêu cầu quét toàn bộ):
{
"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"
}
Tôi cũng nghi ngờ rằng MySQL sẽ hoạt động tốt hơn ở đây với các tìm kiếm cho các dạng từ ngẫu nhiên vì nó sẽ phải thực hiện quét toàn bộ bảng giống như MongoDB. Điều duy nhất có thể giúp có một bộ nhớ cache truy vấn - nhưng đó là thứ mà bạn có thể xây dựng trong giao diện người dùng / API tìm kiếm trong ứng dụng của mình một cách khá dễ dàng.