首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解Bloodhound.tokenizers.obj.whitespace

理解Bloodhound.tokenizers.obj.whitespace
EN

Stack Overflow用户
提问于 2015-10-28 02:16:14
回答 2查看 11.4K关注 0票数 17

总之,我试图根据一些工作示例将Twitter typeaheadBloodhound应用到我的项目中,但我无法理解下面的代码。

代码语言:javascript
复制
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('songs'),
queryTokenizer: Bloodhound.tokenizers.whitespace,

原始代码如下所示。

代码语言:javascript
复制
var songlist = new Bloodhound({
                datumTokenizer: Bloodhound.tokenizers.obj.whitespace('songs'),
                queryTokenizer: Bloodhound.tokenizers.whitespace,
                limit: 10,
                remote: '/api/demo/GetSongs?searchTterm=%QUERY'

            });

正式文件刚刚说:

datumTokenizer --一个具有签名(数据)的函数,它将一个数据转换成一个字符串标记数组。必填项。 queryTokenizer -具有签名(查询)的函数,它将查询转换为字符串标记数组。必填项。

这是什么意思?有人能帮忙告诉我更多关于这件事的事吗,这样我才能更好地理解它?

EN

回答 2

Stack Overflow用户

发布于 2017-04-20 18:16:35

我在这里找到一些有用的信息:

https://github.com/twitter/typeahead.js/blob/master/doc/migration/0.10.0.md#tokenization-methods-must-be-provided

最常见的标记化方法是在空格或非单词字符上拆分给定的字符串。“血犬”为这些方法提供了现成的实现: //返回“1”、“2”、“25”Bloodhound.tokenizers.whitespace(“一二二五”);//返回“一”、“二”、“二十”、“五”Bloodhound.tokenizers.nonword(“一二二五”); 对于查询标记化,您可能需要使用上述方法之一。对于数据标记化,您可能希望在这里做一些更高级的事情。 对于数据,有时您希望将令牌从多个属性中剥离。例如,如果您正在为GitHub存储库构建一个搜索引擎,那么从回购程序的名称、所有者和主要语言派生令牌可能是明智的: var repos ={ name:‘示例’,owner:'John‘,language:'JavaScript’},{ name:‘owner’,owner:'Joe‘,language:'Scala’};customTokenizer(datum) { var nameTokens = Bloodhound.tokenizers.whitespace(datum.name);var ownerTokens =Bloodhound.tokenizers.whitespace languageTokens = Bloodhound.tokenizers.whitespace(datum.language);返回nameTokens.concat(ownerTokens).concat(languageTokens);} 还可能有这样的场景,您希望在后端执行数据标记。最好的方法是向包含这些令牌的数据中添加一个属性。然后,您可以提供一个只返回已经存在的令牌的令牌程序: [{值:‘足球’,记号:‘足球’,‘猪皮’},{值:‘篮球’,记号:‘篮球’,'bball‘};函数customTokenizer(资料){返回datum.tokens}; 还有很多其他的方法可以对数据进行标记化,这实际上取决于您想要完成的任务。

不幸的是,这些信息在主要文档中并不容易找到。

票数 11
EN

Stack Overflow用户

发布于 2016-04-13 14:39:13

它是用于将数据或查询拆分为一个字数组以执行搜索/匹配的令牌。datumTokenizer引用您的数据,queryTokenizer引用所做的查询(通常是输入的文本)。

如果您的数据是一个对象数组(即json),datumTokenizer允许您指定要执行搜索的对象的哪个字段。例如,如果要搜索名称和代码字段,可以输入类似Bloodhound.tokenizers.obj.whitespace(['name','code'])的内容或提供自定义函数。

您可以在以下网站找到更多信息:https://github.com/twitter/typeahead.js/blob/master/doc/migration/0.10.0.md#tokenization-methods-must-be-provided

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33381801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档