1

我正在使用 MySQL 5.6.10 的 InnoDB FTS,并希望更改布尔运算符的默认行为。

注意在实现这个特性时,MySQL 使用了有时被称为隐含布尔逻辑的东西,其中

[+] 代表与

[-] 代表不

[无运算符] 暗示 OR

我想要的行为:

  • [无运算符] 暗示 AND
  • [|] 代表或

ft_boolean_syntax

命令行格式 --ft_boolean_syntax=name 选项文件格式 ft_boolean_syntax 变量名称 ft_boolean_syntax 变量作用域 全局动态变量 是 允许的值 类型 字符串 默认 +-><()~*:""& 布尔全文支持的运算符列表使用 IN BOOLEAN MODE 执行的搜索。请参阅第 12.9.2 节,“布尔全文搜索”。

默认变量值为 '+ -><()~*:""&|'。更改值的规则如下:

运算符函数由字符串中的位置确定。

替换值必须是 14 个字符。

每个字符必须是 ASCII 非字母数字字符。

第一个或第二个字符必须是空格。

除了位置 11 和 12 中的短语引用运算符外,不允许重复。这两个字符不需要相同,但它们是唯一可能的两个。

位置 10、13 和 14(默认设置为“:”、“&”和“|”)保留用于将来的扩展。

所以我尝试将 ft_boolean_syntax 更改为 ' |-><()~*:""&+' 但这对我不起作用。没有给定的运算符仍然暗示 OR。

我究竟做错了什么?

4

1 回答 1

0

似乎 InnoDB FTS 尚未成熟。使用 MySQL 5.6.10 和 MyISAM,自定义的 ft_boolean_syntax 可以正常工作。布尔 OR 必须表示为 '|word1 |word2',即 'word1 | word2' 将产生一个 AND。

于 2013-06-16T15:11:37.097 回答