`

初识sphinx搜索引擎

阅读更多

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

 

 

分享到:
评论

相关推荐

    Sphinx搜索引擎架构与使用文档(和MySQL结合)V1.1.

    1、搜索引擎架构图(基于PHP+MySQL+Sphinx): 3 2、搜索引擎架构设计思路: 3 ⑴、调用方式最简化: 3 ⑵、创建索引、查询速度快: 3 ⑶、按服务类型进行分离: 4 ⑷、“主索引+增量索引”更新方式: 4 ⑸、“Ext3...

    php连接和操作sphinx搜索引擎的程序示例.zip

    Sphinx 是一个高性能的开源全文搜索服务器,它可以提供快速的文本搜索功能。Sphinx 特别适用于需要快速搜索大量数据的场景,比如网站搜索、...本压缩包即包括了sphinx扩展包及php连接和操作sphinx搜索引擎的程序示例.

    cpp-Docker支持中文分词的Sphinx搜索引擎

    Docker 支持中文分词的Sphinx搜索引擎

    Sphinx搜索引擎架构与使用文档(和MySQL结合)

    Sphinx搜索引擎架构与使用文档(和MySQL结合)

    PHP搜索引擎Sphinx使用教程.zip

    1. **Sphinx搜索引擎**:Sphinx是一款独立的、高性能的全文检索引擎,支持实时索引和千万级数据量的搜索。它的主要特点包括快速的全文索引、准确定位结果、丰富的排序方式以及对多种数据库的支持,如MySQL和...

    Sphinx搜索引擎说明&&搭建

    Sphinx搜索引擎说明&&搭建详细文档

    Sphinx搜索引擎架构与使用文档(和MySQL结合)V1.1_张宴

    Sphinx 是一个高性能的全文搜索引擎,常用于网站和应用程序中,提供快速且精确的搜索功能。它不依赖于传统的数据库,而是使用自己的索引结构,能够显著提高搜索效率。Sphinx 支持多种数据源,如 MySQL,允许开发者将...

    张宴Sphinx搜索引擎架构与使用文档(和MySQL结合)V1.1.doc

    ### Sphinx搜索引擎架构与使用知识点详解 #### 一、搜索引擎架构设计 Sphinx搜索引擎的设计与部署,结合了PHP、MySQL和Sphinx自身的优势,构建了一个高效、可扩展的搜索平台。以下是对架构设计的关键点的详细解析...

    Sphinx搜索引擎架构与使用文档(和MySQL结合)[收集].pdf

    Sphinx搜索引擎是一款高性能、全文检索引擎,常用于构建高效能的搜索引擎系统。它主要与关系型数据库如MySQL结合使用,提供快速、精准的全文搜索功能。本文档将详细介绍Sphinx的架构设计以及与MySQL的集成使用方法。...

    带有sphinx搜索功能的yii2框架实例

    Yii2是一款快速、安全且可扩展的PHP框架,而Sphinx是一个开源的、高性能的全文搜索引擎,它允许快速、精确地进行大数据量的搜索。 首先,让我们了解Sphinx的核心特性。Sphinx提供了实时索引、分布式搜索能力以及...

    Sphinx搜索引擎架构与使用文档(和MySQL结合).pdf

    总之,Sphinx是一个强大的搜索引擎工具,与MySQL的集成使得数据检索更加便捷高效,特别适合需要快速、准确搜索功能的Web应用。正确理解和运用Sphinx的架构设计和安装步骤,能为企业的信息检索系统带来显著的提升。

    sphinx全文搜索引擎

    Sphinx全文搜索引擎是一款高效、可定制的开源全文检索引擎,主要设计用于网站后台提供快速、准确的全文搜索功能。它最初由俄罗斯开发者Andrew Aksyonoff开发,现在已经成为许多大型网站和应用程序的重要组成部分,...

    PhpSou搜索引擎(整合sphinx) v3.1.1

    《PHPSou搜索引擎(整合Sphinx) v3.1.1详解》 PHPSou搜索引擎是一款基于PHP开发的开源搜索引擎,其核心特色在于与Sphinx搜索引擎的深度整合,为用户提供高效、精准的全文检索功能。在v3.1.1版本中,开发者对软件进行...

    数据库 搜索引擎 sphinx

    数据库搜索引擎Sphinx是一款高效、可定制且功能丰富的全文搜索引擎,主要设计用于Web应用,以便快速地从大量数据中检索相关信息。Sphinx的核心特性包括实时索引、近实时搜索以及高度可扩展性,使得它在处理大数据量...

    C++ 开发的sphinx垂直搜索引擎

    **C++ Sphinx 垂直搜索引擎详解** Sphinx 是一个高效、可扩展的全文搜索引擎库,特别适合于作为嵌入式解决方案使用。它由 C++ 编写,提供了丰富的功能和高度灵活性,允许开发者将其集成到自己的应用程序中,实现...

    (word完整版)Sphinx搜索引擎架构与使用文档(和MySQL结合)V1.1.doc

    Sphinx 是一个高性能全文搜索引擎,常用于互联网应用中,它能提供快速的全文检索功能,并且可以与数据库如 MySQL 结合使用。以下是关于 Sphinx 搜索引擎的架构与使用的一些关键知识点: 1. **搜索引擎架构设计**: ...

    sphinx搜索引擎

    Sphinx搜索引擎是一款高效、强大的全文检索引擎,专为大规模数据处理和实时搜索而设计。它在处理海量数据时表现出色,对于需要快速、精准检索大数据的应用场景尤其有用。以下是对Sphinx搜索引擎及其相关知识点的详细...

    基于Sphinx+MySql+Python的站内搜索引擎的设计与实现.pdf

    综上所述,本文讨论了如何利用Sphinx作为全文搜索引擎核心,结合MySQL数据库和Python编程,为基于Linux+Apache的网站架构设计并实现一个高性能的站内搜索引擎。文章中提到的技术点不仅涉及到了搜索引擎的构建原理,...

Global site tag (gtag.js) - Google Analytics