gpt4 book ai didi

mysql - mysql MATCH 中的破折号字符

转载 作者:行者123 更新时间:2023-11-29 22:43:41 26 4
gpt4 key购买 nike

我有一个按年份/系列编号的文档表,如下所示:13-201(这将是 2013 年的文档 201)。

我想对此表执行 MATCH AGAINST 全文查询,以便用户可以使用类似

的查询获取 2013 年以来所有文档的列表
MATCH (doc_id) AGAINST ('+13-*' IN BOOLEAN MODE)

但是,这不会返回任何结果。但是,当我在任一方向稍微修改以删除破折号时,这些查询都会返回结果(并不完全是我所希望的:

MATCH (doc_id) AGAINST ('+13*' IN BOOLEAN MODE)
MATCH (doc_id) AGAINST ('+13-20*' IN BOOLEAN MODE)

破折号是匹配语法中的非法/保留字符吗?有办法逃脱吗?

谢谢

编辑:我意识到我可以通过其他方式执行此查询(例如 LIKE,但我想使用匹配/反对语法,这样我也可以根据需要搜索其他列,例如标题等

最佳答案

真的,为什么不在列上放置一个常规索引并使用:

WHERE doc_id LIKE '13-%'

使用数字进行全文搜索充满了问题。您需要调查哪些字符分隔单词(连字符可能是单词分隔符)。您需要研究哪些字符可以开始单词(数字可能不是单词开始字符)。您需要注意最小字长(4)。

如果您有一个包含六个字符代码的字段,则常规索引应该足以查找文档。

关于mysql - mysql MATCH 中的破折号字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29219853/

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