全文索引Sphinx的安装配置及使用教程

搜索分为两种:

  1. 对结构化数据搜索:SQL语句对数据库中存储的内容进行查询。

  2. 对非结构化数据搜索:文本,图片,全文搜索。

 

全文检索分为两类:

  1. 顺序扫描:如SQL中的LIKE查询或regexp正则查询。

  2. 索引扫描:将非结构化数据提取部分(如:词组)后进行重组,使其机构化,这些提取出的数据即索引。

 

使用索引的全文检索包括两个过程:

  1. 索引创建(Index):将内容中的词组 与 文本的ID提取出来,创建一张索引表。

  2. 搜索索引(Search):将搜索内容拆分成词组,去索引表中匹配ID,查出文本内容。

  

如何创建索引:

  1. 将需要创建索引的文档交给分词组件(Tokenizer);

    分词组件所做的事:将文档生成单独的单词,去除标点符号,去除停词(the, a, 的, 是);每种语言的分词组件都有一个停词集合,

    经过分词组件后得到的结果成为词元。

 

  2. 将得到的词元(Token)传给语言处理组件(Linguistic Processer);

    语言处理组件对得到的词元进行同语言处理:如,英文变为小写(Lowercase),将单词缩减为词根形式,如“cars”到“car”等(stemming),将单词转变为词根形式,如“drove”到“drive”(lemmatization),

 

  3. 将得到的词(Term)传给索引组件(Indexer);

    索引组件主要做以下几件事:利用得到的词(Term)和文档ID,创建一个字典,对字典按字母顺序排序,合并相同的词成为文档倒排(Posting List)链表。

 

如何对索引进行搜索:

  1. 输入查询语句,提交给Sphinx。

  2. Sphinx对查询语句进行词法分析,语法分析及语言处理。

  3. 搜索索引,得到符合语法树的文档。

  4. 根据得到的文档和查询语句的相关性,对结果排序。

 

Sphinx是SQL Parse Index(查询词组索引)缩写,基于SQL的全文检索引擎。Coreseek支持中文的全文检索引擎。

Sphinx的优点:

高速的建立索引(在当代CPU上,可达到10M/秒)

高性能的搜索(在2-4G的文本数据上,平均每次检索响应时间小于0.1秒)

可处理海量数据(目前已知可以处理超过100GB的文本数据,在单一CPU的系统上可处理100M的文档);

提供了优秀的相关度算法,基于短语相似度和统计BM2的复合Ranking方法;

支持分布式搜索;

提供文档片段(摘要以及高亮)生成功能;

可作为MySQL的存储引擎提供搜索服务;

支持布尔、短语、词语相似度等多种检索方式;

文档支持多个全文检索字段(最大不超过32个);

 

Sphinx的缺点:

必须要有主键

主键必须为整形

不负责数据存储

配置不灵活

 

Sphinx的使用:

1. 下载Sphinx:

wget http://sphinxsearch.com/files/sphinx-2.2.8-release.tar.gz

 

编译安装:

cd /public/sphinx-2.2.8

./configure --prefix=/usr/local/sphinx --with-mysql=/usr/local/mysql

(rpm安装的mysql: ./configure --prefix=/usr/local/sphinx --with-mysql=/usr)

make && make install

 

安装完毕得到四个目录:

bin:存放命令,indexer索引组件,searchd进程

etc:配置文档

var:存放索引表

 

创建数据库表:

show database;  //查看所有数据库

create database test;

create table post(

  id int unsigned auto_increment primary key,

  title varchar(255) not null default '',

  content text default NULL

)engine=myisam default charset=utf8;

desc post;  //查看表结构

insert into post(title, content) values("linux", "linux11111");

 

2. 配置Sphinx:

cd /usr/local/sphinx/etc/

cp sphinx.conf.dist sphinx.conf  //备份配置文件,防止改错

vim sphinx.conf

配置文件结构:

