gpt4 book ai didi

MYSQL全文搜索数字和字符被忽略?

转载 作者:可可西里 更新时间:2023-11-01 08:50:03 25 4
gpt4 key购买 nike

我正在尝试进行全文搜索,我正在查询的数据库有很多 LCD 屏幕尺寸。例如 32"。我需要进行全文搜索,因为搜索短语可能很复杂,我们从 LIKE 比较开始,但没有成功。

这就是我们所拥有的。

SELECT stock_items.name AS si_name,
stock_makes.name AS sm_name,
stock_items.id AS si_id
FROM stock_items
LEFT JOIN stock_makes ON stock_items.make = stock_makes.id
WHERE MATCH (stock_items.name,
stock_makes.name) AGAINST ('+32"' IN BOOLEAN MODE)
AND stock_items.deleted != 1

通过这次搜索,我们得到 0 个结果。虽然32"在赛场上多次出现。我们已经修改了 mysql 配置以允许我们搜索 3 个或更多字符(而不是默认的四个)并且像 +NEC 这样的搜索工作正常。

我的猜测是 a) mysql 中的全文搜索会忽略 "字符或数字。

不幸的是,我无法控制数据库数据,否则我会用其他内容替换双引号。还有其他解决方案吗?

最佳答案

MySQL 在索引时忽略某些字符,"我认为是其中之一。有几种方法可以更改默认字符设置,如 here 所述

  • 修改 MySQL 源代码:在 myisam/ftdefs.h 中,查看 true_word_char() 和 misc_word_char() 宏。将“-”添加到其中一个宏并重新编译 MySQL。

  • 修改字符集文件:不需要重新编译。 true_word_char() 宏使用“字符类型”表来区分字母和数字与其他字符。 .您可以在其中一个字符集 XML 文件中编辑数组的内容,以指定“-”是一个“字母”。然后为您的 FULLTEXT 索引使用给定的字符集。

  • 为索引列使用的字符集添加新的排序规则,并更改列以使用该排序规则。

我使用了第二种方法并且对我们有用。 The provided page在页面末尾的评论中有详细的示例(John Navratil 的评论)。

在任何情况下,您都需要在更改设置后重建索引:快速修复表 tbl_name;

关于MYSQL全文搜索数字和字符被忽略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15924157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com