MySQL是否有一个类似于Google的文本搜索功能;s

MySQL是否有一个类似于Google的文本搜索功能;s,mysql,ruby,search,nlp,Mysql,Ruby,Search,Nlp,我正在制作一个后端使用MySQL和Ruby gem Sinatra的网站 我的MySQL表有一个LONGTEXT列和FULLTEXT索引 我编写了一个MySQL查询,基本上是这样的: SELECT Plot FROM myTable WHERE MATCH(Plot) AGAINST('time travel robot') 第一个结果是: 月球上的人是一部关于已故喜剧演员安迪·考夫曼的传记电影。考夫曼,连同他在《出租车》(1978)中的角色,因自称是世界摔跤冠军而闻名。在一次又一次地击败女

我正在制作一个后端使用MySQL和Ruby gem Sinatra的网站

我的MySQL表有一个
LONGTEXT
列和
FULLTEXT
索引

我编写了一个MySQL查询,基本上是这样的:

SELECT Plot 
FROM myTable
WHERE MATCH(Plot) AGAINST('time travel robot')
第一个结果是:

月球上的人是一部关于已故喜剧演员安迪·考夫曼的传记电影。考夫曼,连同他在《出租车》(1978)中的角色,因自称是世界摔跤冠军而闻名。在一次又一次地击败女性之后,杰瑞·劳勒(在电影中扮演自己),一名职业摔跤手,厌倦了看到这一切,决定挑战考夫曼参加一场比赛。在两人进行的大多数比赛中,劳勒以皮列德里弗获胜,这是一种先将对手的头部打入垫子的动作。这场争斗中最著名的时刻之一是在80年代初,考夫曼在深夜与大卫·莱特曼(1982年)向劳勒扔咖啡,与劳勒发生斗殴,进而起诉NBC。

尽管我喜欢这部电影,但它与时间旅行或机器人无关

我不知道谷歌的搜索算法,但我想知道MySQL是否有一个搜索功能,可以根据输入的单词之间的距离对结果进行排序

在我的例子中,我希望最相关的结果是“时间”、“旅行”和“机器人”尽可能靠近

如果我的梦功能也能在单词上有所变化,比如“旅行”或“机器人”,那就太好了

MySQL可以实现多少功能?还是用Ruby


或者我应该做一些完全不同的事情吗?

谷歌通过使用solr(lucene)对大型n-gram数据进行索引来进行搜索

将mysql与ruby结合使用可以做到这一点,但在大数据上肯定不会那么快和有效。但对于小数据,您会很高兴看到结果

数据库索引
是一种数据结构,它提高了数据库表上数据检索操作的速度,但需要额外的写入和存储空间来维护索引数据结构。看

有多种数据结构技术用于此索引目的。您也可以使用ruby在mysql上应用这些功能。要获得基本想法,请检查此项

因此,如果您有大型数据集,则需要对该数据执行一些索引技术,现在当您搜索该索引数据以进行查询时,
time travel robot
,它将自动显示最相关的结果