gpt4 book ai didi

php - 在mysql bool 匹配中强制使用 "implied AND"而不是 "implied OR"?

转载 作者:行者123 更新时间:2023-11-29 06:23:09 25 4
gpt4 key购买 nike

在 mysql bool 匹配中,如果不存在运算符,则隐含 OR。如果您想要 AND,则需要为每个关键字添加 +。

因此查询“word1 word2”等于“word1 OR word2”,“+word1 +word2”等于“word1 AND word2”

我不希望用户必须在每个关键字前输入 +,我有什么选择?

建议选项 1:my.conf 中是否有某些内容我可以更改以设置默认值(我没有找到任何内容)

建议选项 2:解析查询并手动向每个单词添加 +。您可以分享任何简单的代码吗?

问题是,如果用户添加“引号”或运算符(+-*<>)等,它会破坏我的解析代码。

最佳答案

我在我的网站上提出了第二个建议。

如果您只处理单词(不处理带引号的字符串),则在每个单词之前添加 + 是一个简单的衬里

$q = implode(' ', array_map(create_function('$a', 'return "+".$a;'), preg_split('`\\s+`', $q))))

或者更简单的正则表达式替换做同样的事情:

echo preg_replace('`(\\W|^)\\w`', '\\1+\\2', $q);

如果您不仅要搜索单个单词,还需要搜索带引号的短语,则应在每个未带引号的单词和每个带引号的字符串之前添加 +

echo preg_replace('`(\\s|^)(\\w|"[^"]+")`', '\\1+\\2', $q);

关于php - 在mysql bool 匹配中强制使用 "implied AND"而不是 "implied OR"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1807414/

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