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

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

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

  1. 目的和适用场景:

    • 通配符搜索:

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

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

    • 通配符搜索:

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

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

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

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

应用场景

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

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

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

实现原理

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

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

性能

一个慢。

一个快。

搜索功能分类

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

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

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

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

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

举个例子:

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

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


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

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

数据库 =,基于索引

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

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

通配符搜索,模糊查询

数据库 like 是通配符搜索吗

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

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

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

举个例子:

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

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

全文搜索,基于倒排索引

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

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

相关推荐
媒体人88819 小时前
孟庆涛GEO优化实战技巧:语义熵优化—提升内容密度与AI解析效率
人工智能·搜索引擎·生成式引擎优化·geo优化
Elastic 中国社区官方博客1 天前
AutoOps 实际应用:调查 ECK 上的 Elasticsearch 集群性能
大数据·数据库·elasticsearch·搜索引擎·全文检索
不平衡的叉叉树1 天前
Es索引文档全量更新与迁移
大数据·elasticsearch·搜索引擎
better_liang2 天前
每日Java面试场景题知识点之-Elasticsearch
java·elasticsearch·搜索引擎·面试·性能优化
Wang's Blog2 天前
Elastic Stack梳理:深入解析Packetbeat网络抓包与Heartbeat服务监控
网络·elasticsearch·搜索引擎
Zilliz Planet2 天前
如何优化英伟达CAGRA,实现GPU建图+CPU查询,成本效率兼顾| Milvus Week
人工智能·算法·搜索引擎·milvus
半夏知半秋2 天前
kibana介绍与部署(Windows详细版)
大数据·运维·windows·学习·搜索引擎·全文检索
Elastic 中国社区官方博客2 天前
Jina-VLM:小型多语言视觉语言模型
数据库·人工智能·elasticsearch·搜索引擎·ai·语言模型·jina
魔乐社区2 天前
基于msModelslim量化实操--上手版
搜索引擎
Wang's Blog3 天前
Elastic Stack梳理:Logstash Filter 插件深度解析与工程实践指南
搜索引擎·elastic search