sql >> Database teknologi >  >> NoSQL >> MongoDB

Fremskynd regex-strengsøgning i MongoDB

En mulighed ville være at gemme alle de varianter, som du tænker kan være nyttige som et array-element - dog ved ikke om det er muligt!

    {
        "number" : "pl",
        "surface_form" : "skrejjen",
        "surface_forms: [ "skrej", "skre" ],
        "phonetic" : "'skrɛjjɛn",
        "pattern" : "CCCVCCVC"
    }

Jeg vil nok også foreslå ikke at gemme 1000 ordformer med hvert ord, men vende dette om for at have mindre dokumenter. Jo mindre dine dokumenter er, jo mindre vil MongoDB skulle læse ind i hukommelsen for hver søgning (så længe søgebetingelserne selvfølgelig ikke kræver en fuld scanning):

{
    "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"
}

Jeg tvivler også på, at MySQL ville klare sig bedre her med søgninger efter tilfældige ordformer, da det skal lave en fuld tabelscanning ligesom MongoDB ville være. Det eneste, der kunne hjælpe der, er en forespørgselscache - men det er noget, du kan bygge i din søge-UI/API i din applikation, selvfølgelig.



  1. MongoDB $nin Query Operator

  2. MongoDb Aggregation Datamanipulation - Objekter til Arrays

  3. 3 enkle trin til at forbedre sikkerheden for din MongoDB-installation

  4. Google Cloud-funktionen timeout, når der oprettes forbindelse til Redis på Compute Engines interne IP