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>
简单方便,码完收工。
分享到:
相关推荐
Sphinx是一个高性能、开源的全文检索引擎,专为配合SQL数据库而设计,如MySQL和PostgreSQL,用于实现高效且专业的全文搜索功能。它的核心优势在于能够提供比数据库原生搜索更强大的搜索性能,并且易于集成到各种使用...
2. 创建索引和查询速度快:利用Sphinx的高性能,通过主键查询优化性能。 3. 服务类型分离:读取索引源时锁定MySQL表,避免写操作阻塞,保证数据一致性。 在实际应用中,Sphinx不存储文本字段,仅返回ID等非文本信息...
标题 "PHP搜索引擎Sphinx使用教程.zip" 提供的是关于如何在PHP环境中利用Sphinx搜索引擎进行全文检索的信息。Sphinx是一个高效、开源的全文搜索引擎,它为多种编程语言提供了API接口,包括PHP,使得开发者能够方便地...
3. **查询测试**:利用Sphinx的API接口编写查询逻辑,进行搜索测试,验证检索结果的准确性。 #### 七、遗留问题 - **索引与数据库的一致性**:确保索引与数据库内容保持一致,避免因数据更新不同步而导致的搜索结果...
总的来说,Django-Sphinx通过提供一个简单的接口,让Django开发者能够方便地利用Sphinx的全文搜索能力,提高了Web应用的用户体验。这种结合不仅降低了开发难度,也使得全文检索成为Django项目的一个强大特性。在实际...
【标题】"PHP实例开发源码—Sphinx全文检索引擎php版 for Windows"是一个针对Windows平台的PHP开发实例,它整合了Sphinx全文搜索引擎,旨在帮助开发者理解和运用Sphinx进行PHP项目的全文检索功能构建。 【Sphinx...
同时,可以利用Sphinx提供的管理工具进行监控和优化,以保证搜索性能。 总的来说,Sphinx全文检索引擎为开发人员提供了一个强大且灵活的解决方案,用于构建高性能的全文搜索功能。无论是在网站、电子商务平台还是...
1. **全文检索**:Sphinx的核心功能是全文搜索,它能快速地在大量文本数据中找到匹配的查询词,提供了布尔运算、短语匹配、模糊搜索等高级搜索特性。 2. **索引构建**:Sphinx通过建立倒排索引来加速搜索过程。索引...
MySQL Sphinx 是一种基于全文检索的搜索引擎,主要被用来增强数据库系统的搜索功能,尤其适用于大量数据的高效检索。Sphinx 由俄罗斯开发者 Andrew Aksyonoff 创建,旨在解决由数据库驱动的网站所面临的搜索质量和...
Sphinx 是一个高性能全文搜索引擎,尤其适用于需要实时更新索引的应用场景。它的核心特性包括高效、灵活的配置以及对多种数据源的支持。在本篇文章中,我们将深入探讨 Sphinx 的实时索引(Real-Time Indexing)功能...
标题 "基于PHP的Sphinx全文检索引擎php版 for Windows.zip" 暗示了这是一个针对Windows操作系统的Sphinx全文搜索引擎的PHP接口版本。Sphinx是一个开源的、高性能的全文搜索引擎,广泛应用于网站内容搜索和数据索引。...
2. **近实时搜索**:利用Sphinx的实时索引功能,实现在数据插入后短时间内即可搜索到新数据。 3. **多语言支持**:配置Sphinx支持多种语言,进行跨语言的全文检索。 4. **搜索建议与自动补全**:通过构建额外的索引...
**Sphinx 社区全文搜索平台配置手册** Sphinx 是一款源自俄罗斯的开源全文搜索引擎,以其高效的性能和灵活的配置闻名。在面对如 Discuz! 这样的大型论坛系统时,传统的 MySQL 数据库的全文搜索功能往往力不从心,而...
在构建全文检索系统时,Sphinx、Python和Oracle这三者常常被结合使用,以实现高效、可扩展的搜索引擎解决方案。下面将详细解释这三个技术及其在构建全文检索系统中的作用。 1. Sphinx:Sphinx是一个开源的全文搜索...
综上所述,本文讨论了如何利用Sphinx作为全文搜索引擎核心,结合MySQL数据库和Python编程,为基于Linux+Apache的网站架构设计并实现一个高性能的站内搜索引擎。文章中提到的技术点不仅涉及到了搜索引擎的构建原理,...
总的来说,Sphinx JAVAAPI为Java开发者提供了便捷的接口,使其能够在Java应用中充分利用Sphinx的高性能全文检索功能。通过灵活的API设计,开发者可以轻松地构建复杂的搜索逻辑,提升应用程序的用户体验。
在本文中,我们将深入探讨如何在Yii2框架中集成Sphinx搜索功能,为你的Web应用程序提供高效的全文检索体验。Yii2是一款快速、安全且可扩展的PHP框架,而Sphinx是一个开源的、高性能的全文搜索引擎,它允许快速、精确...
Ruby-pocketsphinxruby是Ruby开发者用来集成Pocketsphinx的一个库,它使得在Ruby环境中实现语音识别成为可能。Pocketsphinx是CMU Sphinx项目的一部分,是一个开源的、跨平台的连续语音识别引擎,广泛用于各种语音...
Sphinx全文检索引擎是一款高效、灵活且开源的全文...要充分利用Sphinx的功能,开发者需要理解其配置文件的结构,学习如何编写查询语句,并熟悉其提供的API,以便将其无缝集成到自己的应用中,提供高效的全文搜索体验。
首先,Sphinx扩展为PHP7提供了原生支持,允许开发者利用Sphinx的特性进行快速、精准的搜索。这个扩展包括了对SphinxAPI的封装,使得开发者可以创建索引、执行查询、处理结果等。通过在PHP代码中调用Sphinx的函数,如...