如何过滤在本例中的搜索结果
-
20-09-2019 - |
题
我有一个包含数千种产品的产品表。有些产品在不同的颜色可供选择。但是,当有人如“MP3播放器”查找我不想给他看每一个颜色,而不仅仅是球员与最畅销的颜色。
她是表布局(简化的):
ID | PRODUCT_NAME | COLOR | SALE_COUNT
===========================================
1 | Mp3 player red | red | 2
2 | Mp3 player gold | gold | 1
3 | Mp3 player black | black | 100
但是,当用户搜索“MP3播放器红色的”我想给他看,而不是一个黑红色的球员。使用“喜欢”操作执行搜索(啊,我知道lucene的,无论如何,我需要解决这一点)。
任何建议如何解决这个问题呢?我有几个想法,但他们都不似乎是一个很好的解决方案。 感谢,
PostgreSQL的db和java的用于创建的结果。
解决方案
只是由SALE_COUNT降序排列并仅选择第一个,如果我理解你的问题:
SELECT TOP 1 ID, PRODUCT_NAME, COLOR, SALE_COUNT
FROM table
WHERE PRODUCT_NAME LIKE '%' + @searchParam + '%'
ORDER BY SALE_COUNT DESC
一定要通过除去任何可能的SQL注入攻击第一消毒搜索参数。
编辑:
如果你使用的是Postgres,语法是把一个“LIMIT N”末,使:
SELECT ID, PRODUCT_NAME, COLOR, SALE_COUNT
FROM table
WHERE PRODUCT_NAME LIKE '%' + @searchParam + '%'
ORDER BY SALE_COUNT DESC
LIMIT 1
其他提示
SELECT *
FROM products
WHERE product_name LIKE 'mp3 player%'
ORDER BY
sale_count DESC
LIMIT 1
它将会像
SELECT TOP 1 (*) FROM table
WHERE PRODUCT_NAME LIKE 'mp3 player %'
ORDER BY SALE_COUNT DESC
所以,我们只选择最上面一行,有序,由SALE_COUNT降(这样最高的销售数量在顶部)
不隶属于 StackOverflow