我试图在 MySQL 中使用 MATCH AGAINST 获得更好的搜索结果。如果单词包含保留字符,例如 -、( 和 ),我将它们用双引号引起来。但是,这使得无法在任何后续单词上使用+号。
例如,由于公司前面有 + 号,以下内容会引发错误:
MATCH ( SomeField
) AGAINST(+“连字符”+布尔模式下的“corporation”)
我尝试用单反斜杠和双反斜杠转义连字符,但它不起作用,连字符似乎仍然被解释为排除符号(或者至少它不被识别为字符)。
我知道其他选项,例如 LIKE 等,但如果可能的话,我想使用 MATCH AGAINST。
有没有办法转义保留字符并仍然使用 + 运算符(如上面的示例)?提前致谢。
我不认为 FT 语法中有任何“转义”。相反,清理输入......
_
考虑用或其他一些“字母”替换此类标点符号。+
)任何短于 的“单词”innodb_ft_min_token_size
。innodb_ft_enable_stopword
或使用innodb_ft_user_stopword_table
如有必要,请在表中添加额外的列,仅用于 FT 的清理文本。(示例:删除所有标签后 HTML 中文本的 FT 索引。)
英国《金融时报》的另一个提示:
是一种获得全文速度并仍然过滤掉通过 FT 的内容的方法。