首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL全文搜索数字和字符是否被忽略?

问MYSQL全文搜索数字和字符是否被忽略?
EN

Stack Overflow用户
提问于 2013-04-10 19:07:57
回答 1查看 2.7K关注 0票数 3

我正在尝试做一个全文搜索,我正在查询的数据库有很多LCD屏幕尺寸。我需要做一个全文搜索,因为搜索短语可能很复杂,我们从LIKE比较开始,但它没有削减它。

这就是我们所得到的。

代码语言:javascript
复制
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个或更多字符(而不是默认的4个字符),并且像+NEC这样的搜索可以正常工作。

我的猜测是,要么是mysql中的全文搜索忽略了“字符”,要么就是数字。

不幸的是,我对数据库数据没有任何控制,否则我会用其他东西替换双引号。还有其他的解决方案吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-10 19:25:54

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

  • 修改MySQL源代码:在myisam/ftdefs.h中,请参阅true_word_char()和misc_word_char()宏。将'-‘添加到其中一个宏并重新编译MySQL。
  • 修改字符集文件:这不需要重新编译。true_word_char()宏使用“字符类型”表来区分字母和数字与其他字符。。您可以编辑其中一个字符集XML文件中的数组内容,以指定'-‘是一个“字母”。然后对全文索引使用给定的字符集。
  • 为索引列使用的字符集添加新的排序规则,并更改列以使用该排序规则。

我使用了第二种方法,这对我们很有效。The provided page在页面末尾的评论中有一个详细的例子( John Navratil评论)。

在任何情况下,您都需要在更改设置后重新构建索引:REPAIR TABLE tbl_name QUICK;

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15924157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档