Mysql应用mysql中使用sphinx搜索子域名需注意的问题
《Mysql应用mysql中使用sphinx搜索子域名需注意的问题》要点: 搜索子域名MYSQL数据库 好比搜索aspzz.cn会把www.aspzz.cn、aspzz.cn、host.aspzz.cn等都搜索出来.MYSQL数据库 如果使用mysql用like的话效率是非常低的,几百万甚至上千万的数据那是没有方法使用的,于是采取sphinx来做.MYSQL数据库 在使用的过程中发现了诸多问题,这里将其总结起来,也让不知道的朋友注意下这些字符.MYSQL数据库 分析: 首先如果我们不做任何设置的话,搜索aspzz.cn会出现把aaaspzz.cn、jb51.a.cn、aspzz.cn.com(当然这个域名后缀不存在,但是会有符合相应规则的域名,这里只举例)等等.MYSQL数据库 为什么会出现这种情况呢?MYSQL数据库 我们使用./search -c 配置文件 -i 索引名 'aspzz.cn' 搜索的时候会发现下面words部分被分成了两部分'jb51'和'cn',默认以.作为分隔符,如果我们不想让它做为分隔符,就需要把.添加到charset_table里面,这里需要说的是我们搜索域名只需要有字母、数字、"-"等字符,其他的不需要.设置如下: 那么aspzz.cn.com这类呢?我们可以在索引的字段中增加惟一后缀好比“XXXXX”,concat(search,'XXXXX')这样,就不会出来了.MYSQL数据库 现在就剩下aaaspzz.cn这类域名,我们使用关键字“ '".aspzz.cn"' ”(注意是单引号里面套双引号)这样来搜索,主域名单独加上,但是使用的过程中发现这样搜出了与这个域名无关的域名,好比aa.bb.cn这样,经后来研究是"."的问题,后来把"."替换成"@",来搜索又出现12306等好多域名无法读取到的问题,后来经研究估计这些特殊字符在sphinx中都有特殊的意义,于是找到了"`"这个字符,换成这个以后一切才算正常了.MYSQL数据库 注意:将"."替换成"`"等相应字符后需在charset_table里增加这个字符,不然是被忽略的.MYSQL数据库 所以在搜索的过程中我们必要注意下这些特殊字符.MYSQL数据库 编程之家PHP培训学院每天发布《Mysql应用mysql中使用sphinx搜索子域名需注意的问题》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |