当前位置:  开发笔记 > 编程语言 > 正文

MongoDB Java API:全文搜索

如何解决《MongoDBJavaAPI:全文搜索》经验,为你挑选了1个好方法。



1> BatScream..:

你已经尝试了,你真的很亲密.

请注意,在,

db.collection.find(
    {$text : {$search : "\"expression\" keyword"}},
    {score : {$meta : "textScore"}}
).sort({score : {$meta : "textScore"}})

{$text : {$search : "\"expression\" keyword"}}- 是query部分.

{score : {$meta : "textScore"}}- 是projection部分.

在您尝试使用Java驱动程序实现的内容中,

DBObject searchCommand = new BasicDBObject(
    "$text", new BasicDBObject("$search", "\"expression\" keyword")
).append(
    "score", new BasicDBObject("'$meta'", "textScore")
);

最终会产生,

{$text:{$search:"\"expression\" keyword"},"score":{"meta":"textscore"}}

这不等同于本机查询.即使是预期的 projection陈述也是其query本身的一部分.

需要注意的是,这最终找了一个名为场score,因为它现在已经成为一个部分query没有projection.

您可以轻松修改您的DBObject实例,使其成为projection参数的一部分,它可以工作:

DBObject findCommand = new BasicDBObject(
    "$text", new BasicDBObject("$search", "keyword")
);

DBObject projectCommand =  new BasicDBObject(
    "score", new BasicDBObject("$meta", "textScore"));

DBObject sortCommand = new BasicDBObject(
    "score", new BasicDBObject("$meta", "textScore")
);
DBCursor result = collection.find(
                                  findCommand ,projectCommand)
                                  .sort(sortCommand );

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有