我的编程空间,编程开发者的网络收藏夹
学习永远不晚

全文搜索Sphinx怎么实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

全文搜索Sphinx怎么实现

本篇内容介绍了“全文搜索Sphinx怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1.Sphinx简介

1.1.Sphinx是什么

Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎。意图为其他应用提供高速、低空间占用、高结果 相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式 的XML数据。通过修改源代码,用户可以自行增加新的数据源(例如:其他类型的DBMS 的原生支持)

1.2.Sphinx的特性

  • 高速的建立索引(在当代CPU上,峰值性能可达到10 MB/秒);

  • 高性能的搜索(在2 – 4GB 的文本数据上,平均每次检索响应时间小于0.1秒);

  • 可处理海量数据(目前已知可以处理超过100 GB的文本数据, 在单一CPU的系统上可   处理100 M 文档);

  • 提供了优秀的相关度算法,基于短语相似度和统计(BM25)的复合Ranking方法;

  • 支持分布式搜索;

  • 支持短语搜索

  • 提供文档摘要生成

  • 可作为MySQL的存储引擎提供搜索服务;

  • 支持布尔、短语、词语相似度等多种检索模式;

  • 文档支持多个全文检索字段(最大不超过32个);

  • 文档支持多个额外的属性信息(例如:分组信息,时间戳等);

  • 支持断词;

1.3.Sphinx中文分词

