MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Acelere a pesquisa de string regex no MongoDB


Uma possibilidade seria armazenar todas as variantes que você acha que podem ser úteis como um elemento de array - mas não tenho certeza se isso é possível!
    {
        "number" : "pl",
        "surface_form" : "skrejjen",
        "surface_forms: [ "skrej", "skre" ],
        "phonetic" : "'skrɛjjɛn",
        "pattern" : "CCCVCCVC"
    }

Eu provavelmente também sugeriria não armazenar 1000 formulários de palavras com cada palavra, mas inverter isso para ter documentos menores. Quanto menores forem seus documentos, menos MongoDB teria que ler na memória para cada pesquisa (desde que as condições de pesquisa não exijam uma verificação completa, é claro):
{
    "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"
}

Também duvido que o MySQL tenha um desempenho melhor aqui com pesquisas por formas de palavras aleatórias, pois terá que fazer uma varredura completa da tabela, assim como o MongoDB. A única coisa que pode ajudar é um cache de consulta - mas isso é algo que você pode criar em sua interface de usuário/API de pesquisa em seu aplicativo com bastante facilidade, é claro.