【问题标题】:MySQL query to match similar words/sentencesMySQL查询以匹配相似的单词/句子
【发布时间】:2011-03-20 18:59:53
【问题描述】:

我在 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"

并找到正确的行。您会看到它必须是不区分大小写的搜索,并且查询中缺少末尾的点。我该如何实现?

我试过了

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

并在 python 中将 my_string 转换为大写,并在 my_string 的末尾添加一个“%”,但这并不是处理这个问题的好方法。它也没有用。 =)

感谢您的任何建议!

【问题讨论】:

    标签: python mysql search full-text-search


    【解决方案1】:

    我看到你已经添加了 FULLTEXT 索引,虽然你已经知道 MySQL 的 MATCH AGAINST 语法。

    你应该试试

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

    【讨论】:

    • +1。我不知道“带有查询扩展”。我只是在看说明书。 :)
    • 我试过了。事实证明,该查询为我带来了很多结果。我想要的结果是所有结果的第三位。如果我让这部分查询离开“WITH QUERY EXPANSION”,也会有很多结果,但我想要的结果在结果的第一行。有什么区别?
    • dev.mysql.com/doc/refman/5.0/en/fulltext-query-expansion.html上阅读更多关于 WITH QUERY EXPANSION 的信息
    • 非常感谢。这让我走上了正确的道路。我这样解决了我的问题:SELECT id, title, MATCH (title) AGAINST ('nFOIL: integrating Naïve Bayes and FOIL') AS score FROM pubmap.papers WHERE MATCH (title) AGAINST ('nFOIL: integrating Naïve Bayes and FOIL');
    • 谢谢。我已经在谷歌上找到了那个页面。很有意思。 :)
    【解决方案2】:

    在 utf8_general_ci 中更改您的排序规则。 这样,您的搜索将不区分大小写。

    【讨论】:

    • 是否可以更改现有数据的排序规则?
    • 在更改数据库/表结构之前进行备份总是一个好主意。在你的情况下是的。但是,在您更改任何内容之前,请尝试遵循 Pentium10 的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    相关资源
    最近更新 更多