`
zhaohaolin
  • 浏览: 1017827 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

利用Sphinx实现实时全文检索

    博客分类:
  • JAVA
 
阅读更多

Sphinx 0.9.9及以前的版本,原生不支持实时索引,一般的做法是通过主索引+增量索引的方式来实现“准实时”索引,最新的1.10.1(trunk中,尚未发 布)终于支持real-time index,查看SVN中文档,我们很容易利用Sphinx搭建一个按需索引(on demand index)的全文检索系统。

参考文章:http://filiptepper.com/2010/05/27/real-time-indexing-and-searching-with-sphinx-1-10-1-dev.html

首先,从sphinxsearch的SVN下载最新的代码,编译安装:

svn
 checkout http://
sphinxsearch.googlecode.com/
svn/
trunk sphinx
cd
 sphinx/

./
configure --prefix
=/
path/
to/
sphinx
make

make
 install

编译没问题的话,在sphinx安装目录下的etc,建立sphinx.conf的配置文件,记得一定指定中文编码方面的配置搜索,否则中文会有问题:

index rt {
    # 指定索引类型为real-time index
    type = rt
    # 指定utf-8编码
    charset_type  = utf-8
    # 指定utf-8的编码表
    charset_table  = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
    # 一元分词
    ngram_len = 1
    # 需要分词的字符
    ngram_chars   = U+3000..U+2FA1F
    # 索引文件保存地址
    path = /path/to/sphinx/data/rt
    # 索引列
    rt_field = message
    # 索引属性
    rt_attr_uint = message_id
}
 
searchd {
    log = /path/to/sphinx/log/searchd.log
    query_log = /path/to/sphinx/log/query.log
    pid_file = /path/to/sphinx/log/searchd.pid
    workers = threads
    # sphinx模拟mysql接口,不需要真正的mysql,mysql41表示支持mysql4.1~mysql5.1协议
    listen = 127.0.0.1:9527:mysql41
}

启动sphinx服务:

/
path/
to/
sphinx/
bin/
searchd --config
 /
path/
to/
sphinx/
etc/
sphinx.conf

插入几条数据看看:

ubuntu:chaoqun ~
:mysql -
h127.0.0.1 -
P9527
Welcome to
 the MySQL monitor.  Commands end
 with
 ;
 or
 \g.
Your MySQL connection
 id is
 1

Server version
: 1.10.1-
dev (
r2351)

 
Type
 'help;'
 or
 '\h
'
 for help
. Type
 '\c
'
 to
 clear the current input statement.
 
mysql>
 INSERT
 INTO
 rt VALUES
 (
1
,
 'this message has a body'
,
 1
)
;

Query OK,
 1
 row affected (
0.01
 sec)

 
mysql>
 INSERT
 INTO
 rt VALUES
 (
2
,
 '测试中文OK'
,
 2
)
;

Query OK,
 1
 row affected (
0.00
 sec)

 
mysql>

测试全文检索:

mysql>
 SELECT
 *
 FROM
 rt WHERE
 MATCH
(
'message'
)
;

+------+--------+------------+

|
 id   |
 weight |
 message_id |

+------+--------+------------+

|
    1
 |
   1643
 |
          1
 |

+------+--------+------------+

1
 row in
 set
 (
0.00
 sec)

 
mysql>
 SELECT
 *
 FROM
 rt WHERE
 MATCH
(
'OK'
)
;

+------+--------+------------+

|
 id   |
 weight |
 message_id |

+------+--------+------------+

|
    2
 |
   1643
 |
          2
 |

+------+--------+------------+

1
 row in
 set
 (
0.01
 sec)

 
mysql>
 SELECT
 *
 FROM
 rt WHERE
 MATCH
(
'中'
)
;

+------+--------+------------+

|
 id   |
 weight |
 message_id |

+------+--------+------------+

|
    2
 |
   1643
 |
          2
 |

+------+--------+------------+

1
 row in
 set
 (
0.00
 sec)

 
mysql>
 SELECT
 *
 FROM
 rt WHERE
 MATCH
(
'我'
)
;

Empty set
 (
0.00
 sec)

 
mysql>

简单方便,码完收工。

Tags: on demand index , real-time index , sphinx , 实时索引

分享到:
评论

相关推荐

    PHP 全文检索引擎 Sphinx 介绍

    Sphinx是一个高性能、开源的全文检索引擎,专为配合SQL数据库而设计,如MySQL和PostgreSQL,用于实现高效且专业的全文搜索功能。它的核心优势在于能够提供比数据库原生搜索更强大的搜索性能,并且易于集成到各种使用...

    基于Sphinx+MySQL的千万级数据全文检索

    2. 创建索引和查询速度快:利用Sphinx的高性能,通过主键查询优化性能。 3. 服务类型分离:读取索引源时锁定MySQL表,避免写操作阻塞,保证数据一致性。 在实际应用中,Sphinx不存储文本字段,仅返回ID等非文本信息...

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

    标题 "PHP搜索引擎Sphinx使用教程.zip" 提供的是关于如何在PHP环境中利用Sphinx搜索引擎进行全文检索的信息。Sphinx是一个高效、开源的全文搜索引擎,它为多种编程语言提供了API接口,包括PHP,使得开发者能够方便地...

    sphinx 中英文分词检索介绍

    3. **查询测试**:利用Sphinx的API接口编写查询逻辑,进行搜索测试,验证检索结果的准确性。 #### 七、遗留问题 - **索引与数据库的一致性**:确保索引与数据库内容保持一致,避免因数据更新不同步而导致的搜索结果...

    使用 Sphinx 和 Django 进行全文搜索的透明层_Python

    总的来说,Django-Sphinx通过提供一个简单的接口,让Django开发者能够方便地利用Sphinx的全文搜索能力,提高了Web应用的用户体验。这种结合不仅降低了开发难度,也使得全文检索成为Django项目的一个强大特性。在实际...

    PHP实例开发源码—Sphinx全文检索引擎php版 for Windows.zip

    【标题】"PHP实例开发源码—Sphinx全文检索引擎php版 for Windows"是一个针对Windows平台的PHP开发实例,它整合了Sphinx全文搜索引擎,旨在帮助开发者理解和运用Sphinx进行PHP项目的全文检索功能构建。 【Sphinx...

    archive_ Sphinx全文检索引擎 for Mac v3.3.1 [江西新余电信].zip.zip

    同时,可以利用Sphinx提供的管理工具进行监控和优化,以保证搜索性能。 总的来说,Sphinx全文检索引擎为开发人员提供了一个强大且灵活的解决方案,用于构建高性能的全文搜索功能。无论是在网站、电子商务平台还是...

    基于PHP的Sphinx全文检索引擎php版forWindows源码.zip

    1. **全文检索**:Sphinx的核心功能是全文搜索,它能快速地在大量文本数据中找到匹配的查询词,提供了布尔运算、短语匹配、模糊搜索等高级搜索特性。 2. **索引构建**:Sphinx通过建立倒排索引来加速搜索过程。索引...

    MYSQL sphinx学习

    MySQL Sphinx 是一种基于全文检索的搜索引擎,主要被用来增强数据库系统的搜索功能,尤其适用于大量数据的高效检索。Sphinx 由俄罗斯开发者 Andrew Aksyonoff 创建,旨在解决由数据库驱动的网站所面临的搜索质量和...

    sphinx使用rt实时索引源码

    Sphinx 是一个高性能全文搜索引擎,尤其适用于需要实时更新索引的应用场景。它的核心特性包括高效、灵活的配置以及对多种数据源的支持。在本篇文章中,我们将深入探讨 Sphinx 的实时索引(Real-Time Indexing)功能...

    基于PHP的Sphinx全文检索引擎php版 for Windows.zip

    标题 "基于PHP的Sphinx全文检索引擎php版 for Windows.zip" 暗示了这是一个针对Windows操作系统的Sphinx全文搜索引擎的PHP接口版本。Sphinx是一个开源的、高性能的全文搜索引擎,广泛应用于网站内容搜索和数据索引。...

    sphinx+mysql 安装手册

    2. **近实时搜索**:利用Sphinx的实时索引功能,实现在数据插入后短时间内即可搜索到新数据。 3. **多语言支持**:配置Sphinx支持多种语言,进行跨语言的全文检索。 4. **搜索建议与自动补全**:通过构建额外的索引...

    sphinx社区全文搜索平台配置手册.docx

    **Sphinx 社区全文搜索平台配置手册** Sphinx 是一款源自俄罗斯的开源全文搜索引擎,以其高效的性能和灵活的配置闻名。在面对如 Discuz! 这样的大型论坛系统时,传统的 MySQL 数据库的全文搜索功能往往力不从心,而...

    Sphinx+Python+Oracle构建全文检索系统.zip

    在构建全文检索系统时,Sphinx、Python和Oracle这三者常常被结合使用,以实现高效、可扩展的搜索引擎解决方案。下面将详细解释这三个技术及其在构建全文检索系统中的作用。 1. Sphinx:Sphinx是一个开源的全文搜索...

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

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

    Sphinx-JAVA接口

    总的来说,Sphinx JAVAAPI为Java开发者提供了便捷的接口,使其能够在Java应用中充分利用Sphinx的高性能全文检索功能。通过灵活的API设计,开发者可以轻松地构建复杂的搜索逻辑,提升应用程序的用户体验。

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

    在本文中,我们将深入探讨如何在Yii2框架中集成Sphinx搜索功能,为你的Web应用程序提供高效的全文检索体验。Yii2是一款快速、安全且可扩展的PHP框架,而Sphinx是一个开源的、高性能的全文搜索引擎,它允许快速、精确...

    Ruby-pocketsphinxruby利用Pocketsphinx实现Ruby语音识别

    Ruby-pocketsphinxruby是Ruby开发者用来集成Pocketsphinx的一个库,它使得在Ruby环境中实现语音识别成为可能。Pocketsphinx是CMU Sphinx项目的一部分,是一个开源的、跨平台的连续语音识别引擎,广泛用于各种语音...

    archive_ Sphinx全文检索引擎 for Linux v3.3.1 [江西新余电信].zip.zip

    Sphinx全文检索引擎是一款高效、灵活且开源的全文...要充分利用Sphinx的功能,开发者需要理解其配置文件的结构,学习如何编写查询语句,并熟悉其提供的API,以便将其无缝集成到自己的应用中,提供高效的全文搜索体验。

    php7的sphinx扩展,适用linux,mac

    首先,Sphinx扩展为PHP7提供了原生支持,允许开发者利用Sphinx的特性进行快速、精准的搜索。这个扩展包括了对SphinxAPI的封装,使得开发者可以创建索引、执行查询、处理结果等。通过在PHP代码中调用Sphinx的函数,如...

Global site tag (gtag.js) - Google Analytics