繁体   English   中英

带有 Java 的句子自动完成

[英]Sentence Auto-Complete with Java

假设我有大约 1000 个句子要在用户输入字段时作为建议提供。

我正在考虑lucene in memory search ,然后将结果输入到suggestions set

运行搜索的triggerspace charexit from the input field

我打算将它与GWT一起使用,这样客户端就可以从服务器获取结果。

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

以前有没有人做过这样的事情? 是否已经有我可以使用的库?

我正在研究类似的解决方案。 这篇题为Effective Phrase Prediction的论文对我很有帮助。 您还必须优先考虑建议

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

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

如果你想做关键词建议而不是“完成句子”建议,那么开销取决于你的句子有多长,以及句子中有多少独特的词。 如果这个集合足够小,您将能够使用HashMap<String,Set<String>> ,在其中将关键字映射到包含它们的句子。 然后,您可以通过与集合相交来处理多字查询。

在这两种情况下,我可能首先将所有字符串转换为小写(假设这在您的应用程序中是合适的)。 我认为这两种解决方案都不会扩展到数十万条建议。 其中任何一个都做你想做的事吗? 如果您愿意,很乐意提供代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM