栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

PHP / SQL-改进搜索功能/模糊搜索

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP / SQL-改进搜索功能/模糊搜索

您正在寻找具有QUERY
EXPANSION的全文本搜索

MySQL通过使用

LIKE
运算符和正则表达式来支持文本搜索。但是,当文本列很大并且表中的行数增加时,使用这些方法会有一些局限性:

  • 性能:MySQL必须扫描整个表以根据
    LIKE
    语句中的模式或正则表达式中的模式找到确切的文本。
  • 灵活的搜索:通过
    LIKE
    运算符和正则表达式搜索,很难进行灵活的搜索查询,例如,查找描述中包含汽车而不是经典产品的产品。
  • 相关性排名:无法指定结果集中的哪一行与搜索字词更相关。

由于这些限制,MySQL扩展了一个非常好的功能,即所谓的全文搜索。从技术上讲,MySQL从已启用的全文搜索列的单词创建索引,然后对该索引执行搜索。MySQL使用复杂的算法来确定与搜索查询匹配的行。

为此,将用于搜索的列必须为TEXT类型,并且索引必须为FULLTEXT类型,可以使用ALTER
TABLE
或CREATE
INDEX给出索引,如果您使用phpMyAdmin管理数据库,则可以通过到该表的结构,然后在该列的“操作”下单击“更多”,然后选择“全文本”。

之后,您可以使用MATCH
AGAINST语法执行搜索。MATCH()获取要搜索的列。AGAINST需要一个字符串来搜索,以及一个可选的修饰符,该修饰符指示要执行的搜索类型。

具有QUERY EXPANSION的全文本搜索:

在某些情况下,用户希望基于其所拥有的知识来搜索信息。用户使用他们的经验来定义关键字来搜索信息,并且通常这些关键字太短。

为了帮助用户根据太短的关键字查找信息,MySQL全文搜索引擎引入了一种称为查询扩展的概念。

查询扩展用于基于自动相关性反馈(或盲查询扩展)来扩展全文搜索的搜索结果。从技术上讲,使用查询扩展时,MySQL全文搜索引擎执行以下步骤:

  • 首先,MySQL全文搜索引擎查找与搜索查询匹配的所有行。
  • 其次,它检查搜索结果中的所有行并找到相关的单词。
  • 第三,它根据相关单词而不是用户提供的原始关键字再次执行搜索。

以下示例显示了如何搜索产品名称或元数据至少包含一个单词的产品(衬衫T恤)。

SELECt * FROM products WHERe MATCH(product_name,product_meta) AGAINST('shirt tshirt' WITH QUERY EXPANSION)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/391407.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号