Mysql MATCH AGAINST和IN

时间:2012-11-07 21:41:12

标签: mysql sql ruby-on-rails

我需要在我的数据库中搜索一些数据。但主要问题是我搜索匹配:

...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])

或者我需要在rails上做迭代器,并通过迭代搜索所有这些迭代?

1 个答案:

答案 0 :(得分:0)

如果你说:

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

对于'description'所在的行:

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

未测试。