2012-08-23 31 views
2

我能为所有的行与foocol1/col2使用对阵搜索:全停在匹配/操作期间对

SELECT col1, col2 
FROM some_table 
WHERE MATCH (col1,col2) 
     AGAINST ('foo' IN BOOLEAN MODE); 

但是假设我想与FOO搜索所有行。(即具有作为下一个字符的全站的foo)。在the docs page for Boolean Full-Text Searches它没有提到句号作为一个操作,所以我想我可以使用以下两种:

AGAINST ('foo.' IN BOOLEAN MODE); 
AGAINST ('"foo."' IN BOOLEAN MODE); 
AGAINST ('"foo\."' IN BOOLEAN MODE); 

然而,这将返回相同的结果:

AGAINST ('foo.couldBeAnything' IN BOOLEAN MODE); 
AGAINST ('foo' IN BOOLEAN MODE); 
AGAINST ('foo*' IN BOOLEAN MODE); 

在这种情况下,.运算符是什么?我怎么能匹配foo.

注意:我第一次问这个question about match-against foo.bar这导致我问这个跟进。

+0

你可以尝试'AGAINST('foo \ .couldBeAnything'BOOLEAN MODE);' – jcho360

+0

@ jcho360'foo \ .couldBeAnything'与'foo.couldBeAnything'完全相同。 –

+0

在黑暗中射击。 'foo \\。couldBeAnything'会做什么? – Touki

回答

2

全停,或任何标点符号,是就像一个全文检索的空间治疗,不幸的是,这意味着没有办法寻找标点符号。这背后的原因是文本搜索是为了找到“单词”(不包括标点符号)。

要对标点符号进行此类搜索,您可以匹配正则表达式,例如,通过使用preg_match

+0

谢谢,这对我来说是新东西 – jcho360