我的字段有First Name
这样的标签。现在我有一个他选择或输入的用户定义字段。一旦他提交了键入的标签,我想给他一个他可以映射到的建议字段列表。
因此,如果用户提交了字段标签:Name
,First
,Hello
将获得First Name
和Name
的建议字段First
我不是要求代码。我只需要一个我可以遵循的算法来做到这一点。
注意:我不能使用简单的 CONTAINS 方法,因为用户提交的标签中可能有两三个字,我需要将这些字匹配到现有字段
任何映射算法都将受到赞赏。我需要的只是算法的名称,我会自己弄清楚。
建议字段的逻辑:
如果它的完全匹配显示在顶部 如果一个单词只匹配显示在中间 如果几个字符连续匹配,则将它们全部放在底部
答案 0 :(得分:1)
首先,您应该将用户输入拆分为单词数组。
之后,您可以使用近似搜索(例如Levenshtein distance)来计算用户输入中的每个标签与字段之间的距离。建议距离小于某个阈值并按结果距离递增的字段。
注意,原始的Levenshtein距离算法计算整个弦之间的距离。如果要将“名称”与“名字”匹配,则应使用与任何子字符串匹配的修改。我在C#中有一个示例代码,希望它可以帮助您实现PHP:http:// ideone.com/V0avT4