mysql的搜索,在列上使用非序列词

xggvc2p6  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(254)

我有一个名为“products”的表,其中有产品名称,如“iphone5 with 1gb data”、“iphone5 with 10gb data”等。。。等等。。。
当用户使用搜索框来搜索这个产品时,我会做如下查询。。。

select *
 from products
 where product_name like '%USER_SEARCH_KEY%'
 limit 5;

现在,当我搜索“iphone5 with”时,我得到了包含“iphone5 with”单词的行。但当我搜索“iphone51gb”时,却找不到任何记录。。。我必须输入“iphone5 1gb”才能得到这个结果。当我搜索“iphone51gb”关键字时,有没有什么方法可以得到结果集上的记录?
提前谢谢。

syqv5f0l

syqv5f0l1#

你可以在搜索字符串中使用1gb

select * from t1 where  item like '%1GB%'

否则,必须使用全文搜索,但要使用它,必须在表中实现它

t2a7ltrp

t2a7ltrp2#

您有3种方法可以解决此任务:
您可以创建全文索引并按其进行搜索
您可以按以下方式中断对单词的用户搜索查询并进行数据库查询: SELECT * FROM products WHERE product_name LIKE '%iphone5%1gb%' limit 5 你可以使用搜索引擎,例如ElasticSearch。我觉得这样更好

相关问题