1

我有一个带有标签的字段,例如First Name. 现在我有一个他选择或键入的用户定义字段。一旦他提交了键入的标签,我想给他他可以映射到的建议字段列表。

因此,如果用户提交了一个字段标签:Name, First,将获得和的Hello建议字段。First NameNameFirst

我不是要代码。我只需要一个我可以遵循的算法来做到这一点。

注意:我不能使用简单的CONTAINS方法,因为用户提交的标签中可能有两三个词,我需要将这些词中的任何一个与现有字段匹配。

任何映射算法将不胜感激。我需要的只是算法的名称,我会自己弄清楚。

建议字段的逻辑:

如果完全匹配,则一直显示在顶部 如果一个单词匹配只显示在中间 如果几个字符连续匹配,则将它们一直放在底部

4

1 回答 1

1

首先,您应该将用户输入拆分为单词数组。

之后,您可以使用近似搜索(例如Levenshtein distance)来计算用户输入中每个标签与您的字段之间的距离。建议距离小于某个阈值并按结果距离升序排序的字段。

请注意,原始的 Levenshtein 距离算法会计算整个字符串之间的距离。如果要将“名称”与“名字”匹配,则应使用匹配任何子字符串的修改。我有一个 C# 示例代码,希望它对您的 PHP 实现有所帮助:http://ideone.com/V0avT4

于 2013-09-12T22:39:03.147 回答