2011-08-14 38 views
1

我一直在使用String Score进行很多项目。排序列表非常棒,比如姓名,国家等。寻找更好的javascript文本匹配评分系统

现在,我正在研究一个项目,我想匹配一个更大的文本集合,而不仅仅是几个词。就像一段。

鉴于以下两个字符串:

string1 = "I want to eat."; 
string2 = "I want to eat. Let's go eat. All this talk about eating is making me hungry. Ready to eat?"; 

我想术语eat返回string2为高于string1。然而,更高的分数string1

string1.score('eat'); 
> 0.5261904761904762 

string2.score('eat'); 
> 0.4477777777777778 

也许我是错的思维string2应该得分越高,我很想听听论点这一逻辑,如果这是你的逻辑。否则,关于更多上下文JavaScript匹配算法的任何想法?

+1

很少看到这样的问题的JavaScript! +1 – Mrchief

回答

2

如果score不考虑重复那么只有这样的"eat"其他事件的无与伦比的垃圾,其对针对总成绩处理在string2"eat"一个出现增加了比分。

许多字符串相似性度量以这种方式表现,例如,在Edit distance中,不匹配的字符越多,得分和重复越低被视为不匹配。

这不是很清楚,我从阅读​​什么ALGO它正在使用,但比分变量

var total_character_score = 0, 
    start_of_string_bonus, 
    abbreviation_score, 
    fuzzies=1, 
    final_score; 

似乎并没有考虑到多次重复。

如果你想要多次出现次数,那么它听起来像你想要的不是一个字符串相似性算法,但一个fuzzy match algo,所以你可以找到匹配的数量。

也许yeti witch会为你工作。

+0

对,这很有道理。我的问题是要找到一个更好的选择。 – hookedonwinter

+0

@hookedonwinter,请参阅我的编辑。 –

+0

谢谢。我正在调查雪人女巫。你绝对帮助我了解我在找什么,以及搜索的词汇。非常感谢你的帮忙 :) – hookedonwinter