中文的全文检索和英文等latin系列不一样,后者是根据空格等特殊字符来断词,而中文是根据语义来分词。目前大多数数据库尚未支持中文全文检索,如Mysql。故,国内出现了一些Mysql的中文全文检索的插件,做的比较好的有hightman的中文分词。Sphinx如果需要对中文进行全文检索,也得需要一些插件来补充。其中我知道的插件有 coreseek 和 sfc 。

  • Coreseek是现在用的最多的sphinx中文全文检索,它提供了为Sphinx设计的中文分词包LibMMSeg 。并提供了多个系统的二进制发行版,其中有rpm,deb及windows下的二进制包。另外,coreseek也为sphinx贡献了以下事项:

    • GBK编码的数据源支持

    • 采用Chih-Hao Tsai MMSEG算法的中文分词器

    • 中文使用手册(这份中文手册对国内使用sphinx新手——特别是英语不太好的人来说,提供了极大的便利

  • sfc(sphinx-for-chinese)是由网友happy兄提供的另外一个中文分词插件。其中文词典采用的是xdict。据其介绍,经过测试,目前版本在索引速度上(Linux 测试平台)基本上能够达到索引UTF-8英文的一半,即官方宣称速度的一半。(时间主要是消耗在分词上)。 现提供了与sphinx最新版(sphinx 0.9.10)同步的sphinx-for-chinese-0.9.10-dev-r2006.tar.gz 。此版本增加了sql_attr_string,经过本人的测试。其安装和配置都非常方便。happy兄在分词方面还有另外一个贡献——php-mmseg,这是php对中文分词的一个扩展库。

在此,对以上二位作者谨以最大的敬意

  • 此外,如果你对中文分词不感兴趣。或者说仅需要实现类似sql中like的功能,如: select * from product where prodName like ‘%手机%’。sphinx也不会让你失望,这个或许就是官网对中文的简单实现——直接对字索引。并且搜索速度还不错^_^ 。

本文会对以上三种中文应用进行测试,并以文档的方式记录下来,这也许正是本文档的重点。

2.安装配置实例

2.1在GNU/Linux/unix系统上安装

Sphinx在mysql上的应用有两种方式:
①、采用API调用,如使用PHP、java等的API函数或方法查询。优点是可不必对mysql重新编译,服务端进程“低耦合”,且程序可灵活、方便的调用;
缺点是如已有搜索程序的条件下,需修改部分程序。推荐程序员使用。
②、使用插件方式(sphinxSE)把sphinx编译成一个mysql插件并使用特定的sql语句进行检索。其特点是,在sql端方便组合,且能直接返回数据给客户端
不必二次查询(注),在程序上仅需要修改对应的sql,但这对使用框架开发的程序很不方便,比如使用了ORM。另外还需要对mysql进行重新编译,且需要mysql-5.1以上版本
支持插件存储。系统管理员可使用这种方式
二次查询注:到现在发布版本为止——sphinx-0.9.9,sphinx在检索到结果后只能返回记录的ID,而非要查的sql数据,故需要重新根据这些ID再次从数据库中查询,
正在开发的sphinx 0.9.10版本已可存储这些文本数据,作者曾试过,性能和存储上的效果都不佳,毕竟还没出正式版

本文采用的是第一种方式

在*nix系统下安装,首先需要以下一些软件支持

软件环境:

  • 操作系统:Centos-5.2

  • 数据库:mysql-5.0.77-3.el5 mysql-devel(如果要使用sphinxSE插件存储请使用mysql-5.1以上版本)

  • 编译软件:gcc gcc-c++ autoconf automake

中文的全文检索和英文等latin系列不一样,后者是根据空格等特殊字符来断词,而中文是根据语义来分词。中文分词主要有2个插件

Coreseek是现在用的最多的sphinx中文全文检索,它提供了为Sphinx设计的中文分词包LibMMSeg ,是基于sphinx的基础上开发的。

sfcsphinx-for-chinese是由网友happy兄提供的另外一个中文分词插件。其中文词典采用的是xdict

本文主要介绍Coreseek的安装方法

四、  Coreseek(支持中文检索的sphinx)安装

因为coreseek需要autoconf 2.64以上版本,因此需要升级autoconf,不然会报错从http://download.chinaunix.net/download.php?id=29328&ResourceID=648下载autoconf-2.64.tar.bz2,安装方法如下:

tar -jxvf autoconf-2.64.tar.bz2

cd autoconf-2.64

./configure

make

make install

新版本的coreseek将词典和sphinx源程序放在了一个包中,因此只需要下载coreseek包就可以了。

http://pan.baidu.com/s/1dEK4x3r

tar xzvf coreseek-3.2.14.tar.gz

cd mmseg-3.2.14

./bootstrap    #输出的warning信息可以忽略,如果出现error则需要解决

./configure --prefix=/usr/local/mmseg3

make && make install

cd ..

cd csft-3.2.14

sh buildconf.sh    #输出的warning信息可以忽略,如果出现error则需要解决

./configure --prefix=/usr/local/coreseek  --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql

make && make install

cd ..

如果出现这种报错config.status: error: cannot find input file: class="lazy" data-src/Makefile.in,就在configure 之前执行如下命令
aclocal

libtoolize --forceautomake --add-missingautoconfautoheadermake clean

“全文搜索Sphinx怎么实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

全文搜索Sphinx怎么实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

全文搜索Sphinx怎么实现

本篇内容介绍了“全文搜索Sphinx怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.Sphinx简介1.1.Sphinx是什么Sp
2023-06-04

Sphinx 实现全文搜索的 PHP 应用指南

引言:在现代的 Web 应用中,全文搜索功能已经成为了一个必备的特性。因为用户常常会通过输入关键词来搜索和匹配他们所需要的内容。为了提供高效和准确的搜索结果,我们需要一个强大的搜索引擎。而 Sphinx 作为一个开源的全文搜索引擎,它为 P
2023-10-21

如何利用Sphinx实现高效的全文搜索?(Sphinx如何助力快速全文检索?)

Sphinx是一款开源全文搜索引擎,可提供快速的全文检索体验。它通过索引生成、快速查询和高级功能(如模糊搜索、同义词和地理搜索)实现高效的搜索。企业可以通过将其集成到Web框架、数据库或通过API,轻松实施Sphinx。Sphinx的优点包括快速响应、相关性高的结果、可扩展性和成本效益,使其成为提升网站和应用程序搜索功能的理想选择。
如何利用Sphinx实现高效的全文搜索?(Sphinx如何助力快速全文检索?)
2024-04-02

Sphinx PHP 实现全文搜索的中文分词与检索优化

引言:随着互联网的发展和信息爆炸的时代,全文搜索引擎成为了人们进行信息检索的重要工具。传统的全文搜索引擎主要针对英文等西方语言进行优化,而对于中文这种特殊的语言来说,传统的全文搜索引擎存在一些问题。本文将介绍如何利用Sphinx PHP实现
2023-10-21

Sphinx PHP 实现全文搜索的搜索历史记录与推荐功能

引言:随着互联网的快速发展,全文搜索已经成为了许多网站和应用程序中必不可少的功能。Sphinx是一个功能强大的开源全文搜索引擎,它可以快速地搜索和检索大量的文本数据。本文将介绍如何使用Sphinx PHP来实现全文搜索的搜索历史记录与推荐功
2023-10-21

Sphinx与Xunsearch在中文搜索中的表现对比(Sphinx和Xunsearch如何处理中文搜索?)

Sphinx和Xunsearch是中文搜索引擎,各有优劣。Sphinx分词准确,模糊查询强,但同义词弱。Xunsearch词库分词,同义词强,拼音查询好。相关性上,Sphinx用TF-IDF,Xunsearch改进TF-IDF,同义词权重高。性能上,Sphinx高性能可扩展,Xunsearch性能好,可扩展性稍弱。Sphinx扩展模块丰富,Xunsearch中文语言处理功能强。适用场景,Sphinx适合高性能精确分词场景,如电商搜索。Xunsearch适合同义词处理、拼音搜索、语言处理场景,如新闻搜索。
Sphinx与Xunsearch在中文搜索中的表现对比(Sphinx和Xunsearch如何处理中文搜索?)
2024-04-02

PHPCMS开启全文搜索(sphinx)后搜索无效的解决方法

我是按照官方提供的sphinx配置文件配置的,用的是centos系http://www.cppcns.com统,在终端执行时能够返回搜索内容,就是在phpcms程序中有问题经过一翻研究后,找到一个解决方法:程序版本:PHPCMS V9正式版
2022-06-12

Sphinx PHP 实现邮件系统的全文搜索与过滤功能

随着电子邮件的广泛应用,人们越来越关注快速检索与过滤邮件的效率。Sphinx是一款开源的全文搜索引擎,其高效的搜索速度与强大的过滤功能使其成为邮件系统的理想选择。本文将介绍如何使用Sphinx PHP实现邮件系统的全文搜索与过滤功能,并给出
2023-10-21

MongoDB的文本搜索与全文索引怎么实现

MongoDB中的文本搜索和全文索引可以通过创建文本索引来实现。文本索引可以帮助MongoDB在文本字段上执行全文搜索,以查找包含特定关键词或短语的文档。要在MongoDB中实现文本搜索和全文索引,可以按照以下步骤操作:创建文本索引:使用
MongoDB的文本搜索与全文索引怎么实现
2024-05-07

Sphinx 实现 PHP 项目的实时搜索效果

一、安装 Sphinx要在 PHP 项目中实现实时搜索效果,首先需要安装 Sphinx。可以在 Sphinx 的官方网站(http://sphinxsearch.com/)上下载最新版本的 Sphinx,然后按照官方文档进行安装。二、创建
2023-10-21

PostgreSQL中怎么实现全文搜索功能

要在PostgreSQL中实现全文搜索功能,可以使用全文搜索扩展模块。全文搜索扩展模块提供了一种更高级的搜索方式,不仅可以搜索特定关键字,还可以对文本进行分词、匹配和排序。以下是在PostgreSQL中实现全文搜索功能的步骤:安装全文搜索
PostgreSQL中怎么实现全文搜索功能
2024-04-09

Sphinx PHP 实现音视频搜索的技巧和实践

随着互联网的快速发展和用户对多媒体内容需求的增加,音视频搜索引擎的重要性也越来越凸显。Sphinx是一款开源的全文搜索引擎,它以其快速、高效和可扩展的特性而备受开发者的推崇。本文将介绍如何使用Sphinx PHP来实现音视频搜索,并给出具体
2023-10-21

Sphinx搜索的实时索引更新与同步(Sphinx如何实现索引的实时更新和同步?)

Sphinx是一款开源搜索引擎,支持实时索引更新和同步。通过增量索引器和WAL日志,它仅索引更改或新添加的文档,实现快速且异步的索引更新。主从复制和分布式索引机制确保所有搜索服务器拥有最新索引,从而提供最新搜索结果、快速索引更新、高可用性以及可扩展性。
Sphinx搜索的实时索引更新与同步(Sphinx如何实现索引的实时更新和同步?)
2024-04-02

Sphinx PHP 实现代码搜索的最佳实践方法

简介:Sphinx是一个开源的全文搜索引擎,它提供了高效的搜索解决方案。PHP是一种流行的服务器端脚本语言,与Sphinx结合使用,可以实现强大的代码搜索功能。本文将介绍在PHP中实现Sphinx代码搜索的最佳实践方法,并提供具体的代码示例
2023-10-21

Sphinx 分布式搜索的 PHP 实现方法解析

引言:在当今互联网时代,搜索引擎已经成为人们获取信息的主要方式之一。为了提供更高效、更准确的搜索结果,一些大规模的网站或应用程序通常会使用分布式搜索引擎来处理搜索请求。Sphinx 是一种知名的分布式搜索引擎,具有良好的性能和扩展性。本文将
2023-10-21

Sphinx 高可用搜索的 PHP 实现方法研究

导语:Sphinx 是一个开源的全文搜索引擎,它提供了快速、准确和可扩展的搜索解决方案。在 PHP 网站中集成 Sphinx 可以实现高可用的搜索功能。本文将探讨 Sphinx 在 PHP 中的实现方法,并提供具体的代码示例。一、Sphin
2023-10-21

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录