sql >> Database >  >> NoSQL >> MongoDB

Versnel het zoeken naar regex-tekenreeksen in MongoDB

Een mogelijkheid zou zijn om alle varianten op te slaan waarvan je denkt dat ze nuttig kunnen zijn als een array-element - ik weet echter niet of dat mogelijk is!

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

Ik zou waarschijnlijk ook willen voorstellen om geen 1000 woordvormen bij elk woord op te slaan, maar dit om te draaien om kleinere documenten te hebben. Hoe kleiner uw documenten, hoe minder MongoDB voor elke zoekopdracht in het geheugen hoeft in te lezen (zolang de zoekvoorwaarden natuurlijk geen volledige scan vereisen):

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

Ik betwijfel ook of MySQL hier beter zou presteren met zoekopdrachten naar willekeurige woordvormen, omdat het een volledige tabelscan zal moeten doen, net zoals MongoDB zou zijn. Het enige dat daar zou kunnen helpen, is een querycache - maar dat is iets dat u natuurlijk vrij eenvoudig in uw zoek-UI/API in uw toepassing kunt inbouwen.



  1. WAARSCHUWING Fout:Meteor-code moet altijd worden uitgevoerd binnen een Fiber when-call-methode op de server

  2. MongoDB:Update/Upsert vs Invoegen

  3. redis-geheugen en cpu-pieken

  4. Hoe vergelijk ik data van Twitter-gegevens die zijn opgeslagen in MongoDB via PyMongo?