2011-03-10 64 views
0

我正在JavaScript中实现一个自动完成脚本。但是,其中一些名称是两个词的名称,中间有一个空格。你可以用什么样的算法来处理它。我正在使用trie来存储名称。
我能想出的唯一解决方案就是说不能使用两个单词名称(要么将它们放在一起,要么放在中间)。另一个想法是创建这些类型的名称列表,并有一个单独的循环来检查输入。我有的另一个可能是最好的想法是稍微重新设计它,并为姓和名分类,然后是一个额外的名称类别。我想知道是否有更好的解决方案?如何自动完成包含空格的名称?

编辑︰我意识到我不是很清楚我在问什么。我的问题是没有添加两个单词短语到trie,但当有人输入名字时返回它们。在特里我分裂的名字,以便您可以搜索。因此,如果某人输入了名字和空格,我将如何判断他们是否正在输入名字的其余部分,或者如果他们正在输入姓氏。

+4

为什么空间不同于任何其他角色? – 2011-03-10 02:54:57

回答

3

为什么不能使用空格来包含名称?

一旦你有候选人名单,分裂他们每个人对空间和展示的第一个标记...

0

是否有一个原因是你正在滚动自己的自动完成脚本,而不是使用现有的脚本,如YUI autocomplete? (即你只是为了好玩吗?等等)

+0

我在应用程序中使用它,但我也在做它的乐趣,因为我喜欢弄清楚这样的工作是如何工作的。 – qw3n 2011-03-10 04:18:01

0

如果你有一个方法来解析这两个词的名字,然后就包括你的空间线索。但是,如果你不能确定什么是两个单词的名称和什么是两个单独的单词,并且你的单词不能足够大以容纳所有双字序列,那么你有问题。

解决这个问题的一个简单方法是默认允许双字对,但是如果在空格后有太多的分支,请丢弃整个分支。这样,当第一个单词对第二个单词有预测性时,你会得到自动完成,但是当它可能是大量的东西时,你的单词将在单个单词的末尾结束。

0

如果你使用多行编辑器,我想最好的选择自动完成项目将是一个字。所以必须解析名字,中间名和姓氏并添加一个查找项目。

对于(一行)文本框使用,您可以在搜索条件中添加空格(以及名字+空格+中间名+空格+姓氏模式)。

相关问题