2015-12-21 37 views
1

我想在組合索引上創建一個簡單的文本搜索。貓鼬文本搜索沒有返回結果

這裏是我的貓鼬模型:

// models/user.js 
// load the things we need 
var mongoose = require('mongoose'); 



// define the schema for our user model 
var itemSchema = mongoose.Schema({ 
    globalinfo  : { 
     ownerobjectid  : String, 
     name    : String, 
     desc    : String,  
     startdate   : Date, 
     enddate    : Date, 
     price    : Number, 
     status    : String, 
     statuscss   : String, 
     dateadded   : Date, 
     locationline1  : String, 
     locationline2  : String, 
     locationline3  : String, 
     locationtown  : String, 
     locationpostcode : String, 
     locationlatitude : Number, 
     locationlongitude : Number, 
     termsapprove  : Boolean, 
     friendlyurl   : String, 
     itemsearchinfo  : String, 
    } 
}); 


itemSchema.index(
        { 
         "globalinfo.itemsearchinfo": "text", 
         "globalinfo.name": "text" 
        } 
       ); // schema level 

// create the model for users and expose it to our app 
module.exports = mongoose.model('Item', itemSchema); 

這是我的搜索查詢:

Item.find(
     { $text : { $search : "item" } } 
    ).exec(function(err, items) { 

的問題是,該查詢始終不返回任何結果!

我在模型中的一個文件:

{ 
    "_id" : ObjectId("56781cb97ae92ff08b55d4f1"), 
    "globalinfo" : { 
     "friendlyurl" : "item-a", 
     "dateadded" : ISODate("2015-12-21T15:37:29.591Z"), 
     "itemsearchinfo" : "Woop lawn mower for rent!\nYou should use this space to describe the item in detail and make it appealing\nTo the renter write your stuff here.", 
     "statuscss" : "na", 
     "status" : "Not Available Yet", 
     "locationlongitude" : null, 
     "locationlatitude" : null, 
     "locationpostcode" : "test", 
     "locationtown" : "test", 
     "locationline3" : "", 
     "locationline2" : "", 
     "locationline1" : "test", 
     "termsapprove" : true, 
     "price" : 3, 
     "enddate" : ISODate("2015-12-31T00:00:00.000Z"), 
     "startdate" : ISODate("2015-12-23T00:00:00.000Z"), 
     "desc" : "\n         <h3>woop Lawn Mower for Rent! </h3>\n         <p>You should use this space to describe the item in detail and make it appealing to the renter <strong>Write your stuff here.</strong> \n        </p>", 
     "name" : "item A", 
     "ownerobjectid" : "56781909155232b7871edb17" 
    }, 
    "__v" : 0 
} 

db.items.getIndexes()的輸出:

[ 
    { 
     "v" : 1, 
     "key" : { 
      "_id" : 1 
     }, 
     "name" : "_id_", 
     "ns" : "whatplot_local_db.items" 
    }, 
    { 
     "v" : 1, 
     "key" : { 
      "_fts" : "text", 
      "_ftsx" : 1 
     }, 
     "name" : "itemsearchinfo_text_name_text", 
     "ns" : "whatplot_local_db.items", 
     "background" : true, 
     "weights" : { 
      "itemsearchinfo" : 1, 
      "name" : 1 
     }, 
     "default_language" : "english", 
     "language_override" : "language", 
     "textIndexVersion" : 2 
    } 
] 

回答

1

您是否嘗試過重新索引集合?

蒙戈命令:

db.collection.reIndex(); 

問題同我索引的方式。使用雙引號不起作用:

itemSchema.index(
        { 
         "globalinfo.itemsearchinfo": "text", 
         "globalinfo.name": "text" 
        } 
       ); // schema level 

但是單引號呢:

itemSchema.index(
        { 
         'globalinfo.itemsearchinfo': "text", 
         'globalinfo.name': "text" 
        } 
       ); // schema level 
+0

我試圖重新索引它似乎重新索引,但搜索仍然沒有返回。 – Cookiejest

+0

whats the「db.items.getIndexes();」 – Jared

+0

我已經用db.items.getIndexes的輸出更新了這個問題。感謝您的幫助!! – Cookiejest