gpt4 book ai didi

php - 搜索结果的多样性

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:55:56 24 4
gpt4 key购买 nike

首先:抱歉发了这么长的帖子,我正在尝试以一种简单的方式解释一个困难的情况,同时尝试提供尽可能多的信息。

我有一个算法试图确定用户在搜索过程中的期望。有几种方法可以使用它,我对它们都有同样的问题,所以,假设我用它来消除歧义。好吧,使用像这样的数据库结构(或任何其他允许工作的数据库结构):

发布

ID | TITLE
---+----------------------------------------------
1 | Orange developed the first 7G phone
2 | Orange: the fruit of gods
3 | Theory of Colors: Orange
4 | How to prepare the perfect orange juice

关键词

ID | WORD     | ABOUT   
---+----------+---------
1 | orange | company
2 | orange | fruit
3 | orange | color

post_keywords

ID | POST  | KEYWORD
---+-------+---------
1 | 1 | 1
2 | 2 | 2
3 | 3 | 3
4 | 4 | 2

.

如果用户在搜索框中搜索“orange”这个词,算法会认为 orange 可能指的是公司、颜色或水果,然后通过回答几个问题,它会尝试确定用户正在寻找哪个。毕竟我得到了这样一个数组:

$e = array(
'fruit' => 0.153257,
'color' => 0.182332,
'company' => 0.428191,
);

在这一点上,我知道用户可能正在寻找有关水果的信息(因为 fruit 的值更接近 0),如果我错了,我的第二个color 下注。在列表的底部,公司

因此,使用 Join 和 ORDER BY FIELD(keywords.id, 2,3,1) 我可以为结果提供(几乎)完美的顺序:

- Orange: the fruit of gods
- How to prepare the perfect orange juice
- Theory of Colors: Orange
- Orange developed the first 7G phone

.

嗯……如你所想,如果一切都这么好,我就不会来寻求帮助了。所以,问题是在前面的例子中我们只有 4 个可能的结果,所以,如果用户真的在寻找 company,他可以在第 4 个位置找到这个结果,一切都很好。但是...如果我们有 200 个关于水果的帖子和 100 个关于颜色的帖子,关于公司的第一个帖子排在第 301 位。

我正在寻找一种方法来改变顺序(以可预测和可重复的方式),因为我知道用户一定很可能正在寻找 fruit,然后是 color 和最后的公司。我希望能够在第一个位置(也可能是第二个)显示关于 fruit 的帖子,然后是关于 color 的帖子,然后是 company 并再次开始这个循环,直到结果结束。

编辑:我对 MySQL 技巧或改变方法的想法很满意,但我不能接受第三方解决方案。

最佳答案

您可以使用变量来提供自定义排序字段。

SELECT
p.*,
CASE k.about
WHEN 'company' THEN @sort_company := @sort_company + 1
WHEN 'color' THEN @sort_color := @sort_color + 1
WHEN 'fruit' THEN @sort_fruit := @sort_fruit + 1
ELSE NULL
END AS sort_order,
k.about
FROM post p
JOIN post_keywords pk ON (p.id = pk.post)
JOIN keywords k ON (pk.keyword = k.id)
JOIN (SELECT @sort_fruit := 0, @sort_color := 0, @sort_company := 0) AS vars
ORDER BY sort_order, FIELD(k.id, 2, 3, 1)

结果如下所示:

| id | title                                   | sort_order | about   |
|---:|:----------------------------------------|-----------:|:--------|
| 2 | Orange: the fruit of gods | 1 | fruit |
| 3 | Theory of Colors: Orange | 1 | color |
| 1 | Orange developed the first 7G phone | 1 | company |
| 4 | How to prepare the perfect orange juice | 2 | fruit |

关于php - 搜索结果的多样性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37040654/

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