【问题标题】:How does indexing help speed up FTS? [closed]索引如何帮助加快 FTS? [关闭]
【发布时间】:2011-12-13 00:38:19
【问题描述】:

我正在开发适用于 iOS 的应用程序,我 asked this questionan answer 让我看到一大堆与“全文搜索”相关的帖子。根据我所做的阅读,我可以猜测它与以某种方式搜索整组文本有关,而不是仅搜索关键字。

索引如何加速 FTS,为什么它比关键字搜索更具体?

【问题讨论】:

    标签: algorithm search definition


    【解决方案1】:

    关键字搜索基于通过其他方式(分析和分类文档的人或程序)分配给文档的关键字来搜索文档。全文搜索在整个文档中搜索您要查找的字词或短语。

    假设您正在搜索有关蒸汽火车的信息。关键字搜索只会找到已用关键字“steam”和“train”标记的文档。另一方面,全文搜索会查找文本中某处包含“steam”和“train”字样的文档。

    这是基本的区别。 Nacht 发布的 Wikipedia 文章是了解更多细节的好地方。

    【讨论】:

    • 那么索引在哪里发挥作用?
    • 这取决于实现,但是让我们考虑任何文本块都有单词分隔符和不必要的字符,对吧?所以让我们假设我们可以删除所有[,.?!/\"'!@#$%^&*()] 是吗?所以首先将所有这些解析出来,然后在每个空格上打断,然后在每个单词上使用 toLower,并为我们的源数组中的每个单词添加当前位置(到目前为止,你已经解析了你的方式,你无法弄清楚如何沿途保持粗略的位置?)到阵列。现在,我敢肯定,到目前为止,您至少已经看到了四个缺陷,所以请记住这些。这是索引的一种形式(跳转到一个单词)。
    • 真的,“索引在哪里发挥作用”答案是“你在索引什么?”
    • 正如维基百科文章所说,索引的目的是创建一个索引,说明每个单词在每个文档中的位置。搜索索引比使用每个查询搜索每个文档要快得多。 FTS 是一个相当复杂的话题——比我们在这里可以涵盖的要复杂得多。我建议阅读 Wikipedia 文章并搜索相关信息。 《管理千兆字节》这本书虽然已经过时了,但有一个相当不错的介绍以及一些可靠的详细信息。另见en.wikipedia.org/wiki/Inverted_index
    【解决方案2】:

    确切的意思是——简单地搜索文档中的所有文本,而不是关键字/元数据。

    http://en.wikipedia.org/wiki/Full_text_search

    【讨论】:

      猜你喜欢
      • 2015-01-19
      • 2013-08-19
      • 2017-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-17
      • 2021-01-15
      • 2023-03-08
      相关资源
      最近更新 更多