【问题标题】:Problem: Need to look up a sentence in a database of millions of sentences?问题:需要在数百万个句子的数据库中查找一个句子?
【发布时间】:2011-05-20 18:06:15
【问题描述】:

因此,我将在数据库中存储数百万个句子,每个句子都有一个作者。我需要能够有效地搜索句子并返回作者。现在,我希望能够在这句话中拼错一个单词或忘记一两个单词,并且让应用程序仍然能够匹配(模糊式)。谁能指出我正确的方向?谷歌是如何做到这一点的?因为我可以在谷歌上搜索歌词,它会返回带有歌词的歌曲?我想做同样的事情吗?

谢谢大家。

如果模糊使事情变得过于复杂,那么我可以只处理一个有效的句子搜索。

【问题讨论】:

    标签: algorithm search full-text-search search-engine


    【解决方案1】:

    如果您使用 Java 编写代码,可以试试Lucene

    不应该真的是“文档”和作者而不是单个句子吗?

    【讨论】:

    • Lucene 可以与数据库集成吗?
    【解决方案2】:

    全文搜索检查inverted index数据结构。

    这就是搜索引擎的做法

    samples of code

    更新: 如果您正在开发分布式系统,请检查 Hadoop - Goolge 的 MapReduce 的开源替代方案

    【讨论】:

      【解决方案3】:

      SQL Server 或 Oracle 上的全文索引很可能是您开箱即用的功能。他们可以变得模糊,使用词根和其他聪明的东西。 我无法评论其他数据库引擎,尽管谷歌快速显示大多数都会有类似的东西。出于某种原因,我希望它们在模糊性方面受到更多限制。

      【讨论】:

        【解决方案4】:

        确实,模糊匹配不是一件简单的事情,虽然有些数据库实现了某种模糊搜索,但根据使用的方法和您的数据,您的结果可能会有所不同。这是一个解释 SQL 服务器中的模糊搜索的链接

        http://msdn.microsoft.com/en-us/magazine/cc163731.aspx

        至于句子搜索,大多数数据库引擎都实现了您可能想要查看的全文搜索/索引...它在性能和存储方面进行了权衡,但您可能想要查看它

        【讨论】:

          【解决方案5】:

          谷歌是如何做到这一点的?

          使用倒排索引。详细信息是专有的,但您可以打赌,内存中有大量的索引复制和存储等,以便它们可以处理每秒获得的大量搜索请求。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-12-11
            • 1970-01-01
            • 1970-01-01
            • 2011-07-06
            • 1970-01-01
            • 2011-05-14
            • 2021-12-10
            相关资源
            最近更新 更多