你的位置:首页 > 软件开发 > 数据库 > [Sphinx]全文索引Sphinx的使用配置

[Sphinx]全文索引Sphinx的使用配置

发布时间:2015-03-17 15:00:40
------------------------------------------------------------------------------------搜索分为两种:  1. 对结构化数据搜索:SQL语句对数据库中存储的内容进行查询。  2. 对非结构化数据搜索: ...

[Sphinx]全文索引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{# 公共配置

原标题:[Sphinx]全文索引Sphinx的使用配置

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录