# 主数据源,(main名字可更改)
source main{
  type     = mysql    #数据库类型
  sql_host  = localhost  #MySQL主机IP
  sql_user  = test     #MySQL用户名
  sql_pass  =        #MySQL密码
  sql_db   = test     #MySQL数据库
  sql_port  = 3306     #MySQL端口
  sql_sock  = /tmp/mysql.sock    #Linux下需要开启,指定sock文件
  sql_query_pre = SET NAMES utf8   #MySQL检索编码
  sql_query_pre = SET SESSION query_cache_type=OFF #关闭缓存
  sql_query = \             #获取数据的SQL语句
    SELECT id, title, content FROM post
  #sql_attr_uint = group_id      #对排序字段进行注释, 默认使用sphinx的文档表,这里不需要
  #sql_attr_timestamp = date_added  #对排序字段进行注释
  
}

# 增量数据源, 继承主数据源
source main throttled : main{
}

# 主索引,(main名字可更改)
index main{
  source  = main
  path   = /usr/local/sphinx/var/data/main
}

# 增量索引
index test1 stemmed : test1{
}

# 分布式索引,distributed index
index dist1{
}

# 实时索引,realtime index
index rt{
}

# 索引器,(调整最小内存到最佳)
indexer{
  mem_limit = 256M  #内存大小限制,默认128M,推荐256M
              #其它用默认即可
}

# 服务进程,(监听端口号)
searched{
  #全部默认即可,默认端口号就是9312
}

# 公共配置
common{
}

:set nu        //显示行号,:set nonu取消行号

:311,314s/^/#/g  //注释增量数据源

:628,632s/^/#/g  //注释增量索引

:639,696s/^/#/g  //注释分布式索引

 

3. 创建索引:

创建索引命令:indexer

-c     指定配置文件

--all    对所有索引重新编制索引

--rotate  用于轮换索引,在不停止服务的时候(searchd运行时)增加索引;searchd运行时不加会报错。

--merge  合并索引,增量索引合并到主索引的时候用

 

生成全部索引: /usr/local/sphinx/bin/indexer -c /usr/local/sphinx/etc/sphinx.conf --all

或生成指定索引: /usr/local/sphinx/bin/indexer -c /usr/local/sphinx/etc/sphinx.conf main

 

(1)如果这里出现报错:

【ERROR: index 'main': sql_connect: Can't connect to local MySQL server through socket '/tmp/mysql.sock'】

没找到/tmp/mysql.sock, 通过find / -name mysql.sock -print查找到位置,在配置sphinx.conf里更改正确。

如:mysql_sock = /var/lib/mysql/mysql.sock 保存退出。

 

(2)继续创建索引,警告:

【WARNING: Attribute count is 0: switching to none docinfo】

