首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >全文搜索与全文搜索相比有什么不同

全文搜索与全文搜索相比有什么不同
EN

Stack Overflow用户
提问于 2008-10-22 07:00:40
回答 6查看 81.4K关注 0票数 158

我刚刚读了一篇用SQL写的关于“全文搜索”的文章。

我只是想知道FTS和LIKE有什么不同。我确实读了几篇文章,但找不到任何能很好地解释它的东西。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-10-22 07:08:04

一般来说,在“精确度”和“召回率”之间存在权衡。高精度意味着呈现更少的不相关结果(没有假阳性),而高召回率意味着缺少更少的相关结果(没有假阴性)。使用LIKE操作符可以为您提供100%的精确度,并且在召回方面没有任何让步。全文搜索工具为您提供了很大的灵活性,可以调低精度以提高查全率。

大多数全文搜索实现都使用“倒排索引”。这是一个索引,其中关键字是单个术语,关联值是包含该术语的记录集。全文搜索被优化以计算这些记录集的交集、并集等,并且通常提供排名算法来量化给定记录与搜索关键字的匹配程度。

SQL LIKE操作符的效率可能非常低。如果将其应用于未编制索引的列,则将使用完全扫描来查找匹配项(就像对未编制索引的字段的任何查询一样)。如果对列进行了索引,则可以对索引键执行匹配,但效率远远低于大多数索引查找。在最坏的情况下,LIKE模式将具有需要检查每个索引键的前导通配符。相比之下,许多信息检索系统可以通过预编译选定字段中的后缀树来支持前导通配符。

全文搜索的其他典型功能包括

鼠标词法分析或标记化-将一块非结构化文本分解为单独的单词、短语和特殊的tokens

  • morphological分析,或者词干提取-将给定词的变体分解为一个索引项;例如,将“”和“
  • ”或“”和“
    • ”视为相同的相似度查询字符串

    匹配记录的相似性

票数 193
EN

Stack Overflow用户

发布于 2008-10-22 07:04:45

FTS涉及对文本字段中的单个单词进行索引,以便快速搜索多条记录。使用LIKE仍然需要在字段中进行字符串搜索(线性或类似的)。

票数 42
EN

Stack Overflow用户

发布于 2016-03-03 15:04:29

MySQL从启用的全文搜索列中的单词创建索引,并对该索引执行搜索。MySQL使用一种复杂的算法来确定与搜索查询匹配的行。

另外,来自this SO answer

全文搜索有几个优点。

索引:

类似于:

Foo LIKE '%Bar';

无法利用索引。它必须查看每一行,并查看是否匹配。然而,全文索引可以。事实上,全文索引可以在匹配单词的顺序、这些单词在一起的距离等方面提供更多的灵活性。

词干分析:

全文搜索可以搜索词干。如果你搜索run,你可以得到"ran“或"running”的结果。大多数全文引擎都有各种语言的词干字典。

加权结果:

全文索引可以包含多个列。例如,您可以搜索“桃派”,索引可以包括标题、关键字和正文。与标题匹配的结果可以加权更高,相关性更高,并且可以排序以显示在顶部附近。

Disadvantages:

全文索引可能很大,比标准B树索引大很多倍。出于这个原因,许多提供数据库实例的托管提供商禁用了这一功能,或者至少对其收取额外费用。例如,据我所知,Windows Azure不支持全文查询。

全文索引的更新速度也可能较慢。如果数据更改很多,那么与标准索引相比,更新索引可能会有一些滞后。

票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/224714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档