0
我MongoDB中数据的收集,我想给最佳匹配建议,而在我们的建议箱用户输入查询,排序最佳匹配的MongoDB
当用户开始输入com
建议应该是:
- 计算机
- 计算机科学
- 更多的东西一样
我在节点通过获得来自蒙戈所有匹配的数据,然后再给出一个等级给每个数据
function rank(name, q) {
var len = name.length,
lastIndex = -1;
for(var i = 0; i < q.length; i++) {
var n = name.indexOf(q[i], (lastIndex + 1));
if(n !== -1) {
len--;
lastIndex = n;
}
}
return len;
}
var query = 'com';
// giving rank to data
data = data.map(function(v) {
v.rank = rank(v.value, query);
return v;
});
// sorting by rank
data = data.sort(function(a, b) {
return a.rank - b.rank
});
这是给我满意的结果排序,但它会是太慢了在处理大数据。 我想让mongodb引擎处理排序,并给我有限的最佳匹配结果。
嗨,感谢您的支持。 它给我未定义的结果。我不认为var'q'可以在'mapFn'函数 –
@MdAdil中访问,对于以前的错误感到抱歉,您可以定义'q ='com'',就像我在答案中显示的一样。 – zangw
@MdAdil,我没有测试以上巨大的数据,它可能是一个选项或方向为您解决您的问题... – zangw