【问题标题】:My SQL Full Text search for character by characterMy SQL Full Text 逐个字符搜索
【发布时间】:2012-09-10 07:52:41
【问题描述】:

我有桌子

CREATE TABLE `articles` 
(
  `id` int(11) NOT NULL default '0',
  `title` varchar(65) default NULL,
  `topic` varchar(25) NOT NULL default '',
  `author` varchar(25) NOT NULL default '',
  `ondate` datetime NOT NULL default '0000-00-00 00:00:00',
  `body` text NOT NULL,
);

我使用以下查询在其上添加索引:

ALTER TABLE articles ADD FULLTEXT(title,body);

当我选择如下查询时,如果标题中包含类似这样的字词,我想要结果 'cvs','cvsssh','cvsrepository'

SELECT id,title FROM articles WHERE MATCH (title) AGAINST('cvs');

但它只返回一行与 cvs 相关的行。 它正在做单词匹配我想要字符匹配

请帮帮我... 提前致谢。

问候 工业

【问题讨论】:

  • 您能否详细解释一下,您所说的“我想要字符匹配”到底是什么意思?您希望查询返回所有记录,其中title 中有字符“c”或字符“s”或字符“v”?
  • 哪里有“cvs”,它应该返回那个记录

标签: mysql sql search select character


【解决方案1】:

您是否尝试过使用 like 运算符?

例如:

SELECT id,title 
FROM articles 
WHERE title like '%cvs%';

http://dev.mysql.com/doc/refman/5.0/en/pattern-matching.html

【讨论】:

  • 其实我已经用过like,但由于性能问题我转而匹配
【解决方案2】:

应该是这样的:-

SELECT id,title FROM articles WHERE title like 'cvs%';

这将为您提供从 csv.. 字符开始的输出。

如果你使用 '%cvs%' 那么它会为你提供包含 cvs 的输出

【讨论】:

  • 确实,我不确定是否只搜索了这 3 个单词,或者这只是一个示例,因此我使用了最通用的一个。另请注意:将“%”作为类似搜索字符串中的第一个元素会降低查询的性能,因此请尽可能使用“xyz%”而不是“%xyz%”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 2011-02-22
相关资源
最近更新 更多