gpt4 book ai didi

jquery - 使用 typeahead Bloodhound 处理具有别名或同义词的搜索项目

转载 作者:行者123 更新时间:2023-12-01 05:46:47 27 4
gpt4 key购买 nike

我正在尝试实现类似于 stackoverflow 标签建议输入字段的功能。在数据库中,我有两个表:一个用于标签,另一个用于标签别名或标签同义词(tagSynonyms)。

当用户键入术语时,搜索引擎应该足够智能,能够检测键入术语的别名,并仅显示与键入术语相对应的主标签。使用 Bloodhound 实现此目的的最佳方法是什么?

最佳答案

只需将键入的术语发送到服务器并执行类似于此的 SQL 语句:

select name from tag t left outer join tagSyms s on s.tagID=t.tagID where s.alias=$searchstring OR t.tagName=$searchstring

并返回json格式的数据。 JSON 格式:{ val: 'tagname' }

在客户站点上:

var engine = new Bloodhound({
name: 'tags',
remote: 'http://example.com/tags?q=%QUERY',
datumTokenizer: function(d) {
return Bloodhound.tokenizers.whitespace(d.val);
},
queryTokenizer: Bloodhound.tokenizers.whitespace
});
engine.initialize();

$("#inputField").typeahead(...);

另请查看 typeahead.js 中的 displayKey 和模板键

当你想要一个排序列表时,如果sql是有序的就可以了。

您可以控制建议框中使用模板显示的内容:

例如,如果您也想显示计数器,只需将 JSON 编辑为 { val: 'tagname', counter:x }并提前输入:

.typeahead(
....,{
templates:{
suggestion:function(data){
return "<p>"+data.val+"(used: "+data.counter+" times)</p>";
}
},
source: engine.ttAdapter()

});

关于jquery - 使用 typeahead Bloodhound 处理具有别名或同义词的搜索项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26063778/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com