http://sphinxsearch.com/
Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎.
1.体验
下载源码,在linux下安装。按照http://sphinxsearch.com/docs/1.10/quick-tour.html中的步骤。
安装:
$ wget http://sphinxsearch.com/downloads/sphinx-1.10-beta.tar.gz
$ tar xfv sphinx-1.10-beta.tar.gz
$ cd sphinx-1.10.beta
$ ./configure --prefix=/usr/local/sphinx
$ make && make install
修改配置文件, 将sphinx.conf.dist拷贝为sphinx.conf, 对于sphinx自带的例子,不用修改sphinx.conf
$ cd /usr/local/sphinx/etc
$ cp sphinx.conf.dist sphinx.conf
$ vi sphinx.conf
执行数据库脚本(使用mysql数据源)
$ mysql -u test < /usr/local/sphinx/etc/example.sql
建立索引
$ cd /usr/local/sphinx/etc
$ ../bin/indexer --all
查询关键字test
$ ../bin/search test
使用服务器/客户端方式查询,首先启动查询服务
$ ../bin/searchd
到源码目录
$ cd sphinx-1.10-beta/api
用PHP客户端查询
$ php test.php test
用java客户端查询,先执行mk.cmd编译代码
$ java -jar sphinxapi.jar test
2.索引更新/删除
在实际应用中,不太可能每次将所有的数据重新建索引。文档中有讲增量索引更新(Delta index updates),索引合并(Index merging)。定期将新增的数据做索引(idx_delta),然后合并到原索引(idx_main)上去
命令: indexer --merge idx_main idx_delta
通过使用参数merge-dst-rang和设置属性值,可在索引合并的时候删除原索引(idx_main)中的属性值不符合过滤条件的索引。
命令: indexer --merge <dst-index> <src-index> --merge-dst-range <attr> <min> <max>
例如: indexer --merge idx_main idx_delta --merge-dst-range deleted 0 0 deleted为一个属性(Attributes), 保留属性值在0到0间的索引
原索引中的属性值可以通过APIUpdateAttributes修改
新版本的sphinx还有个Real-time indexes 没看
#索引合并的配置文件(在自带的例子上修改)
#mysql
create table sph_counter(
counter_id int primary key not null,
max_doc_id int not null,
max_delta_id int not null
);
#加个属性deleted, 值1表示删除
alter table documents add deleted int default 0;
#sphinx.conf
source src_main
{
#最大的记录ID
sql_query_pre = replace into sph_counter select 1, max(id), 0 from documents;
#所有记录(假设查询的时候没有记录写入)
sql_query = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content, deleted FROM documents WHERE deleted = 0 and id <= (SELECT max_doc_id FROM sph_counter WHERE counter_id=1)
}
source src_delta : src_main
{
#新增记录的ID最大值
sql_query_pre = replace into sph_counter select 1, (select max_doc_id from sph_counter) as max_doc_id, (select max(id) from documents) as max_delta_id from dual;
#新增记录
sql_query = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content, deleted FROM documents WHERE deleted =0 and id <= (SELECT max_delta_id FROM sph_counter WHERE counter_id=1) and id > (SELECT max_doc_id FROM sph_counter WHERE counter_id=1)
#max_delta_id更新到max_doc_id
sql_query_post = update sph_counter set max_doc_id = max_delta_id where counter_id = 1 and max_delta_id > max_doc_id;
}
index idx_main
{
source = src_main
path = /usr/local/sphinx/var/data/test_main
}
index idx_delta : idx_main
{
source = src_delta
path = /usr/local/sphinx/var/data/test_delta
}
用PHP API更新索引,设置记录2的deleted为1
$cl->UpdateAttributes ( "idx_main", array("deleted"), array(2=>array(1)) );
用java API
String[] attrs = new String[1];
attrs[0] = "deleted";
long[][] values = new long[1][2];
values[0] = new long[2]; values[0][0] = 2; values[0][1] = 1;
int res = cl.UpdateAttributes ( "idx_main", attrs, values );
通过带参数merge-dst-ran的索引合并后,idx_main中的记录1的索引将被删除
3. 中文分词
Coreseek开源中文检索引擎, Sphinx-for-chinese
参考:
http://www.sphinxsearch.org/archives/82
分享到:
相关推荐
1、搜索引擎架构图(基于PHP+MySQL+Sphinx): 3 2、搜索引擎架构设计思路: 3 ⑴、调用方式最简化: 3 ⑵、创建索引、查询速度快: 3 ⑶、按服务类型进行分离: 4 ⑷、“主索引+增量索引”更新方式: 4 ⑸、“Ext3...
Sphinx 是一个高性能的开源全文搜索服务器,它可以提供快速的文本搜索功能。Sphinx 特别适用于需要快速搜索大量数据的场景,比如网站搜索、...本压缩包即包括了sphinx扩展包及php连接和操作sphinx搜索引擎的程序示例.
Docker 支持中文分词的Sphinx搜索引擎
Sphinx搜索引擎架构与使用文档(和MySQL结合)
1. **Sphinx搜索引擎**:Sphinx是一款独立的、高性能的全文检索引擎,支持实时索引和千万级数据量的搜索。它的主要特点包括快速的全文索引、准确定位结果、丰富的排序方式以及对多种数据库的支持,如MySQL和...
Sphinx搜索引擎说明&&搭建详细文档
Sphinx 是一个高性能的全文搜索引擎,常用于网站和应用程序中,提供快速且精确的搜索功能。它不依赖于传统的数据库,而是使用自己的索引结构,能够显著提高搜索效率。Sphinx 支持多种数据源,如 MySQL,允许开发者将...
### Sphinx搜索引擎架构与使用知识点详解 #### 一、搜索引擎架构设计 Sphinx搜索引擎的设计与部署,结合了PHP、MySQL和Sphinx自身的优势,构建了一个高效、可扩展的搜索平台。以下是对架构设计的关键点的详细解析...
Sphinx搜索引擎是一款高性能、全文检索引擎,常用于构建高效能的搜索引擎系统。它主要与关系型数据库如MySQL结合使用,提供快速、精准的全文搜索功能。本文档将详细介绍Sphinx的架构设计以及与MySQL的集成使用方法。...
在这种情况下,引入专门的全文搜索引擎如Sphinx就显得尤为重要。 #### 二、Sphinx简介 Sphinx是一款由俄罗斯开发者Andrew Aksyonoff创建的高性能全文搜索软件包,它支持多种操作系统,并提供了丰富的功能和高度的...
Yii2是一款快速、安全且可扩展的PHP框架,而Sphinx是一个开源的、高性能的全文搜索引擎,它允许快速、精确地进行大数据量的搜索。 首先,让我们了解Sphinx的核心特性。Sphinx提供了实时索引、分布式搜索能力以及...
总之,Sphinx是一个强大的搜索引擎工具,与MySQL的集成使得数据检索更加便捷高效,特别适合需要快速、准确搜索功能的Web应用。正确理解和运用Sphinx的架构设计和安装步骤,能为企业的信息检索系统带来显著的提升。
Sphinx全文搜索引擎是一款高效、可定制的开源全文检索引擎,主要设计用于网站后台提供快速、准确的全文搜索功能。它最初由俄罗斯开发者Andrew Aksyonoff开发,现在已经成为许多大型网站和应用程序的重要组成部分,...
数据库搜索引擎Sphinx是一款高效、可定制且功能丰富的全文搜索引擎,主要设计用于Web应用,以便快速地从大量数据中检索相关信息。Sphinx的核心特性包括实时索引、近实时搜索以及高度可扩展性,使得它在处理大数据量...
**C++ Sphinx 垂直搜索引擎详解** Sphinx 是一个高效、可扩展的全文搜索引擎库,特别适合于作为嵌入式解决方案使用。它由 C++ 编写,提供了丰富的功能和高度灵活性,允许开发者将其集成到自己的应用程序中,实现...
Sphinx 是一个高性能全文搜索引擎,常用于互联网应用中,它能提供快速的全文检索功能,并且可以与数据库如 MySQL 结合使用。以下是关于 Sphinx 搜索引擎的架构与使用的一些关键知识点: 1. **搜索引擎架构设计**: ...
Sphinx搜索引擎是一款高效、强大的全文检索引擎,专为大规模数据处理和实时搜索而设计。它在处理海量数据时表现出色,对于需要快速、精准检索大数据的应用场景尤其有用。以下是对Sphinx搜索引擎及其相关知识点的详细...
综上所述,本文讨论了如何利用Sphinx作为全文搜索引擎核心,结合MySQL数据库和Python编程,为基于Linux+Apache的网站架构设计并实现一个高性能的站内搜索引擎。文章中提到的技术点不仅涉及到了搜索引擎的构建原理,...
Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,...