MySQL查询和文本搜索

时间:2010-02-26 09:56:58

标签: sql mysql full-text-search

我有这个问题:

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

我使用MySQL数据库引擎。此查询将在正文中找到MyWord时返回名称,正文。

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

如果你知道这个查询是按函数调用的话我怎么能这样做(我不能一直修改那个查询)。

3 个答案:

答案 0 :(得分:1)

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

如果您需要,您将能够一次搜索两个或更多单词。

答案 1 :(得分:0)

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

我假设您将“MyWord”传递给包含您不能(“不能”或“不喜欢”??)更改的查询的函数。如果“MyWord”看起来像这样,会发生什么:

MyWord1% OR body like %MyWord2

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

答案 2 :(得分:0)

如果你想找到两个不同的词,你可以这样做:

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

但是,很快就会变得非常不具备性能,您可以查看其他一些选项:

  • 使用全文搜索,如建议的那样 由Pablo Santa Cruz(可能是 最简单的使用)
  • 在插入时通过触发器将您的身体字段解析为子表格
  • 通过填充lucene / solr索引并搜索数据来搜索数据(设置和维护有点复杂,但性能非常令人印象深刻。