关于javascript的文本匹配器

时间:2016-08-07 16:48:24

标签: javascript node.js

我需要一些JS库,它可以通过长文本请求匹配类别。

例如,我有类别ApplesRed ApplesGreen ApplesOranges和请求Red Juicy Apple 1 Kilo from Spain。在这种情况下,类别应为Red Apples。所以,简单的循环和contains()是不够的。

我搜索了一些像https://github.com/NaturalNode/natural这样的库,但分类不合适,因为在我的情况下,我不知道所有可能的请求,也无法训练它。

也许我需要阻止请求,计算单词距离请求到类别并对其进行排序?

请帮我解决这个反全文搜索。

2 个答案:

答案 0 :(得分:1)

一种非常基本的方式,但它符合您提供的单一示例:

var categories = [ "Apples", "Red Apples", "Green Apples", "Oranges" ];
var intputString = "Red Juicy Apple 1 Kilo from Spain";

var words = inputString.split(' ');

for (int wordIndex = 0; wordIndex < words.length; wordIndex++) {
  for (int categoryIndex = 0; categoryIndex < categories.length; categoryIndex++) {
    if (categories[categoryIndex].indexOf(words[wordIndex]) > -1) {
      // The word words[wordIndex] is in the string categories[categoryIndex]
    }
  }
}

答案 1 :(得分:1)

我找到了http://glench.github.io/fuzzyset.js/,似乎有效。

>>f = FuzzySet(['Apples', 'Red Apples', 'Green Apples', 'Oranges'])
>>f.get("Red Juicy Apple 1 Kilo from Spain")

[Array[2]0: 0.3030303030303031: "Red Apples"length: 2__proto__: Array[0]]

希望它不仅假设英语......