您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

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

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

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

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

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

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

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

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

SELECT * FROM products WHERE MATCH(product_name,product_Meta) AGAINST('shirt tshirt' WITH QUERY EXPANSION)
php 2022/1/1 18:36:32 有283人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