如何使我的产品搜索更有效率?

时间:2019-02-26 11:37:24

标签: mysql node.js search full-text-search e-commerce

我正在使用MySQL作为电子商务项目的后端。在第一个屏幕中,我显示用户搜索内容时的结果,用户可以使用这些结果选择任何一个结果并基于选择,获得与选定内容相关的所有产品结果。

示例: 屏幕1(在搜索栏中):用户搜索“ tropicana”,则结果集将为:
第一名:tropicana将果汁与果汁混合(类别)
第二名:果汁中的tropicana苹果汁(类别)
第三名:果汁中的tropicana橙汁(类别)
第四名:tropicana菠萝汁(类别)
第五名:果汁(类别)和所有其他与tropicana相关的产品中的tropicana番石榴汁,无论任何类别

屏幕2(选择“ tropicana菠萝汁”之后):用户根据所选的产品名称及其类别获得结果集(我在此屏幕中使用了分页):

第一名:tropicana将果汁与所有基本细节混合在一起
第二名:tropicana苹果汁,所有基本细节
第三名:tropicana橙汁,所有基本细节
第四:tropicana菠萝汁的所有基本细节
第五名:tropicana番石榴汁,所有基本细节

但是我想要的是用户应该首先看到所选产品的详细信息,然后再看到所有其他相关产品:

示例:
第一个:tropicana菠萝汁的所有基本细节
第二名:tropicana苹果汁,所有基本细节
第三名:tropicana橙汁,所有基本细节
第四名:tropicana将果汁与所有基本细节混合在一起
第五名:tropicana番石榴汁,所有基本细节

我已使用此sql查询:

("select p.id,p.product_name,p.rating,p.rating_count,p.product_mrp from product p
    INNER JOIN product_category_mapping pcm ON p.id = pcm.product_id
    where (p.product_name like concat('",in_product_name,"','%') or p.product_name like concat('%','",in_product_name,"','%')) 
    order by p.",in_order_by," ",in_order_type," limit ", var_offset,",",var_limit);

有人可以为此建议什么好选择吗?

1 个答案:

答案 0 :(得分:1)

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(id SERIAL PRIMARY KEY
,product VARCHAR(255) NOT NULL 
);

INSERT INTO my_table (product) VALUES
('tropicana pineapple juice'),
('tropicana apple juice'),
('tropicana orange juice'),
('tropicana mix fruit juice'),
('tropicana guava juice'),
('jolt pineapple juice'),
('jolt apple juice'),
('jolt orange juice'),
('jolt mix fruit juice'),
('jolt guava juice'),
('duff pineapple juice'),
('duff apple juice'),
('duff orange juice'),
('duff mix fruit juice'),
('duff guava juice'),
('acme pineapple juice'),
('acme apple juice'),
('acme orange juice'),
('acme mix fruit juice'),
('acme guava juice');

ALTER TABLE my_table ADD FULLTEXT(product);

SELECT *
     , MATCH(product) AGAINST('tropicana pineapple') x 
  FROM my_table;
+----+---------------------------+-----------------+
| id | product                   | x               |
+----+---------------------------+-----------------+
|  1 | tropicana pineapple juice | 2.4020363687754 |
|  2 | tropicana apple juice     | 1.0619741682407 |
|  3 | tropicana orange juice    | 1.0619741682407 |
|  4 | tropicana mix fruit juice | 1.0619741682407 |
|  5 | tropicana guava juice     | 1.0619741682407 |
|  6 | jolt pineapple juice      | 1.3400622005347 |
|  7 | jolt apple juice          |               0 |
|  8 | jolt orange juice         |               0 |
|  9 | jolt mix fruit juice      |               0 |
| 10 | jolt guava juice          |               0 |
| 11 | duff pineapple juice      | 1.3400622005347 |
| 12 | duff apple juice          |               0 |
| 13 | duff orange juice         |               0 |
| 14 | duff mix fruit juice      |               0 |
| 15 | duff guava juice          |               0 |
| 16 | acme pineapple juice      | 1.3400622005347 |
| 17 | acme apple juice          |               0 |
| 18 | acme orange juice         |               0 |
| 19 | acme mix fruit juice      |               0 |
| 20 | acme guava juice          |               0 |
+----+---------------------------+-----------------+
20 rows in set (0.00 sec)