通配符搜索和全文检索的区别?

通配符搜索和全文检索的区别?

通配符搜索和全文检索是两种不同的搜索方法,它们在目的、实现原理和适用场景上有明显的区别。

  1. 目的和适用场景:

    • 通配符搜索:

      • 目的是根据用户提供的模式进行模糊匹配,可以使用通配符(如 %_)代表任意字符或字符序列。
      • 适用于需要精确匹配或模糊匹配的情况,但通常效率较低,特别是当通配符出现在搜索模式的起始位置时。
      • 常用于查找特定模式的字符串,例如文件名匹配或根据特定字符模式查询数据库。
    • 全文检索:

      • 目的是根据用户提供的关键词或短语来搜索文本内容,返回与关键词相关的文档或记录。
      • 适用于大文本数据集,如文章、文档、博客等,以及需要快速搜索和匹配关键词的场景。
      • 全文检索技术会分析文本内容,提取关键词,并构建索引,以实现快速、高效的搜索。
  2. 实现原理:

    • 通配符搜索:

      • 通配符搜索通常依赖于正则表达式或特定的匹配算法,如逐字符比较或特定通配符匹配算法。
      • 正则表达式可以实现通配符的模糊匹配,但通常效率较低,特别是对于开头是通配符的情况。
    • 全文检索:

      • 全文检索通常使用倒排索引(Inverted Index)技术,该索引将文档中的单词映射到文档列表,以便快速定位包含特定单词的文档。
      • 倒排索引会存储单词、出现位置等信息,以支持高效的关键词搜索。搜索时,数据库可以快速定位含有关键词的文档。
  3. 性能:

    • 通配符搜索通常较慢,尤其是当通配符出现在模式的开始位置时,因为需要遍历大量可能的匹配。
    • 全文检索通常性能较高,特别是基于倒排索引的实现,可以快速定位关键词对应的文档。

综上所述,通配符搜索和全文检索具有不同的目的、实现原理和适用场景。通配符搜索适用于模糊匹配特定模式的场景,而全文检索适用于文本内容的高效搜索。

应用场景

说白了,就是一个是小数据量,一个是大数据量。

小数据量是多小?标题,就几个字的那种。名字,也是几个字。这种就适合。其实就是单列文本数据。

大数据量是,文章内容,几百几千字。当然,也可以是标题。所以,它是包含多个字段,即多列,都可以搜索。另外,搜索的是所有文章内容,这个倒是和通配符搜索没有区别,因为通配符也是搜索所有文章标题。

实现原理

一个是基于正则表达式,或者是字符串查找算法。

一个是基于索引,具体的话是倒排索引。完全不是一个思路。为什么要换个思路?为什么要索引?因为快,就一个字。全文检索里的倒排索引,和数据库的索引键加索引,本质作用都是为了快,都一样,只不过是两种不同类型的索引。

性能

一个慢。

一个快。

搜索功能分类

字符串查找,主要是查找是否包含子字符串

字符串查找是通配符搜索吗?

字符串查找和通配符搜索有些相似,但它们不完全一样。

字符串查找 是指在一个字符串或文本中寻找特定的子字符串、字符序列或关键词。这种查找可以是精确匹配,也可以是模糊匹配。通常,它是直接查找是否包含特定的字符或字符序列。

通配符搜索 则是一种模糊匹配方法,通常涉及使用通配符(如 %_)来代表零个或多个字符或单个字符。通配符搜索是字符串查找的一种特殊情况,它允许更灵活的匹配模式,可以用于模糊匹配。

举个例子:

  • 字符串查找:在字符串 "hello world" 中查找是否包含子字符串 "hello"。
  • 通配符搜索 :在字符串 "hello world" 中使用通配符 %world 进行匹配,以查找以 "world" 结尾的字符串。

通配符搜索可以实现更高级的模糊匹配,但通常会牺牲一些性能,特别是当通配符模式比较复杂时。在实际应用中,选择合适的方法取决于你的具体需求,包括匹配的灵活性和性能要求。


字符串查找,说白了就是:包含关系,是否包含某个字符串。

而,通配符更复杂,有各种匹配规则,比如以什么结尾,以什么开头,是否包含数字,是否包含字母等等。所以,底层是正则表达式。

数据库 =,基于索引

这个是比较值是否一样,而且必须要完全一样。

只不过一般会加索引,提高查询速度。

通配符搜索,模糊查询

数据库 like 是通配符搜索吗

字符串查找和通配符搜索有些相似,但它们不完全一样。

字符串查找 是指在一个字符串或文本中寻找特定的子字符串、字符序列或关键词。这种查找可以是精确匹配,也可以是模糊匹配。通常,它是直接查找是否包含特定的字符或字符序列。

通配符搜索 则是一种模糊匹配方法,通常涉及使用通配符(如 %_)来代表零个或多个字符或单个字符。通配符搜索是字符串查找的一种特殊情况,它允许更灵活的匹配模式,可以用于模糊匹配。

举个例子:

  • 字符串查找:在字符串 "hello world" 中查找是否包含子字符串 "hello"。
  • 通配符搜索 :在字符串 "hello world" 中使用通配符 %world 进行匹配,以查找以 "world" 结尾的字符串。

通配符搜索可以实现更高级的模糊匹配,但通常会牺牲一些性能,特别是当通配符模式比较复杂时。在实际应用中,选择合适的方法取决于你的具体需求,包括匹配的灵活性和性能要求。

全文搜索,基于倒排索引

这个最常见的就是搜索引擎。

如果你做过网站,你的网站,一般也要做站内搜索功能,其实也是全文检索,因为是查找你整个网站的数据。

相关推荐
web_learning_3213 小时前
信息收集常用指令
前端·搜索引擎
学习使我快乐——玉祥12 小时前
es查询语法
大数据·elasticsearch·搜索引擎
txtsteve16 小时前
es由一个集群迁移到另外一个集群es的数据迁移
大数据·elasticsearch·搜索引擎
苹果cms插件专题17 小时前
苹果CMS插件:优化蜘蛛访问内容,提升百度收录率
搜索引擎·百度
Lill_bin1 天前
深入理解ElasticSearch集群:架构、高可用性与数据一致性
大数据·分布式·elasticsearch·搜索引擎·zookeeper·架构·全文检索
RwTo1 天前
Elasticsearch 聚合搜索
大数据·elasticsearch·搜索引擎·全文检索
檀越剑指大厂1 天前
【Elasticsearch系列六】系统命令API
大数据·elasticsearch·搜索引擎
Lill_bin3 天前
ElasticSearch底层原理解析
大数据·分布式·elasticsearch·搜索引擎·zookeeper·云原生·jenkins
Chen_leilei3 天前
ES机制原理
大数据·elasticsearch·搜索引擎
西岭千秋雪_4 天前
谷粒商城のElasticsearch
java·大数据·服务器·spring boot·elasticsearch·搜索引擎