• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > mysql中使用sphinx搜索子域名需注意的问题

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

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了mysql sphinx,sphinx,sphinx是什么意思,sphinx教程,sphinx安装等相关知识,希望本文的分享对您有所帮助

搜索子域名

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

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

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

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

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

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

我们使用./search -c 配置文件 -i 索引名 'weikejianghu.com' 搜索的时候会发现下面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这类域名。

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

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

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

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

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • mysql中使用sphinx搜索子域名需注意的问题
  • Sphinx/MySQL 协议支持与SphinxQL应用实例
  • 在MySQL中使用Sphinx实现多线程搜索的方法

相关文章

  • 2017-05-11MySQL中使用innobackupex、xtrabackup进行大数据的备份和还原教程
  • 2017-05-11svm各种工具箱 方法以后查找
  • 2018-12-05MySQL学习笔记之数据定义表约束,分页方法总结_MySQL
  • 2018-12-05MySQL两大存储引擎InnoDB与MyISAM的区别
  • 2018-12-05详解oracle中存储函数与存储过程
  • 2018-12-05linux如何查看mysql是否启动?
  • 2018-12-05MySQL如何创建和删除索引?
  • 2017-05-11mysql 数据库基础笔记
  • 2017-05-11MySQL配置文件my.cnf优化详解(mysql5.5)
  • 2018-12-05sql图形化操作设置级联更新和删除

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Sql Server查询性能优化之不可小觑的书签查找介绍
    • 教会你完全搞定MySQL数据库 轻松八句话
    • mysql自动获取时间日期的方法
    • MySQL之-基于Amoeba实现读写分离详解(图文)
    • mysql性能优化指南
    • 关于ANTS的详细介绍
    • mysql修改自增长主键int类型为char类型示例
    • mysql5.7.13 环境搭建教程(解压缩版)_MySQL
    • 全新感受Oracle 9i
    • 如何通过PHP实现Mysql数据库连接、查询、记录集等操作

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有