我在 Windows XAMPP 环境中创建了 MySQL (MariaDB) 全文搜索。一切都运转良好。但是,当将其放在实时服务器上(也使用 MariaDB)时,我收到一个 1690 Double value is out of range 错误,其中数据完全相同。
我认为问题出在 MariaDB 设置中的某个地方。我只是不知道这可能是哪个设置。
这是简化的查询:
SELECT id, (MATCH (name) AGAINST ('"exactSearchPhrase"' IN BOOLEAN MODE)*3 + MATCH (name) AGAINST ('single*, Words*, Search*, Phrase*' IN BOOLEAN MODE)) as relevance, name FROM tableName WHERE MATCH(name) AGAINST('search Phrase' IN BOOLEAN MODE) ORDER BY relevance DESC
这是我得到的错误
数值超出范围:1690 DOUBLE 值超出 '(match
nameagainst ('"exactSearchPhrase"' in boolean mode)) * 3 的范围
有谁知道哪种设置可能会导致这种行为可能与我的标准 Xampp 环境中的行为不同?
经过一些尝试和错误后进行编辑: 对匹配结果的任何类型的操作都会导致此错误。这让我更加困惑:
没有错误:
SELECT id, (MATCH (name) AGAINST ('"exactSearchPhrase"' IN BOOLEAN MODE)) as relevance, name FROM tableName WHERE MATCH(name) AGAINST('search Phrase' IN BOOLEAN MODE) ORDER BY relevance DESC
错误:
SELECT id, (MATCH (name) AGAINST ('"exactSearchPhrase"' IN BOOLEAN MODE)+0) as relevance, name FROM tableName WHERE MATCH(name) AGAINST('search Phrase' IN BOOLEAN MODE) ORDER BY relevance DESC
编辑: 我最终再次构建了整个表格。看来是全文索引本身的问题。
尝试ANALYZE TABLE table_name。这对我有用。
最近,在 MySQL 升级后,我在 DigitalOcean 托管数据库上遇到了同样的问题,我认为这涉及到切换到副本。当我将相关性分数乘以任何数字(包括* 1. 当我在没有乘法的情况下运行查询时,查询成功了。
通过将 MySQL 文档中的示例与我的数据中的类似搜索进行比较来判断,相关性分数对我来说似乎不正确。所以我认为 FULLTEXT 索引有问题,然后运行ANALYZE TABLE,然后它再次正常工作。
我不知道问题的确切原因,但我确实注意到我的情况和OP的情况下切换服务器的相似之处。
| 归档时间: |
|
| 查看次数: |
760 次 |
| 最近记录: |