gpt4 book ai didi

mysql - 即使在 Mysql 中搜索的字符串不准确,如何进行搜索匹配

转载 作者:行者123 更新时间:2023-11-29 07:26:12 26 4
gpt4 key购买 nike

我习惯于使用 Postgres。使用 postgres,我能够通过安装 the pg_trgm trigram extension 进行更“智能的搜索”然后用户可能会错过像“aple”这样的字母,或者将搜索匹配的字母“appel”放在错误的位置。对于 Mysql,我不知道该使用哪个功能。有人可以给我指路吗?

我的查询是这样的:

   select *,
case when titulo like '%pneu%' then 1 else 0 end as rank_titulo,
case when descricao like '%pneu%' then 1 else 0 end as rank_descricao,
case when tag like '%pneu%' then 1 else 0 end as rank_tag
from produto where titulo like '%pneu%'
or descricao like '%pneu%' or
tag like '%pneu%' order by rank_titulo desc, rank_descricao desc,
rank_tag desc ;

我不在乎用户是否输入了搜索应该匹配的“pineu”、“pneo”、“penu”。

我不想要解决我问题的工作代码,我只想知道我应该使用的功能,一些演示代码将不胜感激。

最佳答案

与 postgreSQL 的 trigram 扩展最接近的 MySQL 特性是 FULLTEXT searching .

您可能会使用这种语法。

...WHERE MATCH(titulo, descricao, tag) AGAINST('pneu' IN NATURAL LANGUAGE MODE)...

您的表中需要一个 FULLTEXT 索引才能完成这项工作。

CREATE FULLTEXT INDEX ft ON produto(titulo, descricao, tag);

注意几件事:默认情况下,FULLTEXT 仅适用于三个或更多字母的单词,而自然语言模式在小表格上的效果很奇怪。你可以改变这些东西。您可能还需要添加 stopwords用您的语言(葡萄牙语?)。

另请注意,它通常会违反直觉。您可能会发现自己在问“为什么要那样做?”经常。

关于mysql - 即使在 Mysql 中搜索的字符串不准确,如何进行搜索匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53631227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com