MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Търсене на пълен текст с тегло в мангуста

Да, можете да използвате пълнотекстово търсене в Mongoose>=3.8.9. Първо, една колекция може да има най-много един текстов индекс (вижте документи). Така че, за да дефинирате текстов индекс за няколко полета, имате нужда от съставен индекс:

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

Сега можете да използвате $text оператор на заявка като този:

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

Това също така ще сортира резултатите по оценка на уместност.

Що се отнася до теглата, можете да опитате да предадете обект на опции за тегла на index() метод (където дефинирате съставен индекс) (работи поне с v4.0.1 на 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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. използва за времето за създаване на mongodb ObjectId

  2. MongoDB:Преброяване на колко от всяка отделна стойност има?

  3. Изчислете средната стойност на полетата във вградените документи/масив

  4. Заобиколно решение на MongoDB за документ с размер над 16 MB?

  5. PyMongo -- итерация на курсора