2010-02-26 80 views
1

我有这个疑问:MySQL的查询和文本搜索

select name, body 
    from news 
where body like %MyWord%; 

我使用MySQL数据库引擎。这个查询将返回名称,身体当发现正文中的MyWord。

这里我的问题是,当我搜索正文中的两个单词时,如MyWord1,MyWord2。或者更多 !!!

如果你知道这个查询是按函数调用的(我不能随时修改那个查询),我该怎么做。

回答

1

如果您需要更多的文本搜索模式功能,您应该在MySQL中使用FULL-TEXT-SEARCH,并使用正确的索引。

如果这是您所需要的,您将能够同时搜索两个或更多的单词。

0

你可以使用一些邪恶的SQL注入(种):)

我假设你通过“myWord”的包含您不能(“不能”或“不要”的查询功能不喜欢“??)改变。会发生什么,如果在“myWord”看起来是这样的:

MyWord1% OR body like %MyWord2

邪恶的,我知道,你已经被警告;)

如果你想找到两个不同的词,你可以做到这一点
0

select name, body 
    from news 
where body like %MyWord1% and body like %MyWord2%; 

但是,很快就会变得非常不高性能,还有一些其他的选项,你可以看看:

  • 使用全文搜索,由巴勃罗圣克鲁斯(可能是 使用最简单的)建议
  • 插入时
  • 解析你的身体领域为子表通过触发通过填充一个Lucene/Solr的索引搜索数据和寻找(设置和维护更复杂一点,但性能非常可观。
+0

这不好在我的情况。 ,因为这个查询只是被调用,我不知道他/她是否喜欢搜索2,3,4或更多的单词。 – 2010-02-28 11:20:57