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