我有一个表,其中具有这种结构的MySQL数据库: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
现在我知道在列标题中,地方的数百万行的范围内,有一个排它包含字符串
nFOIL: Integrating Naïve Bayes and FOIL.
我想寻找
my_string = "nFOIL: integrating Naïve Bayes and FOIL"
,并找到里ght行。您看到它必须是不区分大小写的搜索,并且查询中末尾的点不存在。我如何实现这一点?
我试图
SELECT id FROM papers WHERE UPPER(title) LIKE %s
,并转换my_string在Python上的情况下,把一个“%”在my_string结束,但这并不缝处理一个很好的方式。它也没有工作。 =)
感谢您的任何建议!
+1。我不知道“QUERY EXPANSION”。我只是阅读手册。 :) – 2011-03-20 19:18:21
我试过了。事实证明,查询让我获得了很多结果。我想要的结果是所有结果的第三位。如果我将这部分查询放在“WITH QUERY EXPANSION”中,也有许多结果,但我希望的结果是结果的第一行。有什么不同? – Aufwind 2011-03-20 19:22:01
在http://dev.mysql.com/doc/refman/5.0/en/fulltext-query-expansion.html上阅读关于WITH QUERY EXPANSION的更多信息 – Pentium10 2011-03-20 19:26:48