Py学习  »  DATABASE

基于非序列词的MySQL类搜索

user2301765 • 6 年前 • 1448 次点击  

我有一个名为“产品”的表,其中有产品名称,如“1GB数据的iPhone5”、“10GB数据的iPhone5”等…等等…

当用户使用搜索框搜索此产品时,我会进行如下查询…

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

现在,当我用“iphone5”搜索“iphone5”时,会得到其中包含“iphone5 with”单词的行。但当我搜索“iphone5 1gb”时,没有找到任何记录…我必须输入“1GB的iPhone5”才能得到这个结果。当我搜索“iphone5 1gb”关键字时,是否也可以获得结果集的记录?

事先谢谢。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30478
 
1448 次点击  
文章 [ 2 ]  |  最新文章 6 年前
Zaynul Abadin Tuhin
Reply   •   1 楼
Zaynul Abadin Tuhin    6 年前

搜索字符串中只能使用1GB

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

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

JIJOMON K.A Maxim Fedorov
Reply   •   2 楼
JIJOMON K.A Maxim Fedorov    6 年前

您有三种方法可以解决此任务:

  1. 你可以创造 full-text index and search by it
  2. 您可以中断对单词的用户搜索查询,并使数据库查询如下所示:

    SELECT * FROM products WHERE product_name LIKE '%iphone5%1gb%' limit 5

  3. 您可以使用搜索引擎,例如弹性搜索。我觉得这样比较好