gpt4 book ai didi

mysql - 根据另一行获取10个最相似的行

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

如何根据另一行数据获取行。例如。我想根据其他人获得广告。

我知道如何进行比较,并且知道如何获取当前活跃广告的分数,但我不知道如何获取广告。

我当前的查询如下 - 但它将返回 10 x 同一行,而不是十个最相似的广告。

SELECT
a.AdvertisementID as A_AdvertisementID,
IF(a.Topic LIKE a2.Topic, 50, 0) + IF(a.Description LIKE a2.Description, 40, 0) + IF(a.Cate_CategoryID LIKE a2.Cate_CategoryID, 10, 0) as A_Score,
a.AdvertisementID as A_AdvertisementID,
a.Topic as A_Topic,
LEFT(a.Description, 300) as A_Description,
a.Price as A_Price,
a.Type as A_Type
FROM
".DB_PREFIX."A_Advertisements a2,
".DB_PREFIX."A_Advertisements a
WHERE
a2.AdvertisementID <> a.AdvertisementID
AND
a.AdvertisementID = :a_id
ORDER BY
A_Score DESC

最佳答案

您应该查看MySQL Fulltext search能力。它允许在数据库中搜索相似文本内容,而不是搜索适当的子字符串(就像LIKE那样)。那么您就不需要手动计算相似度的“分数”。

网络上有很多示例。

如果您总是希望检索至少 X 条新闻(假设存在 X 条新闻),即使没有类似新闻,请尝试以下操作:

SELECT *, MATCH(Title, Description, Content) AGAINST("News title") AS score
ORDER BY score DESC, RAND() LIMIT 0, 10

我假设X为10,新闻标题是正在查找相关新闻的新闻标题,全文索引位于标题描述内容列。

关于mysql - 根据另一行获取10个最相似的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19747691/

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