2012-08-23 65 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