我使用MongoDB启用了全文。这是我的剧本:
function bestMatch(name){
ChebiEntry.find({$text: {$search: escapeString(name)}},
{score: {$meta: 'textScore'}}, {lean:true},(e,results)=>{
if (results.length > 0){
let oneScores = []
results.forEach((obj)=>{
if(obj.score===1){
oneScores.push(obj);
}
});
console.log(oneScores);
}
})
.sort({score: {$meta: 'textScore'}})
}
//prepareDatabase();
bestMatch('K+');
这是我的输出:
[ { _id: 596d55fd2c446456a0cebc1d,
id: 8345,
name: 'K+',
__v: 0,
score: 1 },
{ _id: 596d55ff2c446456a0ceccb2,
id: 8345,
name: 'K(+)',
__v: 0,
score: 1 },
{ _id: 596d56072c446456a0ceee6b,
id: 29103,
name: 'K(+)',
__v: 0,
score: 1 },
{ _id: 596d56072c446456a0cef092,
id: 29104,
name: 'K(-)',
__v: 0,
score: 1 } ]
我的搜索结果是逐字记录的。然而,它与其他几个点击的得分相同,并不是我搜索的。这个'得分'系统,mongoDB不是很有帮助。
有没有办法改变这个分数系统,让逐字匹配得分更高?还有超过1的结果,这对我的查询来说更糟糕。