sql >> Databáze >  >> NoSQL >> MongoDB

Zrychlete vyhledávání regulárních řetězců v MongoDB

Jednou z možností by bylo uložit všechny varianty, o kterých si myslíte, že by mohly být užitečné jako prvek pole – i když si nejste jisti, zda by to bylo možné!

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

Pravděpodobně bych také navrhl neukládat 1000 slovních tvarů s každým slovem, ale obrátit to, abyste měli menší dokumenty. Čím menší jsou vaše dokumenty, tím méně by MongoDB musel načíst do paměti pro každé vyhledávání (pokud podmínky vyhledávání samozřejmě nevyžadují úplné skenování):

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

Pochybuji také, že by zde MySQL fungovalo lépe s hledáním náhodných tvarů slov, protože bude muset provést úplné skenování tabulky stejně jako MongoDB. Jediná věc, která by tam mohla pomoci, je mezipaměť dotazů – ale to je něco, co byste si mohli ve svém vyhledávacím UI/API ve své aplikaci zabudovat samozřejmě docela snadno.



  1. MongoDB:jak analyzovat datum ve verzi 3.6 mongoDb?

  2. Jak na to:Zahrňte do své úlohy MapReduce knihovny třetích stran

  3. Jak odstranit kolekci TTL formuláře MongoDB?

  4. Implementace stránkování v mongodb