【发布时间】:2012-11-16 19:04:26
【问题描述】:
我正在使用 java,并且有一个大型(~15000)组关键字(字符串),并且我有一个定期包含这些关键字的文档(字符串)。
我想查找文档中每次使用关键字的索引,优先选择较长的关键字(字符最多的关键字)。例如,如果我的关键字是“水”、“瓶子”、“喝了”和“水瓶”,而我的文档是“我从我的水瓶中喝了水”,我希望得到以下结果:
喝了两杯
16水瓶
我最初的尝试是使用 trie,并逐个字符地遍历文档,并且每当子字符串与关键字匹配时,记录初始索引。但是有些关键字是较长关键字的前缀(例如“水”和“水瓶”),代码永远不会找到较长的关键字,因为它会记录“水”的索引,然后重新开始。
如果重要,关键字可以包含小写字母、大写字母、空格、连字符和撇号(以及大小写问题)。
因此,我们将非常感谢您在查找最长关键字方面的任何帮助。谢谢。
【问题讨论】:
-
什么意思,要找最大的关键字?
-
最好发布一些代码并准确显示它没有做什么。
-
@AlanKrueger 我的代码还不能正常工作,我不知道它会有多少用处。我愿意使用任何数据结构,我只是认为 trie 的结构最适合逐字逐句。
-
Pattern/Matcher如何在您的文档中搜索模式/关键字? -
如果您的大型文档有很多不同的关键字,请考虑使用 SuffixTrees / SuffixArrays(我只是为您指出不同的方向进行调查)
标签: java string algorithm data-structures trie