我们的数据库包含许多标题中带有逗号的条目(如在匈牙利语中,它是小数分隔符而不是句点),并且希望匹配具有正确相关性的条目。如果用户输入的术语是7,5x20 otherTerm ,则搜索 SQL 目前看起来像这样
SELECT (MATCH(title) AGAINST('(+7,5x20* +otherTerm* ) (7,5x20* otherTerm* ) (+7,5x20 +otherTerm )' IN BOOLEAN MODE)) AS Relevance,
id, title, product_id FROM versions
WHERE (MATCH(title) AGAINST('(+7,5x20* +otherTerm* ) (7,5x20* otherTerm* ) (+7,5x20 +otherTerm )' IN BOOLEAN MODE))
ORDER BY Relevance DESC LIMIT 50
现在结果顺序为例如提供了更高的相关性。5x20比7,5x20所以必须在逗号上进行某种字符转义,防止 MySQL 将它们作为单独的字符串处理。我没有找到合适的。
感谢您提前提供任何帮助。
编辑:将标题分解为更易消化的数据目前不是一种选择。真正寻找转义逗号或用“匹配任何单个字符”运算符(如正则表达式中的点)替换它的解决方案。