繁体   English   中英

MySQL 如果下划线附加到搜索词,则 MATCH AGAINST 找不到结果

[英]MySQL MATCH AGAINST not find results if an underscore is attached to the search term

我使用全文索引来更快地查找结果,并且效果很好,除非我搜索的术语附加到数据库记录中的下划线


我的数据库记录:

article.title
++++++++++++++++++++++++++++++

My article 123456 created
------------------------------
My article new_123456 created
------------------------------
My article 123456_new created

我对查询的匹配:

MATCH(article.title) AGAINST ( "123456*" IN BOOLEAN MODE )


此查询仅返回第一条记录并忽略其他记录,因为术语“123456”附加到下划线 (_) ,无论是在术语之前还是之后,查询都将忽略这些记录。

我做错了什么以及如何解决这个问题?

有很多事情会搞乱 FULLTEXT:

  • 标点
  • “停止词”
  • 最小字“长度”
  • 语言

有时最好在存储数据之前对其进行编辑。 在您的情况下,将"_"替换为" "可能是“正确”的解决方案。 这可以在插入字符串时在应用程序代码中完成,也可以在字符串为INSERTed时使用 MySQL 的REPLACE()来完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM