我有一个搜索的词是'samsung s3',而我在数据库中的产品名称是'samsung galaxy s3'。
我的查询是:
select * from products where status=1 and name like '%samsung s3%'
所以我没有得到任何结果,我们是否可以在名称字符串中搜索单词。
答案 0 :(得分:1)
您必须使用关键字。可能在您保存产品名称以便能够使用所有关键字进行搜索时,请为要搜索的所有内容添加单独的关键字。现在这对我来说是最好的方式。
例如:对于Samsung Galaxy s3,我会在关键字表中保存3个条目,即:Samsung,Galaxy,s3
否则,您可以拆分搜索字符串并搜索数据库中的每个单词。
例如:
select * from products where status=1 and (name like '%samsung%' or name like '%s3%')
MS SQL中有一个全文搜索。它可能在MySQL或其等价物中可用。
编辑:搜索并确认MySQL存在全文搜索。这是一个link 但要注意全文搜索很慢。特别是如果它是一个大型数据库。
答案 1 :(得分:0)
MySql具有纯文本和varchar列的自然语言搜索功能。
https://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html
你的想法是:
select * from products where status=1 MATCH (name) AGAINST ('samsung s3');
答案 2 :(得分:0)
在名称字段
上创建全文索引ALTER TABLE products ADD FULLTEXT (name);
运行查询: -
SELECT * FROM products WHERE status=1 AND name MATCH(name) AGAINST ('+samsung +s3' IN BOOLEAN MODE);