gpt4 book ai didi

mysql - Sphinx:在多个字段上过滤 MVA

转载 作者:行者123 更新时间:2023-11-29 02:37:56 25 4
gpt4 key购买 nike

我希望能够根据金额范围和特定 user_id 过滤我的订单预期的结果是只获取指定用户在一定金额范围内出价的订单。

例如,有一个 ID 为 1 的订单。用户 5 出价为 200。现在,如果我想过滤,我将 user_id 过滤器设置为 5,并将金额范围过滤器设置为 150-250。

如何配置 sphinx 才能以这种方式进行过滤?

我有以下表格:

顺序:

+-------------+-----------------------+
| Field | Type |
+-------------+-----------------------+
| id | mediumint(8) unsigned |
| title | varchar(100) |
| description | text |
+-------------+-----------------------+

出价:

+--------------+-----------------------+
| Field | Type |
+--------------+-----------------------+
| id | mediumint(8) unsigned |
| order_id | mediumint(8) unsigned |
| user_id | mediumint(8) unsigned |
| amount | mediumint(9) |
+--------------+-----------------------+

我已经在 sphinx 配置中尝试了以下内容。但是我不能将 user_id 设置为前导。结果是我得到了该金额范围内的所有出价订单(来自所有用户),并且我得到了用户出价的所有订单。

sql_attr_multi  = uint amount from query; SELECT order_id as id, amount FROM bids
sql_attr_multi = uint user_id from query; SELECT order_id as id, user_id FROM bids

谢谢

最佳答案

最好为用于此功能的单个出价编制索引。

sql_query = 
SELECT
b.id
b.order_id
b.user_id
b.amount
o.title
o.description
FROM
bid b JOIN
order o ON b.order_id=o.id;
sql_attr_uint = order_id
sql_attr_uint = user_id
sql_attr_uint = amount

根据特定用户进行过滤:

SetFilter("user_id", array(5));

根据 150 到 250 的出价范围进行过滤:

SetFilterRange("amount", 150, 250);

根据订单id过滤:

SetFilter("order_id", array(1));

这些可以根据需要混合和匹配以选择您想要查看的出价。现在索引正在使用出价 ID,Sphinx 会将它们作为结果集返回给您,您可以根据需要在后续的 MySQL 查询中使用它们。

关于mysql - Sphinx:在多个字段上过滤 MVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2108127/

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