繁体   English   中英

使用MySQL LIKE匹配整个字符串

[英]Using MySQL LIKE to match a whole string

我一直在做一些关于StackOverflow和Interweb的搜索,但运气并不好。

我有一个看起来像这样的网址...

nr/online-marketing/week-in-review-mobile-google-and-facebook-grab-headlines

我从URL获取文章名称,并用''替换'-'给我:

week in review mobile google and facebook grab headlines

此时,这是我在文章中拥有的所有信息,因此我需要使用它来查询数据库以获取文章的其余信息,问题就解决了,但是此字符串与文章的实际标题不符,这个实例的实际标题是:

Week in review: Mobile, Google+ and Facebook grab headlines

如您所见,它包含额外的标点符号,因此我需要找到一种使用MYSQL LIKE匹配本文的方法。

希望有人能帮忙,标准的SELECT * FROM table WHERE field LIKE $name不起作用,我希望找到一种无需拆分每个单词的方法,但是如果那样的话,那就解决了!

谢谢。

这实际上似乎更像是数据库设计问题...如果您使用具有不同字段的大文本作为主键的形式,则可能导致重复或同步问题。

一种可能的解决方案是为每个条目赋予唯一标识符(如果MSQL支持,则为int或uniqueidentifier字段),然后使用该字段将实际的healdine映射到URL。

另一种可能的解决方案是创建一个表,该表将每个标题与其URL关联,并将该表用于查找。 这将产生一些额外的开销,但是将确保标题中的特殊字符永远不会影响查找过程。

至于使用当前设计执行此操作的方法,您可以通过以下方式进行某种正则表达式搜索:分别对每个单词进行标记,然后搜索包含所有标记的条目,但是我很确定MSQL不会在基本命令中提供此功能。

尝试使用MySQL MyISAM引擎的全文本搜索。 在您的情况下,查询将是:

SELECT * FROM table
WHERE MATCH (title) AGAINST ('week in review mobile google and facebook grab headlines');

这要求您将表转换为MyISAM。 此外,根据表的大小,测试查询的性能。

在以下位置查看更多信息: http : //dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM