近期领导觉得网站的搜索太慢了。让我们优化一下。经过研究。感觉之前使用的like查询效率太低。所以导致查询速度慢。从网上找到了sphinx。据说这个软件是做搜索用的。可以大大提高效率。由于之前从来没有接触过。所以只能对着文档进行研究。由于我们的网站是纯英文的。所以只需要sphinx即可。针对中文做全文索引的软件叫coreseek。最初我认为sphinx就是一个数据库。和mysql类似。只是比mysql效率高。经过研究,发现并不是那么回事。
sphinx是对数据库里的表做索引。需要查询的数据提交到sphinx进行查询。返回在mysql数据库里的id,让后拿id去mysql数据库里去查询。
1、先安装sphinxclient
#cd /usr/local/src
#wget http://sphinxsearch.com/files/sphinx-0.9.9.tar.gz
#tar xzvf sphinx-0.9.9.tar.gz
#cd sphinx-0.9.9/api/libsphinxclient
#vim sphinxclient.c
找到
void sock_close ( int sock );
改为
static void sock_close ( int sock );
#./configure --prefix=/usr/local/sphinxclient
#make
#make install
2、安装sphinx扩展
#wget http://pecl.php.net/get/sphinx-1.0.4.tgz
#tar xvzf sphinx-1.0.4.tgz
#cd sphinx-1.0.4
#/usr/local/php/bin/phpize
#./configure --with-php-config=/usr/local/php/bin/php-config --with-sphinx=/usr/local/sphinxclient
#make
#make install
修改php.ini
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
[sphinx]
extension=sphinx.so
2、测试
1、安装sphinx
请参照文档http://linux008.blog.51cto.com/2837805/622088
2、编写测试文件
#vim sphinx.php
<?php
$s = new SphinxClient;
setServer("localhost", 9312);
$s->setMatchMode(SPH_MATCH_ANY);
$s->setMaxQueryTime(3);
$result = $s->query("demo");
var_dump($result);
?>
#/usr/local/php/bin/php sphinx.php 运行结果
array(9) {
["error"]=>
string(0) ""
["warning"]=>
string(0) ""
["status"]=>
int(0)
["fields"]=>
array(5) {
[0]=>
string(6) "cat_id"
[1]=>
string(13) "provider_name"
[2]=>
string(12) "goods_number"
[3]=>
string(18) "promote_start_date"
[4]=>
string(8) "keywords"
}
["attrs"]=>
array(8) {
["goods_sn"]=>
string(1) "3"
["goods_name"]=>
string(1) "3"
["brand_id"]=>
string(1) "1"
["goods_weight"]=>
string(1) "5"
["market_price"]=>
string(1) "5"
["shop_price"]=>
string(1) "5"
["promote_price"]=>
string(1) "5"
["gid"]=>
string(10) "1073741825"
}
["total"]=>
int(0)
["total_found"]=>
int(0)
["time"]=>
float(0)
["words"]=>
array(1) {
["demo"]=>
array(2) {
["docs"]=>
int(0)
["hits"]=>
int(0)
}
}
}
分享到:
相关推荐
在Java环境下使用Sphinx-4,首先需要下载并解压Sphinx-4的源代码包,然后通过构建工具如Maven或Gradle进行编译。确保你的开发环境中已安装Java JDK,并配置好环境变量。Sphinx-4的配置文件(通常是config.xml)需要...
标题 "PHP搜索引擎Sphinx使用教程.zip" 提供的是关于如何在PHP环境中利用Sphinx搜索引擎进行全文检索的信息。Sphinx是一个高效、开源的全文搜索引擎,它为多种编程语言提供了API接口,包括PHP,使得开发者能够方便地...
### Sphinx 安装及使用详解 #### 一、Sphinx简介 Sphinx是一款高性能的全文搜索引擎,主要用于提高大型数据集的搜索效率。它能够独立运行,也可以作为应用程序的一部分嵌入到其他软件中。Sphinx主要适用于对性能...
Sphinx 是一个高性能全文搜索引擎,尤其适用于需要实时更新索引的应用场景。它的核心特性包括高效、灵活的配置以及对多种数据源的支持。在本篇文章中,我们将深入探讨 Sphinx 的实时索引(Real-Time Indexing)功能...
【Sphinx 使用经验分享】 Sphinx 是一个强大的全文搜索引擎,主要设计用于与SQL数据库集成,尤其是MySQL和PostgreSQL。它的核心优势在于其高速的索引构建能力(可达10MB/s)和高效的搜索性能(在2-4GB的文本量中...
### Sphinx使用手册详解 #### 一、Sphinx简介与特点 Sphinx是一个高效的全文检索引擎,主要用于提升数据库的全文搜索性能。它支持多种数据库系统,包括MySQL和PostgreSQL,并能够提供更加专业和优化的搜索功能。...
### Windows 下安装使用 Sphinx #### 一、Sphinx 概述 Sphinx 是一款由俄罗斯开发者 Andrew Aksyonoff 开发的高性能全文搜索软件包,它支持 GPL 和商业许可协议。全文检索是一种信息检索技术,它以文档的全部文本...
### Sphinx在Linux下的安装与使用方法 #### 一、Sphinx简介 Sphinx是一款开源的全文检索引擎,它可以提供快速的、高效率的全文搜索功能。Sphinx支持多种数据库(如MySQL、PostgreSQL等)以及文件系统等多种数据源...
如果你的应用已经使用了mysqli扩展连接MySQL数据库,你也可以通过mysqli扩展来同步数据到Sphinx。这需要在PHP代码中添加适当的SQL触发器或事件,以在数据库记录更新时更新Sphinx索引。 7. **测试和优化**: 一旦...
使用这个API,你可以轻松地集成Sphinx到你的PHP应用中,提高搜索性能。 ### 4. `WeiboSphinxSearchUtil.php` `WeiboSphinxSearchUtil.php`可能是一个示例或特定于微博应用的Sphinx搜索工具类,它可能封装了针对微博...
### 使用Sphinx生成API文档 #### 一、简介 Sphinx是一种强大的文档生成工具,尤其适合于Python项目。它能够自动生成清晰、美观且结构化的文档,并支持多种输出格式(如HTML、PDF等)。本文档将详细介绍如何使用...
Java整合Sphinx主要涉及到的是在Java应用程序中使用Sphinx搜索引擎进行数据检索的技术。Sphinx是一款高性能、全文搜索引擎服务器,常用于构建实时的、基于全文的搜索功能。它提供了丰富的API和多种语言的客户端库,...
然后,通过speechrecognition的`Recognizer`类创建一个识别对象,并设置其使用的识别器为pocketsphinx。接下来,我们可以加载音频文件或实时录音,调用`recognize_sphinx()`方法,传入声学模型和语言模型路径,就能...
标题中的"Sphinx 使用经验分享"表明这是一份关于Sphinx技术的教程或分享材料,而描述则揭示了这份文档将涵盖从基础知识到实际操作的多个方面。Sphinx是一款开源的全文搜索引擎,常用于构建高性能、高精度的搜索功能...
3. 编译并安装扩展:运行`phpize`来配置编译环境,然后执行`./configure --with-sphinx=/path/to/sphinx`,最后使用`make && make install`完成编译和安装。 4. 更新PHP配置:将新安装的Sphinx扩展添加到php.ini文件...
2. **基本API使用**:介绍如何使用Pocketsphinx的API进行语音识别,包括初始化、录音、解码和关闭等步骤。 3. **模型训练**:解释如何收集数据、创建自定义模型,并进行训练。 4. **实例演示**:提供实际应用案例...
本项目“Android应用源码之使用PocketSphinx做离线语音识别,小范围语音99%识别率”提供了这样的解决方案,特别适合于需要高效、精确且对网络依赖较小的场景,如教育、智能家居或医疗应用。 PocketSphinx是CMU ...
同时,为了实时处理音频流,通常会使用缓冲区来分批送入识别器。 3. **语音识别流程**:当开始录音后,音频数据会被送入PocketSphinx进行处理。识别器会分析音频流,尝试找到匹配的词汇。识别结果可以通过识别器的...
中文的库是PTM或semi类型的,在java版sphinx中无法使用。 2、Sphinx的训练指哪些内容? 在Sphinx中有语言模型、声学模型等概念,如果你不想了解这些,请参考以下内容: a1、中文每个字的标准发音已经有一个较为...