我正在项目中实现搜索,因此我必须按任意顺序搜索数据,所以我要遵循this question。但是我的查询不起作用

我的PHP查询是

 $cat="(?=.*Women)(?=.*Rings)";
 $sql="select * from tbl_jewellery where categories RLike '$cat';";


当我将正则表达式更改为Women.*Ring|Ring.*Women
它可以正常工作,但是(?=.*Women)(?=.*Rings)方法很简单,可以将多个单词添加在一起就可以使用它们。

最佳答案

MySQL在REGEXP中未实现(?语法。我认为MariaDB 10.0.5可以。

对于此类查询的重要子集,您可以在此FULLTEXT上使用categories索引,其方法如下:

MATCH(categories)
    AGAINST('+women +rings' IN BOOLEAN MODE)


也就是说两个“单词”都出现了,而没有顺序或接近度的限制。

09-16 23:19