mysql WHERE MATCH AGAINST

时间:2012-06-07 12:21:45

标签: mysql match where against

我遇到了mysql和MATCH AGANIST的问题。

我的数据库中有这一行:

1:{Czy jesteśmy tutaj sami};2:{Margit Sanoemo}

我想通过以下查询找到这个:

SELECT * FROM data WHERE MATCH (params) AGAINST('*argi*' IN BOOLEAN MODE)

但我有一个空行。

但是使用此查询:

SELECT * FROM dataWHERE MATCH (params) AGAINST('margi*' IN BOOLEAN MODE)

我想要我想要的。

你可以用para中的双**来帮助我吗? AGAINST('*argi*' IN BOOLEAN MODE)

2 个答案:

答案 0 :(得分:3)

+

前导加号表示该单词必须存在 在每行返回。

-

前导减号表示该单词不得为 存在于返回的任何行中。

< >

这两个运算符用于更改单词的贡献 到分配给行的相关性值。 &lt;运营商减少 贡献和&gt;运营商增加它。请参阅下面的示例。

( )

。将括号括在子表达式中以给出它们 搜索中的优先级更高。

~

领先的代字号作为否定运算符,导致 单词对行相关性的贡献是否定的。它对标记很有用 噪音词。包含这样一个单词的行将被评为低于其他行, 但不会完全排除,因为它会与减号一起排除 操作

*

* 星号是截断运算符。与其他不同 运算符,它附加到单词或片段,而不是 prepended 。*

短语开头和结尾的双引号匹配 仅包含完整短语的行,因为它是键入的。

答案 1 :(得分:1)

不要将变量嵌入双引号字符串中并设置:

SELECT * FROM " . $table . WHERE MATCH (message) AGAINST ('%" . $string . "%' IN BOOLEAN MODE)