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

2023年 10月 5日 35.3k 0

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

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

  • 目的和适用场景:

    • 通配符搜索:

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

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

    • 通配符搜索:

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

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

    • 通配符搜索通常较慢,尤其是当通配符出现在模式的开始位置时,因为需要遍历大量可能的匹配。
    • 全文检索通常性能较高,特别是基于倒排索引的实现,可以快速定位关键词对应的文档。
  • 综上所述,通配符搜索和全文检索具有不同的目的、实现原理和适用场景。通配符搜索适用于模糊匹配特定模式的场景,而全文检索适用于文本内容的高效搜索。

    应用场景

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

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

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

    实现原理

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

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

    性能

    一个慢。

    一个快。

    搜索功能分类

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

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

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

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

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

    举个例子:

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

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

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

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

    数据库 =,基于索引

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

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

    通配符搜索,模糊查询

    数据库 like 是通配符搜索吗

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

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

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

    举个例子:

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

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

    全文搜索,基于倒排索引

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

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

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论