我正在使用javascript实现自动完成脚本。但是,有些名称是两个单词名称,中间有一个空格。你可以使用什么样的算法来处理它。我正在使用trie存储名称 我能提出的唯一解决方案就是说不能使用两个单词名称(要么一起运行,要么在中间放一个短划线)。另一个想法是创建这些名称的列表,并有一个单独的循环来检查输入。我有另一个也许最好的想法是稍微重新设计它,并为名字和姓氏分类,然后是额外的名字类别。我想知道那里是否有更好的解决方案?
编辑:我意识到我不清楚我在问什么。我的问题不是在trie中添加两个单词短语,而是在有人输入名称时返回它们。在trie中,我将分割名字和姓氏,以便您可以搜索任何一个。因此,如果有人输入名字然后输入空格,我如何判断他们是否输入了名字的其余部分,或者他们现在是否输入了姓氏。
答案 0 :(得分:3)
为什么不让trie也包含带空格的名字?
获得候选人名单后,在空格中拆分每个候选人并显示第一个候选人......
答案 1 :(得分:0)
您是否有理由推出自己的自动填充脚本,而不是使用当前现有的脚本,例如YUI autocomplete? (即你只是为了好玩吗?等等。)
答案 2 :(得分:0)
如果您有办法解析双字名称,那么只需在您的trie中包含空格即可。但是,如果你无法确定什么是双字名称以及两个单独的单词是什么,并且你的trie不能足够大以容纳所有双字序列,那么你就有问题了。
解决此问题的一种简单方法是默认允许双字对,但如果在空格后有太多分支,则抛弃整个分支。这样,当第一个单词预测到第二个单词时,你将获得自动完成功能,但是当它可能是大量的东西时,你的trie将在一个单词的结尾处结束。
答案 3 :(得分:0)
如果您使用多行编辑器,我想最好选择自动完成项目将是一个单词。因此必须解析firstname,middlename和lastname并添加查找项。
对于(一行)文本框使用,您可以在搜索条件中添加空格(以及名字+空格+中间名+空格+姓氏图案)。