我可以使用match-and-:搜索col1
/col2
中具有foo
的所有行
SELECT col1, col2
FROM some_table
WHERE MATCH (col1,col2)
AGAINST ('foo' IN BOOLEAN MODE);
但假设我想搜索所有带有foo的行(即以句号作为下一个字符的foo)。在布尔全文搜索的文档页面上,没有提到句号是运算符,所以我想我可以使用以下任一项:
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
的比赛,这让我问了这个后续问题
句号或任何标点符号在Full-TEXT搜索中都被视为空格,不幸的是,这意味着无法搜索标点符号。这背后的原因是,文本搜索是为了找到"单词"(不包括标点符号)。
要对标点符号进行这样的搜索,可以对正则表达式进行匹配,例如使用preg_match。