我遇到了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)
答案 0 :(得分:3)
+
前导加号表示该单词必须存在 在每行返回。
-
前导减号表示该单词不得为 存在于返回的任何行中。
< >
这两个运算符用于更改单词的贡献 到分配给行的相关性值。 &lt;运营商减少 贡献和&gt;运营商增加它。请参阅下面的示例。
( )
。将括号括在子表达式中以给出它们 搜索中的优先级更高。
~
领先的代字号作为否定运算符,导致 单词对行相关性的贡献是否定的。它对标记很有用 噪音词。包含这样一个单词的行将被评为低于其他行, 但不会完全排除,因为它会与减号一起排除 操作
*
* 星号是截断运算符。与其他不同 运算符,它附加到单词或片段,而不是 prepended 。*
“
短语开头和结尾的双引号匹配 仅包含完整短语的行,因为它是键入的。
答案 1 :(得分:1)
不要将变量嵌入双引号字符串中并设置:
SELECT * FROM " . $table .
WHERE MATCH (message)
AGAINST ('%" . $string . "%' IN BOOLEAN MODE)