全文搜索过滤文本分数

时间:2015-03-24 14:18:34

标签: mongodb

我有以下查找检索textScore排序结果的查询,但是如何应用标准只返回文本分数大于1的文档?

db.foods.find(
   { $text: { $search: "red blue green" } },
   { score: { $meta: "textScore" } }
).sort( { score: { $meta: "textScore" } } )

1 个答案:

答案 0 :(得分:6)

使用 aggregation framework 通过执行 $match 管道操作来获取文本分数大于1的文档关于术语" red"或者"蓝色"或"绿色",然后是 $project 运算符管道,用于投影得分字段,然后执行另一个 $match 管道operattion只返回分数大于1.0的文档。 " textScore" metadata 可用于包含 $match $text 阶段之后的预测,排序和条件>操作:

db.foods.aggregate([
    { 
        "$match": { 
               "$text": { 
                     "$search": "red blue green" 
                } 
         } 
    },
    { 
         "$project": { 
               "_id": 0, 
               "score": { 
                     "$meta": "textScore" 
                } 
          } 
     },
     { 
          "$match": { 
                "score": { "$gt": 1.0 } 
           } 
     }
])