我正在寻找一种在使用 mongodb 2.4 执行全文搜索时按字段值对结果进行排序的方法。
我的文本搜索命令如下所示:
db.books.runCommand( "text", { search: "science" } )
我想做的是这样的:
db.books.runCommand( "text", { search: "science", "sort": "rating" } )
我可以在文档中看到存在限制参数,但除了按相关性分数进行默认排序之外,没有其他参数可以对结果进行排序。
重新对结果进行排序可能效率很低。完成这件事有什么好方法吗?
遇到了同样的问题,通过使用“$meta”运算符而不是 runCommand 来解决问题(pymongo):
# create text index
db.collection.ensure_index([("textField", "text")], name = "Text_search_index")
# query
queryDict = { "$text": { "$search": ""science"}}
# cursor
cursor = db.collection.find(queryDict, {'score': {'$meta': 'textScore'}, "_id":1}).sort([('score', {'$meta': 'textScore'})]).limit(limit_value)
貌似只有这个可用从2.6版本开始 https://github.com/mongodb/mongo-python-driver/blob/master/pymongo/cursor.py#L658至少在 pymongo 中
同样在 Mongo shell 中,这相当于:
db.collection.ensureIndex({"textField":"text"})
queryDict = { "$text": { "$search": "science"}}
db.collection.find(queryDict, {'score': {'$meta': 'textScore'}}).sort({'score': {'$met
a': 'textScore'}}).limit(100)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)