2012-11-07 116 views
1

我需要搜索數據庫中的一些數據。但主要的問題是,我用搜索對比賽:Mysql MATCH AGAINST和IN

...MATCH(description) AGAINST ("*52*" in boolean mode) 

但在一個迭代(或更多,但是有一個查詢)我必須尋找不僅是52,但50,51,52,...,59以前一樣...... 不過是這是真的嗎? 此外,我在RoR做到這一點:

@accums = Accumulator.find(:all, :conditions => ["MATCH(description) AGAINST (? in boolean mode)", size]) 

或將我需要做的在軌道上的迭代器,並通過迭代搜索所有這些迭代?

+0

這是令人困惑的措辭。你能發佈樣本數據嗎?你在這個乾草堆裏尋找多根針嗎?你能描述一下針和乾草堆好一點嗎?不要讓我們猜測。 – AllInOne

+0

@AllInOne閱讀我的問題,一切都在那裏......我必須像以前一樣搜索52,而是搜索'50,51,52,...,59' ...例如,我不僅要搜索52 ,但對於52,53等(我可以看起來像SQL IN,但對於匹配) – brabertaser19

回答

0

如果你說:

MATCH(description) AGAINST ("*52*" in boolean mode) 

反對一排,其中 '描述' 是:

34,520,1000,9000 

34,452,1000,9000 

34,4525,1000,9000 

您將獲得一場比賽。這是你想要的結果嗎?我想不是。

我想你想要的是:

MATCH(description) AGAINST ("52" in boolean mode) 

,並處理你想多個匹配:

MATCH(description) AGAINST ("51 52 53" in boolean mode) 

例子:

34,520,1000,9000 
// no match 

34,452,1000,9000 
// no match 

34,52,1000,9000 
// match 

34,53,1000,9000 
// match 

34,52,53,9000 
// match 

未經檢驗。