Typeahead/Bloodhound:从本地删除重复项
Typeahead/Bloodhound: Removing duplicates from local
我不清楚如何使用 Bloodhound 中的 dupDetector 参数删除重复项。
我正在使用 0.11.1 版
从具有如下记录的数据库中提取数据集:
building_name room department
Rooney 123 English
Rooney 456 Chemistry
Rooney 987 Chemistry
Meyer 65 Dog Walking
Flatiron 498 Weaving
我的 Bloodhound 电话:
var buildingName = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name', 'room', 'department'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
local: buildingJson,
dupDetector: function(remoteMatch, localMatch) {
return remoteMatch.building_name === localMatch.building_name;
}
});
我正在寻找的功能是能够搜索鲁尼、456 或英语,结果集只显示一个 building_name,因为所有三个结果的建筑物名称都相同。目前,它正在返回列表中的所有三个记录。
这可能吗?
我能找到的关于 dupDetector 的所有信息都是比较远程和预取。我只使用一个数据源,它只有多个同名记录。
遗憾的是,dupDetector 仅适用于远程或预取数据源。
本地数据源存在问题,因此您的 dupDetector 无法正常工作。它永远不会被调用。尝试使用 console.log 来查看。
https://github.com/twitter/typeahead.js/issues/606#issuecomment-51221195
看来您是从 JSON 加载的,所以为什么不直接将它弹出到您的 "local" 服务器上,而是 "prefetch" 呢?否则看起来你将不得不手动完成。
var buildingName = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name', 'room', 'department'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: ../buildingJson.json,
dupDetector: function(remoteMatch, localMatch) {
return remoteMatch.building_name === localMatch.building_name;
}
});
我不清楚如何使用 Bloodhound 中的 dupDetector 参数删除重复项。
我正在使用 0.11.1 版
从具有如下记录的数据库中提取数据集:
building_name room department
Rooney 123 English
Rooney 456 Chemistry
Rooney 987 Chemistry
Meyer 65 Dog Walking
Flatiron 498 Weaving
我的 Bloodhound 电话:
var buildingName = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name', 'room', 'department'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
local: buildingJson,
dupDetector: function(remoteMatch, localMatch) {
return remoteMatch.building_name === localMatch.building_name;
}
});
我正在寻找的功能是能够搜索鲁尼、456 或英语,结果集只显示一个 building_name,因为所有三个结果的建筑物名称都相同。目前,它正在返回列表中的所有三个记录。
这可能吗?
我能找到的关于 dupDetector 的所有信息都是比较远程和预取。我只使用一个数据源,它只有多个同名记录。
遗憾的是,dupDetector 仅适用于远程或预取数据源。
本地数据源存在问题,因此您的 dupDetector 无法正常工作。它永远不会被调用。尝试使用 console.log 来查看。
https://github.com/twitter/typeahead.js/issues/606#issuecomment-51221195
看来您是从 JSON 加载的,所以为什么不直接将它弹出到您的 "local" 服务器上,而是 "prefetch" 呢?否则看起来你将不得不手动完成。
var buildingName = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name', 'room', 'department'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: ../buildingJson.json,
dupDetector: function(remoteMatch, localMatch) {
return remoteMatch.building_name === localMatch.building_name;
}
});