gpt4 book ai didi

php - 使用 php 进行分面搜索

转载 作者:行者123 更新时间:2023-11-29 06:36:44 26 4
gpt4 key购买 nike

有没有办法在没有 solr、lucene 等的情况下进行分面搜索?只有 php、MySQL 和 Javascript。我试图在分类网站上实现,但失败了。问题是尝试过滤属性表时。结构如下:

表项:

id    description user_id
1 my car 3
2 dream car 3
3 New car 3
4 Old car 4

表元字段:

id     meta name   
1 Make
2 Model
3 Color
4 Car Type
5 Interior Color

表项元:

item_id    field_id     meta_value
1 1 BMW
1 2 3Series
1 3 White
1 4 Coupe
1 5 Black
2 1 BMW
2 2 2Series
2 3 Black
2 4 Coupe
2 5 Grey
3 1 Honda
3 2 Civic
3 3 Red
3 4 Sedan
3 5 Black

现在我想过滤是否有人选择黑色 BMW,但如果我使用 IN 则给出全黑或 BMW。但我想要 AND 条件相同。如果您知道分面搜索,那么您可以轻松地理解我的意思。我想查询以对上面的表结构执行相同的操作。

**Addition:**

我还需要显示搜索和列出的每个属性的计数。喜欢:

Make:
BMW (2)
Color:
Black(2)
White(1)
...
Car Type:
....
Interior Color:
...

最佳答案

你在找这样的东西吗?

SELECT i.*, 
MAX(CASE WHEN meta_name = 'Make' THEN meta_value END) make,
MAX(CASE WHEN meta_name = 'Color' THEN meta_value END) color
FROM item_meta im JOIN items i
ON im.item_id = i.id JOIN meta m
ON im.field_id = m.id
GROUP BY i.id
HAVING MAX(meta_name = 'Make' AND meta_value = 'BMW') = 1
AND MAX(meta_name = 'Color' AND meta_value = 'Black') = 1

输出:

| ID | DESCRIPTION | USER_ID | MAKE | COLOR ||----|-------------|---------|------|-------||  2 |   dream car |       3 |  BMW | Black |

这是 SQLFiddle 演示

关于php - 使用 php 进行分面搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24149490/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com