改sphinx.conf里的docinfo = none就没有警告了。(http://sphinxsearch.com/docs/current.html#conf-docinfo)

 

创建索引出现如下提示,表示生成成功:

时间: 2024-10-03 19:53:52

全文索引Sphinx的安装配置及使用教程的相关文章

Tomcat安装配置方法图文教程_Tomcat

用来进行web开发的工具有很多,Tomcat是其中一个开源的且免费的java Web服务器,是Apache软件基金会的项目.电脑上安装配置Tomcat的方法和java有些相同,不过首先需要配置好java的环境才行,点击此文查看:java环境变量如何配置. 接下来安装配置Tomcat: 1.下载Tomcat文件,文件是一个exe的安装文件,下载后直接安装即可. 下载地址在百度输入Tomcat进入官网即可找到下载文件.安装文件没有什么技巧,一直点击下一步即可. 2.同样安装时注意安装目录,因为一会要

mysql 5.7.13 winx64安装配置方法图文教程(win10)

本文实例为大家分享了mysql 5.7.13 winx64安装配置方法图文教程,供大家参考,具体内容如下 下载 地址:http://dev.mysql.com/downloads/file/?id=463242 安装 1.解压下载好的mysql-5.7.13-winx64.zip到你需要安转的目录(eg:D:\mysql): 2.配置解压目录下的my_default.ini中命名为my.ini 作相关的配置如下: # These are commonly set, remove the # an

win7下MySql 5.7安装配置方法图文教程_Mysql

上学的时候经常使用MySql,当时也没想其他,主要是MySql对电脑的要求比较低,负载比较小.工作后一直在使用Oracle,现在因为项目的需要,重新安装MySql,发现变化有点多. 本经验适用于安装MySql最新版本数据库. 具体实现步骤: 下载MySql,作者通过度娘搜索MySql,找到文件mysql-installer-community-5.7.3.0-m13.2063434697.msi,虽然这一个文件比较大,但是不用我们可以的区分64位还是32位,如图 双击安装包,会出现安装前准备,当

mysql 5.7.13 安装配置方法图文教程(win10)_Mysql

MySQL是一款关系型数据库管理系统,是由Oracle旗下公司MySQL AB 公司开发,是在web方面最好的.最流行的关系型数据库软件应用之一,深受广大个人使用者以及中小型企业的喜爱. 方法/步骤 双击安装文件,进入安装,如图所示,点击"next",进入下一步 在协议许可(LicenseAgreement)界面,勾选"Iacceptthelicenseterm",然后点击"next" 在选择安装类型(ChoosingaSetupType)界面,

mysql 5.7.13 winx64安装配置方法图文教程_Mysql

针对之前安装mysql的笔记进行了总结,分享给大家. 1.下载 下载地址:http://dev.mysql.com/downloads/mysql/ 根据电脑配置来选,我选了 windows(x86,64-bit),ZIP Archive这个,点击Download,页面跳转到如下图 点击最下面的No thanks,just start my download,开始下载. 我的mysql安装路径是D:\Mysql\mysql-5.7.13-winx64 2.配置my.ini文件,新增data文件夹

mysql 5.7.11 winx64安装配置方法图文教程_Mysql

在64位Windows7操作系统上安装和配置MySql数据库系统. 一.mysql5.7.11 winx64安装配置方法 步骤: 1.官网下载MySQL数据库和驱动程序(Windows):mysql-5.7.11-winx64.zip 2.创建数据库配置文件:my.ini Example: 1.解压压缩包至:D:\Program Files 2.创建 D:\Program Files\mysql-5.7.11-winx64\my.ini 配置文件 3.初始化和启动Mysql服务: 1.以管理员权

mysql 5.7.5 m15 winx64安装配置方法图文教程_Mysql

距离上次安装MySQL已经过去好久了,win7 64位下如何安装配置mysql-5.7.5-m15-winx64?.其实步骤就这些,有可能会忘记.简单记录一下吧.(参考了一些网络上的博客.)  1.mysql-5.7.5-m15-winx64.zip下载   2.解压到D:\MySqlDataBase  3.在D:\MySqlDataBase\mysql-5.7.5-m15-winx64下新建my.ini配置文件  内容如下: ####################配置文件开始########

mysql 5.7.16 安装配置方法图文教程_Mysql

结合网上的资料,自己亲自的去安装了一次MySQL,安装版本是win7x64 5.7.16. 在安装过程中出现并解决了如下问题: "mysql 服务无法启动 服务没报告任何错误" 1.下载: 地址:http://dev.mysql.com/downloads/mysql/ 2.安装: ZIP Archive版是免安装的.只要解压就行了.不需要安装.我的放在d盘啦. 3.配置: 也就是my.ini文件的由来. 把my-default.ini这个文件复制一下重命名my.ini,然后替换成如下

mysql 5.7以上版本安装配置方法图文教程(mysql 5.7.12\mysql 5.7.13\mysql 5.7.14)_Mysql

之前安装mysql 5.7.12时未做总结,换新电脑,补上安装记录,安装的时候,找了些网友的安装记录,发现好多坑 (一)mysql 5.7.13 安装配置方法 1.mysql-5.7.12-winx64.zip下载官方下载地址:http://dev.mysql.com/downloads/mysql/ 2.解压到C:\job\mysql-5.7.12-winx64 3.在C:\job\mysql-5.7.12-winx64下新建my.ini配置文件内容如下: ##################