【问题标题】:Searching for Substring in Growing Data Structure of Strings在不断增长的字符串数据结构中搜索子字符串
【发布时间】:2012-10-29 22:25:38
【问题描述】:

在 Java 中,最快 在一个增长 字符串列表中搜索单词或子字符串的方法是什么?

例如,如果我有一个包含十个单词的列表,并且我每五分钟在该列表中搜索一个用户输入的单词,并且该列表每分钟增加一个单词,那么会发生什么?是存储这些单词的最佳数据结构吗?

我们实际上正在做的是……在检索“关键字”时,程序必须根据该关键字搜索要响应的短语,但短语列表不断增长。阅读关键字,解析每个短语,然后选择一个短语需要很长时间。我们当前的算法目前在n^3,这是不合适的。

Java 中是否存在有助于提高效率的数据结构或排序/搜索算法?

【问题讨论】:

    标签: java algorithm search data-structures


    【解决方案1】:

    对于庞大而艰巨的搜索任务,我总是使用Merge Sort。您的列表每分钟都在增长的事实不应该成为算法的问题。您可以在查找所需单词时将其与另一个检查器结合使用。实际上,一旦您对第一个列表进行了排序,当您收到每个元素时,只需将每个元素插入它应该在列表中的位置,而不是仅在开始搜索时查看数据,这可能更有意义。

    假设您的增长率不是很高,以这种方式对列表进行排序将大大提高您的绩效。

    【讨论】:

      【解决方案2】:

      如果仅存储链接在 HashMap 中的关键字和短语还不够,我建议继续使用短语的倒排索引。在这种情况下,Apache Lucene 可能是实现此功能的选择。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-03
        • 1970-01-01
        • 2019-10-06
        • 1970-01-01
        相关资源
        最近更新 更多