使用Java自动完成句子

可以说,当用户在字段中键入内容时,我想提供大约1000个句子作为建议.

我正在考虑在内存搜索中运行lucene,然后将结果输入建议集.

运行搜索的触发器将是空格字符,并从输入字段退出.

我打算将其与GWT一起使用,以便客户端仅从服务器获取结果.

我不想做谷歌在做什么;他们在其中完成每个单词,然后就每组关键字提出建议.我只想检查关键字并据此提出建议.有点像当我在*上输入问题的标题时.

有人做过这样的事吗?我已经可以使用图书馆了吗?

解决方法:

如果您只有1000个句子,则可能不需要像Lucene这样强大的索引器.我不确定您要执行“完成句子”建议还是“建议其他具有相同关键字的查询”建议.这是两种解决方案:

假设您要完成用户输入的句子,则可以将所有字符串放入SortedSet,然后使用tailSet方法获取比输入字符串“更大”的字符串列表(因为string comparator认为以字符串B开头的更长的字符串A比B更大).然后,遍历tailSet返回的集合的前几个条目,以创建一组字符串,其中第一个inputString.length()字符与输入字符串匹配.只要第一个inputString.length()字符与输入字符串不匹配,就可以停止迭代.

如果您要提供关键字建议而不是“完成句子”建议,那么开销取决于您的句子有多长时间以及句子中有多少个唯一单词.如果此集合足够小,则可以使用HashMap< String,Set< String>&gt ;,将关键字映射到包含它们的句子.然后,您可以通过相交集合来处理多字查询.

在这两种情况下,我都可能首先将所有字符串都转换为小写(假设在您的应用程序中合适).我认为这两种解决方案都不会扩展到成千上万的建议.这些都可以做你想要的吗?如果您愿意,很高兴提供代码.

上一篇:【Python第25课】字符串的分割与拼接


下一篇:mysql5.7密码问题