我有一本庞大的字典,其中包含约120万个字符串。作为输入,我将得到一个句子,我需要检查输入句子的每个单词是否存在于字典中?
对我而言,性能是重中之重,因此我希望将此字典保留在内存中。我想在不到一毫秒的时间内完成字典查找。请提出我该如何实现?现有的任何外部API都可以这样做吗?
最佳答案
因此,您只需要字典中的一组单词,然后查看它是否包含句子中的一组单词。
Set<String> dictionaryIndex = new HashSet<>();
Set<String> sentence = new HashSet<>();
if (!dictionaryIndex.containsAll(sentence)) {
...
但是,如果您想做更多事情,请考虑使用数据库,也许是嵌入式内存数据库,例如H2或Derby。然后,您可以做更多的事情,查询将是:
SELECT COUNT(*) FROM dictionary WHERE word IN('think', 'possitive', 'human')
您甚至可以考虑使用拼写库。他们保留较小的字典并使用词干:学习,学习,学习,学习的“学习”。