0

I am implementing search in my project so I have to search data which will be in any order so I'm following this question. But my query was not working

my php query is

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

when I change regex to Women.*Ring|Ring.*Women It works fine but (?=.*Women)(?=.*Rings) approach is easy and can be used for multiple words just adding them.

Community
  • 1
  • 1
Abhishek Singh
  • 9,008
  • 5
  • 28
  • 53

1 Answers1

1

MySQL does not implement (? syntax in REGEXPs. I think MariaDB 10.0.5 does.

For a significant subset of such queries, you could use a FULLTEXT index on that categories with this:

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

That says both "words" occur, without limitations on order or proximity.

Rick James
  • 135,179
  • 13
  • 127
  • 222