试图了解提前标记化

时间:2016-07-12 18:06:57

标签: javascript search token typeahead.js bloodhound

我没有正式的计算机科学教育,所以也许我为什么不理解它。我在wikepedia上读到,令牌化意味着将文本串分解为称为标记的单词或短语。您可以使用这些令牌进行输入。所以我假设这是血腥建议在做Bloodhound.tokenizers.whitespace(d.num)时所做的事情。

1)请告诉我为什么说白色空间。 2)上述意思是它通过num属性分割对象。它将num属性的所有值放入一个数组中,并将其存储在一个名为datumTokenizer

的神奇属性中

该代码的完整部分:

  datumTokenizer: function(d) { 
    return Bloodhound.tokenizers.whitespace(d.num); 
  },

查看this页面中的示例。它使用一个对象。

local: [{ num: 'one' }, { num: 'two' }, { num: 'three' }],

这是一个obj。 3)我们不应该使用下面有obj

的东西

Bloodhound.tokenizers.obj.whitespace(d.num)。注意obj。

4)将Bloodhound.tokenizers.whitespace(d.num)将示例obj拆分为[“one”,“two”,“three”]

根据这个:answer我认为答案是肯定的,他将名单称为“索引”

当我们执行queryTokenizer: Bloodhound.tokenizers.whitespace,时,文档会说“queryTokenizer - 一个带有签名(查询)的函数,它将查询转换为字符串标记数组”

5)在这个例子中我们如何做到这一点? 哦,只是在想。我们是否正在使用那个具有由空格分隔的单词串的datumTokenizer数组用于查询?为什么我们需要这样做呢。我们已经有了阵列。

var mySource = new Bloodhound({
  datumTokenizer: function(d) { 
    return Bloodhound.tokenizers.whitespace(d.num); 
  },
  //doesn't whitespace need to be called? "A function with the signature (query)"[from docs]
  queryTokenizer: Bloodhound.tokenizers.whitespace,
  local: [{ num: 'one' }, { num: 'two' }, { num: 'three' }],
  prefetch: '/prefetch',
  remote: '/remote?q=%QUERY'
});

mySource.initialize();

$('.typeahead').typeahead(null, {
  displayKey: 'num',
  source: mySource.ttAdapter()
});

编辑:为什么说whitespace?从哪里开始的空白?

编辑2:我发现了相似的源代码。

 var tokenizers = function() {
    "use strict";
    return {
        nonword: nonword,
        whitespace: whitespace,
        obj: {
            nonword: getObjTokenizer(nonword),
            whitespace: getObjTokenizer(whitespace)
        }
    };
    function whitespace(str) {
        str = _.toStr(str);
        return str ? str.split(/\s+/) : [];
    }

所以我看到如果它是一个对象,它会把它变成一个字符串,然后用空格将它分成一个数组。那么datumTokenizer:到底有多精确?它如何通过对象迭代(获取d.num)?你看到一个forloop还是forEach()? 。抱歉有太多问题,但这是一个主题。

编辑3: 我刚刚在文档中看到了这个

  

datumTokenizer - 具有签名(datum)的函数,用于将数据转换为字符串标记数组。必需的。

因此,在这种情况下,“datum”是属于Bloodhound实例中的属性local的对象?

我想我到了那儿。

0 个答案:

没有答案