2

我可以使用匹配来搜索/中foo的所有行:col1col2

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

但是假设我想用foo 搜索所有行。(即 foo 以句号作为下一个字符)。在Boolean Full-Text Searches 的文档页面上它没有提到句号是 operator,所以我想我可以使用其中任何一个:

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.

注意:我首先问了这个关于比赛的问题,foo.bar这导致我问了这个后续问题。

4

1 回答 1

2

句号或任何标点符号在全文搜索中被视为空格,不幸的是,这意味着无法搜索标点符号。这背后的原因是文本搜索是为了查找“单词”(不包括标点符号)。

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

于 2012-08-23T17:10:26.010 回答