[英]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.