2013-03-30 53 views
0

我有一個叫做節的表。在這是一個名爲head的字段,它有一個全文索引,每個字符串有3個條目。 2個詞條有摩托車詞,有一個詞有摩托車。如果術語「摩托車」是搜索,我似乎無法找到返回所有3的方法。Mysql的搜索,匹配的話如果相似

我已經試過

SELECT * FROM sections 
    WHERE MATCH (head) AGAINST ('Motorcycles') 

但它只返回複數項。我也試過了。

SELECT * FROM sections 
    WHERE head like '%motorcycles%' 

但這也只返回複數條目。有沒有辦法根據「摩托車」返回所有三行?

回答

1

你試過布爾模式嗎?

where match (head) against ('+ Motorcycle*' in Boolean mode) 

更多的信息是here

你的where子句有一個額外的「s」:

SELECT * FROM sections WHERE head like '%motorcycle%' 
0

假設你的問題是不是你給的具體motorcylce例子更普遍的......我不知道的方式,你可以直接在SQL中放寬限制(沒有存儲過程來預處理輸入)。我建議預處理您的輸入與正則表達式來刪除/替換使單詞複數的字符。然後按照您在單詞版本中顯示的方式使用。

0

如果我有你問題正確我想你想是這樣的:

if (SELECT count(1) FROM sections WHERE head like '%motorcycles%')>1 
begin 
    select * FROM selections 
    WHERE head like '%motorcycle%' 
end