2013-11-10 3 views
6

Я получаю следующее сообщение об ошибке: -Ошибка: текстовый поиск не включен: - в MongoDB

[Error: text search not enabled] 

Я бегу функцию folliowing, которая является по существу операцией мангуст-MongoDB.

var textSearch = require('mongoose-text-search'); 

exports.dbTextSearch = function() { 
    console.log('dbTextSearch'); 
    var gameSchema = mongoose.Schema({ 
     name: String 
     , tags: [String] 
     , likes: Number 
     , created: Date 
    }); 

    gameSchema.plugin(textSearch); 

    gameSchema.index({ tags: 'text' }); 

    var Game = mongoose.model('Game', gameSchema); 

    Game.create({ name: 'Super Mario 64', tags: ['nintendo', 'mario', '3d'] }, function (err) { 
    Game.textSearch('3d', function (err, output) { 
     if (err) return console.log(err); // this outputs the error. 
     var inspect = require('util').inspect; 
     console.log(inspect(output, { depth: null })); 
     }); 
    }); 
} 

Я пытаюсь реализации этой mongoose-text-search Plugin

+1

Возможный дубликат [Установка плагинов для mongoose - получение ошибки] (http://stackoverflow.com/questions/16513040/installing-plugins-for-mongoose-getting-error) – WiredPrairie

+0

Если вы ищете эту строку ошибки, это довольно просто найти наиболее вероятную причину. – WiredPrairie

ответ

5

MongoDB поиск текста еще экспериментальная функция. Вот почему он отключен по умолчанию и must be enabled manually. Вы можете сделать это, либо начиная mongod с параметром командной строки --setParameter textSearchEnabled=true, либо добавить строку textSearchEnabled=true в файл mongodb.conf.

Обратите внимание, что в качестве экспериментальной функции текстовый поиск еще не должен использоваться в рабочей среде.

UPDATE

В версии 2.6 из MongoDB функции поиска текста имеет производственные качества и включается автоматически.

15

В MongoDB 2.4 - для того, чтобы экспериментальный поиск текста, используйте

setParameter=textSearchEnabled=true

Следующая строка не работает для меня в файле mongodb.conf.

textSearchEnabled=true

EDIT В MongoDB 2.6 + она включена по умолчанию. Вам просто нужно настроить текстовые индексы.

+0

Я модернизировал свой MongoDB до 2.6, и у меня все еще есть «MongoError: текстовый поиск не включен». Есть ли способ проверить, является ли textSearchEnabled истинным или ложным? –

+0

[textSearchEnabled устарел с версии 2.6] (http://docs.mongodb.org/manual/reference/parameters/#param.textSearchEnabled). Возможно, именно поэтому он появляется, поскольку он не включен. Не уверен, как вы проверяете. TextSearch работает по-разному (начиная с версии 2.6), при этом оператор '$ text' возвращает несколько документов, а не' text' возвращает только один документ (из документов) в 2.4. Кроме того, проверьте свою версию() 'в mongoshell. –

Смежные вопросы