当前位置: 首页 > 软件库 > 程序开发 > 搜索引擎 >

Sphinx Search

全文搜索引擎
授权协议 GPL-2.0
开发语言 C/C++
所属分类 程序开发、 搜索引擎
软件类型 开源软件
地区 不详
投 递 者 尹晟
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Sphinx 是一个开源的全文搜索服务器,从头开始设计时就考虑到了性能、相关性(又名搜索质量)和集成的简单性。它是用 C++ 编写的,适用于 Linux(RedHat、Ubuntu 等)、Windows、MacOS、Solaris、FreeBSD 和其他一些系统。

Sphinx 让你可以快速轻松地批量索引和搜索存储在 SQL 数据库、NoSQL 存储或文件中的数据,或者即时索引和搜索数据,使用 Sphinx 就像使用数据库服务器一样。各种文本处理功能可以根据你的特定应用程序要求微调 Sphinx,并且许多相关功能确保你也可以调整搜索质量。

通过SphinxAPI进行搜索只需3行代码,而通过SphinxQL进行查询则更简单,搜索查询可以用古老的SQL来表达。Sphinx 集群每天可扩展到数百亿个文档和数亿个搜索查询,其目前已为 Craigslist、 Living Social、 MetaCafe和 Groupon等顶级网站提供了支持。

性能和可扩展性

  • 索引性能。Sphinx 每个 CPU 内核每秒索引高达 10-15 MB 的文本,即每台服务器 60+ MB/秒(在专用索引机器上)。
  • 搜索性能。搜索我们用于日常开发和测试的 1,000,000 个文档、1.2 GB 的文本集合,在具有 2 GB RAM 的 2 核台式机上以 每秒 500 多个查询的速度运行。
  • 可扩展性。已知最大的 Sphinx 集群索引25+ 十亿个文档,产生超过 9TB 的数据。最繁忙的知名网站是 Craigslist ,每天提供300+ 百万次搜索查询。

