Как сделать поиск товаров более эффективным? - PullRequest
0 голосов
/ 26 февраля 2019

Я использую MySQL в качестве серверной части для проекта электронной коммерции. На первом экране я показываю результат, пока пользователь что-то ищет, и с этими результатами пользователь может выбрать любой один результат и на основе выбора пользователь получает все продукты, относящиеся к выбранному.результат.

Пример: Экран 1 (из панели поиска): пользователь ищет «tropicana», тогда набор результатов будет следующим:
1st: tropicana mix фруктовый сок в соках (категория)
2nd:tropicana яблочный сок в соках (категория)
3-й: tropicana апельсиновый сок в соках (категория)
4-й: tropicana ананасовый сок в соках (категория)
5-й: tropicana guava сок в соках (категория) и все другиеПродукты, относящиеся к tropicana, независимо от какой-либо категории

Экран 2 (После выбора «фруктовый сок ананаса tropicana»): пользователь получает наборы результатов на основе названия выбранного продукта и его категории (на этом экране я использовал нумерацию страниц):

1-й: фруктовый сок Tropicana Mix со всеми основными деталями
2-й: яблочный сок Tropicana всо всеми основными деталями
3-й: апельсиновый сок Тропикана со всеми основными деталями
4-й: ананасовый сок Тропикана со всеми основными деталями
5-й: сок гуавы Тропикана со всеми основными деталями

Но что я хочув том, что пользователь должен сначала просмотреть сведения о выбранном продукте, а затем все другие связанные продукты:

Пример:
1-й: сок ананаса tropicana со всеми основными деталями
2-й: сок яблока tropicana со всеми основными деталями
3-й: апельсиновый сок tropicana со всеми основными деталями
4-й: фруктовый сок смеси tropicana со всеми основными деталями
5-й: сок гуавы tropicana со всеми основными деталями

Я использовал этот sql Query:

("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 голосов
/ 26 февраля 2019
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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...