2010-02-26 72 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