84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
Please tell me how to match the following keywords
For example, the database storage characters are: sfsdf4-1bbsdfsd;
The user inputs 41bb, 4 1bb, and this string can also be matched
How to do this? Thanks
你需要的不是 mysql 模糊搜索了吧。 需要搜索引擎的支持。
新建一个字段,存储去掉需要忽略的特殊字符后的字符串,比如 : sfsdf41bbsdfsd,查询的时候,也对关键字进行同样的操作,用新的字段去匹配
MySQL 支持正则表达式搜索,例如 SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';
我觉得应该先处理用户提交的数据,以空格分割线分割用户提交的数据,组成一个数组,然后用这个数组中的数据进行模糊查询,之后取出相同的数据。。。但是在大量用户以此种方式查询的情况下,我认为你的系统会被拖得很慢很慢,所以不建议用这种设计模式
题主的问题设置到分词搜索了,直接进行模糊搜索匹配不到的,使用正则表达式搜索的话效率太差,不推荐,而且场景太多了,自己开发实现的话,很难全部都考虑到.推荐使用一个搜索引擎吧,sphinx就很好用,对mysql的支持也很好.题主有php标签,如果常用php开发的话,用迅搜也很好,http://www.xunsearch.com/ 国人开发的,全中文的文档,用起来也很方便.
用搜索引擎吧,人家就是专业干这个的
你需要的不是 mysql 模糊搜索了吧。
需要搜索引擎的支持。
新建一个字段,存储去掉需要忽略的特殊字符后的字符串,比如 : sfsdf41bbsdfsd,查询的时候,也对关键字进行同样的操作,用新的字段去匹配
MySQL 支持正则表达式搜索,例如
SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';
我觉得应该先处理用户提交的数据,以空格分割线分割用户提交的数据,组成一个数组,然后用这个数组中的数据进行模糊查询,之后取出相同的数据。。。但是在大量用户以此种方式查询的情况下,我认为你的系统会被拖得很慢很慢,所以不建议用这种设计模式
题主的问题设置到分词搜索了,直接进行模糊搜索匹配不到的,使用正则表达式搜索的话效率太差,不推荐,而且场景太多了,自己开发实现的话,很难全部都考虑到.
推荐使用一个搜索引擎吧,sphinx就很好用,对mysql的支持也很好.
题主有php标签,如果常用php开发的话,用迅搜也很好,http://www.xunsearch.com/ 国人开发的,全中文的文档,用起来也很方便.
用搜索引擎吧,人家就是专业干这个的