当前位置:  数据库>mysql

mysql中使用sphinx搜索子域名需注意的问题

    来源: 互联网  发布时间:2014-10-08

    本文导语:  搜索子域名 比如搜索会把www.、、host.等都搜索出来。 如果使用mysql用like的话效率是非常低的,几百万甚至上千万的数据那是没有办法使用的,于是采取sphinx来做。 在使用的过程中发现了诸多问题,这里将其总结起来,也让不...

搜索子域名

比如搜索会把www.、、host.等都搜索出来。

如果使用mysql用like的话效率是非常低的,几百万甚至上千万的数据那是没有办法使用的,于是采取sphinx来做。

在使用的过程中发现了诸多问题,这里将其总结起来,也让不知道的朋友注意下这些字符。

分析:
sphinx是全文索引,它搜索的是包含的记录。

首先如果我们不做任何设置的话,搜索会出现把aa、jb51.a.cn、.com(当然这个域名后缀不存在,但是会有符合相应规则的域名,这里只举例)等等。

为什么会出现这种情况呢?

我们使用./search -c 配置文件 -i 索引名 '' 搜索的时候会发现下面words部分被分成了两部分'jb51'和'cn',默认以.作为分隔符,如果我们不想让它做为分隔符,就需要把.添加到charset_table里面,这里需要说的是我们搜索域名只需要有字母、数字、"-"等字符,其他的不需要。设置如下:
charset_table = 0..9,A..Z->a..z, a..z,U+002e,U+002d,U+0040,U+0060  #其中U+002e代表".",U+002d代表"-",U+0040代表"@",U+0060代表"`",这里为ascii码值。
这样会解决掉搜出jb51.a.cn这类域名。

那么.com这类呢?我们可以在索引的字段中增加惟一后缀比如“XXXXX”,concat(search,'XXXXX')这样,就不会出来了。

现在就剩下aa这类域名,我们使用关键字“ '"."' ”(注意是单引号里面套双引号)这样来搜索,主域名单独加上,但是使用的过程中发现这样搜出了与这个域名无关的域名,比如aa.bb.cn这样,经后来研究是"."的问题,后来把"."替换成"@",来搜索又出现12306等好多域名无法读取到的问题,后来经研究估计这些特殊字符在sphinx中都有特殊的意义,于是找到了"`"这个字符,换成这个以后一切才算正常了。

注意:将"."替换成"`"等相应字符后需在charset_table里增加这个字符,不然是被忽略的。

所以在搜索的过程中我们需要注意下这些特殊字符。


    
 
 

您可能感兴趣的文章:

  • 在Windows平台上升级MySQL注意事项
  • mysql中文排序注意事项与实现方法
  • 远程连接mysql数据库注意点记录
  • 求教:如何把win2000下的网站(mysql+jsp+jboss)安装到liunx下?要注意哪些细节?
  • MYSQL索引建立需要注意以下几点细节
  • 关于MySQL数据迁移--data目录直接替换注意事项的详解
  • 在linux或unix服务器上安装、使用MySQL的注意事项
  • 远程连接mysql数据库注意事项记录(远程连接慢skip-name-resolve)
  • MySQL表字段设置默认值(图文教程及注意细节)
  • 学校要做一个关于学生就业的网站,我以前用过asp现在 想用linux+mysql+apache做平台,大家给个注意...
  • 关于MySQL索引的几点值得注意的事项
  • MySQL的23个需要注意的地方
  • MySQL数据库向Oracle转换时注意若干问题
  • MySQL转换Oracle的需要注意的七个事项
  • 移动开发 iis7站长之家
  • mysql中group by与having合用注意事项分享
  • MySQL数据库安全设置与注意事项小结
  • 使用MySQL MySqldump命令导出数据时的注意事项
  • MySQL索引类型总结和使用技巧以及注意事项
  • Mysql 数据库常用备份方法和注意事项
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • MySQL Workbench的下载安装与使用教程
  • mysql使用问题!急...
  • java将类序列化并存储到mysql(使用hibernate)
  • 如何在linux下使用mysql
  • mysql的SQL_NO_CACHE(在查询时不使用缓存)和sql_cache用法
  • 请问MYSQL在LINUX下如何配置(使用)
  • mysql数据库下载安装教程和使用技巧
  • 使用mysql中遇到的几个问题
  • 初学,关于linux下使用mysql以及卸载的问题
  • 我在linux8.0下装了mysql,已经运行进程mysqld,但怎么设置和使用它呢?
  • linux 下怎么使用mysql-administrator?
  • 教你如何快捷的使用cmd访问mysql小技巧
  • 使用dreamhost空间实现MYSQL数据库备份方法
  • 有关linux下MySql的安装和使用
  • 急!急!急!急!使用MySQL出现的问题
  • python文件读写并使用mysql批量插入示例分享(python操作mysql)
  • linux使用mysql删除数据库的问题,谢谢!
  • 使用JDBC,用什么方法可以知道MYSQL中有几个库,每个库有几个表?
  • mysql求和函数使用示例
  • mysql中的Load data的使用方法
  • 使用MySQL Slow Log来解决MySQL CPU占用高的问题
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 在 linux下输入"mysql"命令,进入mysql命令行,但出现“Can't connetc to local MySQL server thuough socket /var/lib/mysql/mysql.sock
  • Mysql查询错误:ERROR:no query specified原因
  • MySQL 重装MySQL后, mysql服务无法启动
  • php安装完成后如何添加mysql扩展
  • 为什么用linux安装盘安装了mysql后,启动mysql,提示找不到mysql.sock文件?
  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • 請教,在redhat linux7.2+mysql 中,系統提示mysql已啟動,網頁卻不能訪問mysql?
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 求解释: useradd -g mysql mysql -d /home/mysql -s /sbin/nologin


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3