2013-04-13 5 views
0

Я пытаюсь использовать текстовый поиск mongo db, но я получаю следующую ошибку msg: нет текстового индекса для Хотя вы можете видеть, что есть текстовые индексы в db.items. в чем проблема? какая команда в мангусте?mongo db text search error no text index для

> db.items.getIndexes() 
[ 
    { 
     "v" : 1, 
     "key" : { 
      "_id" : 1 
     }, 
     "ns" : "db.items", 
     "name" : "_id_" 
    }, 
    { 
     "v" : 1, 
     "key" : { 
      "type" : "text", 
      "color" : "text", 
      "category_A" : "text", 
      "category_B" : "text", 
      "category_C" : "text" 
     }, 
     "ns" : "db.items", 
     "name" : "type_text_color_text_category_A_text_category_B_text_category_C_text", 
     "sparse" : false, 
     "background" : false 
    } 
] 
> db.items.runCommand("text",{search:"D"}) 
{ "ok" : 0, "errmsg" : "no text index for: db.items" } 

ответ

2

Во-первых, вы начали Монго с textSearchEnabled=true (см Enable text search)?

Если вы используете конфигурационный файл (например /etc/mongodb.conf) правильная линия должна быть:

setParameter = textSearchEnabled=true

Во-вторых, ваш индекс выглядит как обычный индекс, а не текст. Отправьте команду, которую вы использовали.


Если вы хотите, чтобы проверить функцию индексного, попробуйте следующее:

Бросай текущий индекс (это может помешать новым вы создадите)

db.items.dropIndex("type_text_color_text_category_A_text_category_B_text_category_C_text")

и создать новый один

db.items.ensureIndex({type:"text"}, {unique: false, name: "type_index"})

, а затем повторите поиск.

Возможно, вам также понадобится запустить db.items.reIndex().