gpt4 book ai didi

mysql - SQL - 按 "human"相关性排名或排序

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

希望实现按功能排名/排序,按照我们人类认为相关的方式对产品进行排名,而不是计算机认为相关的方式。目前我有这个sql语句

select MATCH(productName) AGAINST('xyz' IN NATURAL LANGUAGE MODE) AS relevant...
... ORDER BY relevant DESC

对于“关键字”在记录集中出现的次数而言,这些似乎运作良好,但如果您明白我的意思,那么它非常是或否。

但是,搜索“计算机控制台”(在不太可能的情况下),我希望看到“Playstation”、“xBox”、“Nintendo”,尽管我从未在搜索字段中实际输入过这些关键字。

搜索“梯子”,我个人希望看到用于高度访问的梯子,而不是棋盘游戏“蛇和梯子”或带有梯子图案的衣服。

有些带有“钢铁”的内容,我没想到“钢铁侠床上用品”会出现在第一页中。

是否有一种行业方法可以实现这样的目标,或者是否有人有任何想法如何实现这一目标。即具有与product_id匹配的关键字/搜索词的辅助表。

问候

最佳答案

这可能与您的情况不完全相同,但可能会对您有所帮助。

我为我在工作中开发的大型内容管理系统设计了一个基于相关性的搜索结果系统。

内容由标题、内容和隐藏关键字字段(应用于搜索但不包含在标题或内容中的单词)组成。 [还有很多字段,但这三个字段足以演示概念]

添加内容后,它会被索引:一些非字母数字字符被删除,每个单词都被词干化(即,education、education、educator、educations 等都被索引为同一个单词),一些单词被转换为另一个基于一些内部规则,然后它们都存储在索引中。

搜索完成后,系统会对每个关键字执行与上述相同的操作(删除不需要的字符、词干、根据内部规则进行转换)。

然后系统会获取一个内容列表,其中每个已解析的搜索关键字位于任何这些字段中的任何位置。

然后我的代码解析每个匹配结果:首先,它查找在其中一个字段中连续存在的所有关键字;如果它没有找到搜索短语,那么它会迭代地[组成单词]查找较小的关键字组,直到找到为止(即,如果输入了 4 个搜索关键字,它会先尝试所有 4 个,然后是 3 个,然后是 2 个,然后是 1 个,如果它们并不全部被发现在一起)

系统根据连续找到的关键字数量对搜索结果进行评分。根据关键字是否在标题、内容或关键字字段中找到(这需要一些微调)以及它/它们与字段开头的接近程度来给出较高的分数。

然后根据此分数将结果提供给客户。

该系统在我们的情况下运行得很好,特别是分组关键字部分可以带来良好的结果。

您可以根据您的情况使用类似的系统。搜索“梯子”会在“蛇梯游戏”之前订购“梯子 - 特大号”等产品。

对于“计算机控制台”,您可以将此类术语添加到隐藏关键字字段中。

请注意,解析列表的相关性需要一些服务器资源,因此这种类型的系统仅适用于您有足够的可用基础设施或内容列表不大的情况。

关于mysql - SQL - 按 "human"相关性排名或排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53838808/

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