我知道关于这个主题已经有很多了,但是没有一个问题能帮助我继续下去。我有一个通过 GridFS 生成的文件上传系统,如下所示:
{ "_id" : ObjectId( "4f3723607b5c0b8d01060000" ),
"filename" : "7326_150970547928_746052928_2521002_2164327_n.jpg",
"filetype" : "image/jpeg",
"title" : "Indexed File 1",
"author" : "chewbacca",
"document" : "Rechnungen",
"keywords" : { "0" : "Darth",
"1" : "Vader",
"2" : "Haut",
"5" : "Putz",
"6" : "Pushy" },
"uploadDate" : Date( 1329013600519 ),
"length" : 61423,
"chunkSize" : 262144,
"md5" : "c73cce0bb6f349007635751f9a1a7ddd" }
如您所见,我有一个字段“关键字”,它是一组关键字。我想建立一个搜索选项来搜索这个字段,类似于全文搜索。因此,我分别索引了“关键字”字段。
db.fs.files.ensureIndex({ keywords : 1 })
现在的问题是,这有时有效。或者说昨天它在某些文件上工作,但在某些文件上却找不到任何东西。
假设我做了上面的索引,我会认为
> db.fs.files.find({keywords : "Vader"})
会给我上面打印的文件。还是我错过了什么?
(我唯一的解释是:创建索引需要很长时间,而且还没有准备好,这实际上是不可能的,或者选项“背景”、“dropDups”有问题,“独特”等...
我什么都试过了。我删除了索引;
> db.fs.files.dropIndexes()
并再次创造了它们。始终通过控制
> db.fs.files.getIndexes()
但是不,我无法得到任何结果...
在将文件保存在数据库中之后,我还尝试通过 PHP 进行索引。为此,我使用以下代码:
$gridFS->ensureIndex(array('keywords' => 1), array("unique" => true));
或者也没有独特的选项。
正如我所说,有时这可行,我可以查询关键字,但有时我不能。或者找到了一些关键字,但没有找到其他文档的关键字。难道索引不是为每个文档创建的吗???
请有人帮助我,我真的不明白这里的问题!
已经谢谢了。