sql >> Databasteknik >  >> NoSQL >> MongoDB

Fulltextsökning med vikt i mongoose

Ja, du kan använda fulltextsökning i Mongoose>=3.8.9. För det första kan en samling ha högst ett textindex (se dokument). Så för att definiera textindex för flera fält behöver du sammansatt index:

schema.index({ animal: 'text', color: 'text', pattern: 'text', size: 'text' });

Nu kan du använda $text frågeoperator så här:

Model
    .find(
        { $text : { $search : "text to look for" } }, 
        { score : { $meta: "textScore" } }
    )
    .sort({ score : { $meta : 'textScore' } })
    .exec(function(err, results) {
        // callback
    });

Detta kommer också att sortera resultaten efter relevanspoäng.

När det gäller vikter kan du försöka skicka objektet viktalternativ till index() metod (där du definierar sammansatt index) (fungerar åtminstone med v4.0.1 av mongoose):

schema.index({ animal: 'text', color: 'text', pattern: 'text', size: 'text' }, {name: 'My text index', weights: {animal: 10, color: 4, pattern: 2, size: 1}});


  1. MongoDB $sampleRate

  2. Redis CLI visar inte nyligen lagrad nyckel via Laravel

  3. Hur får jag Redis att köra på Azure?

  4. För att starta YCSB-laddning med klusteraktiverat alternativ för REDIS