主要特征

  • 批处理和实时全文索引。支持高效离线索引构建和增量即时索引更新的两个索引后端可用。
  • 非文本属性支持. 任意数量的属性(产品 ID、公司名称、价格等)可以存储在索引中并用于检索(避免访问数据库),或用于高效的 Sphinx 端搜索结果集后处理。
  • SQL数据库索引。Sphinx 可以直接访问和索引存储在 MySQL(支持所有存储引擎)、PostgreSQL、Oracle、Microsoft SQL Server、SQLite、Drizzle 以及任何其他支持 ODBC 的系统中的数据。
  • 非 SQL 存储索引。数据也可以以称为 XMLpipe 的简单 XML 格式流式传输到批索引器,或直接插入到增量 RT 索引中。
  • 简单的应用程序集成。Sphinx 带有三种不同的 API,SphinxAPI、SphinxSE 和 SphinxQL。SphinxAPI 是一个原生库,可用于 Java、PHP、Python、Perl、C 和其他语言。SphinxSE 是 MySQL 的可插拔存储引擎,可将庞大的结果集直接传送到 MySQL 服务器进行后期处理。SphinxQL 允许应用程序使用标准 MySQL 客户端库和查询语法查询 Sphinx。
  • 高级全文搜索语法。我们的查询引擎支持结合布尔运算符、短语、接近度、严格顺序和群体匹配、字段和位置限制、精确关键字形式匹配、子字符串搜索等的任意复杂查询。
  • 丰富的类数据库查询功能。Sphinx 并不局限于关键字搜索。在全文搜索结果集之上,可以计算任意算术表达式,添加WHERE条件,做ORDER BY,GROUP BY,使用MIN/MAX/AVG/SUM,聚合等。本质上是支持成熟的SQL SELECT。
  • 更好的相关性排名。与许多其他引擎不同,Sphinx 并不完全依赖 30 年前只考虑关键字频率的统计排名,也不限制您使用它。默认情况下,Sphinx 还会分析关键字接近度,并将更接近的短语匹配排名更高,完美匹配排名靠前。此外,排名是灵活的:您可以从许多内置相关函数中进行选择,通过使用表达式调整它们的权重,或开发新的函数。
  • 灵活的文本处理。Sphinx 索引功能包括对 SBCS 和 UTF-8 编码的全面支持(这意味着实际上支持世界上所有的语言);停用词删除和可选的命中位置删除(无中断索引);通过词形词典和词干分析器进行形态学和同义词处理;异常和混合字符;还有很多。
  • 分布式搜索。搜索可以分布在多台机器上,从而实现横向扩展和 HA(高可用性)。
  • sphinx 在命令行下用search搜索,匹配出来的结果记录中中文字符乱码。于是到网上到处搜各种解决的方法 mysql配置文件设置character_set_client,character_set_database,character_set_server为utf-8也设置了 sphinx的配置文件中仔细看了,source也设置有sql_query_pre = SET NAMES utf8,i

  • 此处分析用的源码为最新版本1.0 beta版的。 //search.cpp int main ( int argc, char ** argv ) 让我们从程序入口点开始进行旅程。search的入口点在文件search.cpp中,打开后定位到int main ( int argc, char ** argv )开始我们的分析: 在main中开始部分进行参数检查和配置信息的load,先进行命令行参数

  • 前言:众所周知,提供高效、快速的搜索功能能提高网站的运营利润和效率,如果网站搜索相关结果太低,用户体验差,那么用户将可能会使用竞争对手的网站。那么如何提供高效快速的搜索呢?当前大约有20种搜索引擎可以选择,如果您正在寻找可靠而有效的方案,那么我建议您使用Elasticsearch,Solr或Sphinx,这三个都是开源搜索解决方案,得到了他们的贡献者社区的充分支持。它们都具有高性能,可扩展性和灵活

  •   转载自: http://fideloper.com/production-ubuntu-install-sphinx-search   If you need or want a great full-text search engine, and you decide on Sphinx Search, here's how to install it on Ubuntu. I'm usin

  • 1 下载sphinx安装包,我这里选的是windows系统的3.4.1版本:https://sphinxsearch.com/downloads/current/ 2 安装后会得到6个文件夹:api,bin,doc,etc,misc,src 3 复制etc目录下的sphinx-min.conf.dist到bin目录下并修改文件名为sphinx.conf。文件内容见代码块: # # Minimal

 相关资料
  • 回顾 在前面的章节(分页),我们已经加强了数据库查询,因此能够在页面上获取各种查询。 今天,我们会继续探讨数据库的话题,只是领域不同。所有存储内容的应用程序必须提供搜索能力。 许多其它类型的网站可能使用了谷歌、必应等索引所有的内容并且提供查询结果。这个对于大多数静态页面的网站,像论坛,是很好用。我们应用程序 microblog 的基本单元是用户短小的 blog,不是整个页面。我们希望搜索结果是动态

  • 问题内容: 我尝试在elasticsearchJava API上使用正则表达式运行全文搜索。我的过滤器是这样的: 但是它只与一个单词匹配,而没有短语匹配。我的意思是,例如: 如果soruce中有一个字符串,例如:“ ”,而当我的文本字符串如下:“ ”,“ ”,“ ” …时,它就起作用了。 但是,当我的realTimeTextIn字符串为“ ”时,全文搜索将不起作用。我搜索的单词不能超过一个。 我在

  • 我尝试在弹性搜索java api上使用正则表达式运行全文搜索。我的过滤器是这样的: 但是它只与一个单词匹配,而不是与短语匹配。我的意思是,例如: 如果soruce中有一个字符串,如:“

  • 问题内容: 我正在建立Django网站,并且正在寻找搜索引擎。 一些候选人: Lucene / Lucene与指南针/ Solr 狮身人面像 PostgreSQL内置全文本搜索 MySQl内置全文本搜索 选择标准: 结果相关性和排名 搜索和索引速度 易于使用,易于与Django集成 资源需求-网站将托管在VPS上,因此理想情况下,搜索引擎不需要大量的RAM和CPU 可扩展性 其他功能,例如“您的意

  • 我正在使用node.js连接到neo4j数据库。每当我必须为一个节点设置索引时,我都会通过转到neo4j浏览器(localhost:7474)来手动完成。 我构建了自己的nodejs适配器来连接到neo4j,因此目前我只能访问密码查询。要创建索引,我只能访问cypher或浏览器(7474)。那么创建自动全文索引的正确方法是什么,最好是从浏览器本身创建?我如何使用密码访问它(或者我必须访问它?neo

  • 问题内容: 我想在我的网页中进行全文搜索。我需要分页进行搜索。我的数据库每张表有50,000+行。我已经改变了我的表,并使其成为索引。该表始终处于更新状态,仍然有一个自动增加的列。而最新的总是在表格的末尾。 但整个查询时间将花费。我通过Google搜索了许多文章,有的文章写道,只有限制字段字长才能帮助更快地进行搜索。但作为一种类型,它会像这样改变一定的长度(我尝试过标题TEXT(500) CHAR

  • 问题内容: 这是我测试过的。 这是create语句。 等号和“赞”效果很好。所以为什么? 问题答案: 全文搜索需要多种多样的方式来消除重复的“噪音”。用最少的数据进行测试将产生较差的结果。将您的整个收藏集投入其中,以获取有意义的内容。如以下某些链接所示,甚至可以尝试搜索最小字数的设置。 停用词 有各种语言的停用词 MySql 列表,这些词表示在搜索过程中忽略的无关紧要的词。该列表已编译到服务器中,

  • 问题内容: 我正在将所有站点代码从使用mysql_ *函数转换为PDO。对于我的需求,PDO上的PHP文档尚不清楚。它为您提供了要使用的功能,但没有详细介绍它们在不同情况下的功能。 基本上,我有一个mysql全文搜索: 实际的语句要长得多,但这基本上就是它的作用。 我的问题是,如何将其纳入PDO? 我知道您不是要在位置标记周围使用引号,那么您是否将它们放在AGAINST()函数中?我包括他们吗?如