这是我的表,基本上不同的方式来存储2个足球队的名字(主持人和客人)
-----------------------------------------------------------------------------
|host|host_aio|h_unchar|h_a|h_b|guest|guest_aio|guest_unchar|guest_a|guest_b|
-----------------------------------------------------------------------------
我有一个主持人和一个客人名称,我将以不同的方式将其分解,以便找到搜索到的团队的相应行
例如Melbourne Victory VS Brisbane Roar
的情况
我的疑问是:
SELECT `host`,`guest`,`h_aio`,`g_aio`,`h_unchar`,`g_unchar`,`h_a`,`h_b`,`g_a`,`g_b`
FROM `tbl` WHERE (
host IN ('melbourne victory','melbournevictory','melbourne','victory')||
h_aio IN ('melbourne victory','melbournevictory','melbourne','victory')||
h_unchar IN ('melbourne victory','melbournevictory','melbourne','victory') ||
h_a IN ('melbourne victory','melbournevictory','melbourne','victory') ||
h_b IN ('melbourne victory','melbournevictory','melbourne','victory') ||
h_c IN ('melbourne victory','melbournevictory','melbourne','victory') ||
h_d IN ('melbourne victory','melbournevictory','melbourne','victory') ||
h_g IN ('melbourne victory','melbournevictory','melbourne','victory') )
AND (
guest IN ('brisbane roar','brisbaneroar','brisbane','roar')||
g_aio IN ('brisbane roar','brisbaneroar','brisbane','roar')||
g_unchar IN ('brisbane roar','brisbaneroar','brisbane','roar')||
g_a IN ('brisbane roar','brisbaneroar','brisbane','roar') ||
g_a IN ('brisbane roar','brisbaneroar','brisbane','roar') ||
g_b IN ('brisbane roar','brisbaneroar','brisbane','roar') ||
g_c IN ('brisbane roar','brisbaneroar','brisbane','roar') ||
g_d IN ('brisbane roar','brisbaneroar','brisbane','roar') ||
g_g IN ('brisbane roar','brisbaneroar','brisbane','roar') )
ORDER BY FIELD(`h_unchar`, 'melbournevictory'), FIELD(`g_unchar`, 'brisbaneroar')
结果如下:
我想根据h_unchar
和g_unchar
与host
和guest
的相关性/相似性对结果进行排序,这是我添加的原因。< / p>
ORDER BY FIELD(`h_unchar`, 'melbournevictory'), FIELD(`g_unchar`, 'brisbaneroar')
但正如您在图片中看到的那样,21岁以下的匹配(U21)
位于顶部
我怎样才能在顶部获得更相似的行?
这里有更多信息:
基本上我从两个不同的API获得团队名称,第一个api名称与第二个api名称有点不同(fc barcelona和Barcelona)
并且每个api都有一个独特的信息,其他api不会发送...所以我需要以某种方式连接这个2 api并从两者获得每个游戏的所有信息..我将第一个存储在数据库中,当第二个一个发送信息我在数据库中搜索使用球队名称找到第一个api信息(api 1在比赛前发送数据,abpi 2在比赛后发送数据)
答案 0 :(得分:2)
由于您正在搜索特定的匹配/游戏,并且每天都有相同主机/访客名称的匹配不多,我建议您在代码端执行此操作,并避免使已经存在的潜在慢查询复杂化
答案 1 :(得分:1)
这不是一个简单的问题,但是如果你想要一些基本的东西,这样的方法可能有助于作为第一关。 How do I do a fuzzy match of company names in MYSQL with PHP for auto-complete?
事实上,这是一个机器学习问题,您需要构建类似于聚类算法的东西,并找到条目之间的距离,或者预测人们正在寻找的算法;那个不是一个简单的查询问题。