MySQL查询以匹配相似的单词/句子

2024-06-28 15:09:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我在MySQL数据库中有一个表,其结构如下:

CREATE TABLE `papers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(1000) COLLATE utf8_bin DEFAULT NULL,
`booktitle` varchar(300) COLLATE utf8_bin DEFAULT NULL,
`journal` varchar(300) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `title_fulltext` (`title`),
FULLTEXT KEY `booktitle_fulltext` (`booktitle`),
FULLTEXT KEY `journal_fulltext` (`journal`)
) ENGINE=MyISAM AUTO_INCREMENT=1601769 DEFAULT CHARSET=utf8 COLLATE=utf8_bin

现在我知道在列标题中,在数百万行中,有一行包含字符串

^{pr2}$

我想找

my_string = "nFOIL: integrating Naïve Bayes and FOIL"

找到正确的一排。您可以看到它必须是不区分大小写的搜索,并且查询中缺少末尾的点。如何实现这一点?在

我试过了

SELECT id FROM papers WHERE UPPER(title) LIKE %s

并在python中将我的字符串转换为大写,并在字符串末尾加上“%”,但这并不是一种很好的处理方法。它也不起作用。=)

谢谢你的建议!在


Tags: key字符串iddefaultbintitleutf8null
2条回答

在utf8_general_ci中更改校对。 这样,您的搜索将不区分大小写。在

我看到您添加了全文索引,我想您已经知道了MySQL的语法匹配。在

你应该试试

SELECT id FROM papers 
WHERE MATCH (title,booktitle,journal) AGAINST ('nFOIL: integrating Naïve Bayes and FOIL' IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION);

相关问题 更多 >