Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MySQL在两个表中查找相似数据_Java_Mysql_Database - Fatal编程技术网

Java MySQL在两个表中查找相似数据

Java MySQL在两个表中查找相似数据,java,mysql,database,Java,Mysql,Database,所以我有一个包含2个表、电影和PS3的数据库。 每个都包含标题。 我从基于视频游戏的IMDB标题列表中获得了电影标题。并不是所有的游戏都有相同的游戏名称,但可能有一两个相似的词 我想知道我如何使用ps3上的标题,并将其与电影进行比较。 我想退回类似的物品 例如,《生化危机:启示录》是一部电影,没有叫做《生化危机:启示录》的游戏,但是PS3上有不同名字的生化危机游戏,所以我想得到这些数据 我该怎么做呢?我试过了 WHERE ps3.titles LIKE '%movie.titles%' 但它不

所以我有一个包含2个表、电影和PS3的数据库。 每个都包含标题。 我从基于视频游戏的IMDB标题列表中获得了电影标题。并不是所有的游戏都有相同的游戏名称,但可能有一两个相似的词

我想知道我如何使用ps3上的标题,并将其与电影进行比较。 我想退回类似的物品

例如,《生化危机:启示录》是一部电影,没有叫做《生化危机:启示录》的游戏,但是PS3上有不同名字的生化危机游戏,所以我想得到这些数据

我该怎么做呢?我试过了

WHERE ps3.titles LIKE '%movie.titles%'
但它不起作用。 我甚至不确定它在MySQL中是否可行。
感谢您的反馈

整体匹配要求很高。但在句法方面,请考虑:

WHERE ps3.titles LIKE CONCAT('%',movie.titles,'%')
MySQL将把
movie.title
视为标识符(例如,作为对查询中引用的表中的列的引用)。
“%”
是文本,
CONCAT
将文本与列中的值串在一起,然后可以计算LIKE比较运算符


比较紧密的弦是整个大的粘蜡球

就MySQL的可用性而言,它非常有限

MyISAM引擎具有
全文
索引,可用于通过“关键字”匹配查找行。(对将被索引并被视为“匹配”的字符串的长度有一个下限。我认为默认值是4个字符,这样就消除了“a”、“of”和“the”等词。)

MySQL还有
REGEXP
比较运算符,比
LIKE
比较运算符更强大;但你必须手工制作自己的比较

SOUNDEX
功能也可用于识别“关闭”匹配。。。比如将“启示录”与“启示录”相匹配;但我不认为这能帮你把《启示录》和《倒带:启示录编年史》相提并论


任何关于标题的匹配都是有限的,而且不精确。你会得到一些匹配项,匹配项越多,就越不对。

@谢谢你的回复。不管怎么说,这肯定和他们中的很多人都很相配。谢谢你会建议如何做得更好?就像现在它匹配像“A”或“Air”等简单的词一样,我可能需要用Java做些什么来改进它吗?