我有一个名为“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”关键字时,有没有什么方法可以得到结果集上的记录?
提前谢谢。
2条答案
按热度按时间syqv5f0l1#
你可以在搜索字符串中使用1gb
否则,必须使用全文搜索,但要使用它,必须在表中实现它
t2a7ltrp2#
您有3种方法可以解决此任务:
您可以创建全文索引并按其进行搜索
您可以按以下方式中断对单词的用户搜索查询并进行数据库查询:
SELECT * FROM products WHERE product_name LIKE '%iphone5%1gb%' limit 5
你可以使用搜索引擎,例如ElasticSearch。我觉得这样更好