Coreseek 全文检索服务器 20 Sphinx 098参考手册Word下载.docx

上传人:b****5 文档编号:20878437 上传时间:2023-01-26 格式:DOCX 页数:98 大小:88.06KB
下载 相关 举报
Coreseek 全文检索服务器 20 Sphinx 098参考手册Word下载.docx_第1页
第1页 / 共98页
Coreseek 全文检索服务器 20 Sphinx 098参考手册Word下载.docx_第2页
第2页 / 共98页
Coreseek 全文检索服务器 20 Sphinx 098参考手册Word下载.docx_第3页
第3页 / 共98页
Coreseek 全文检索服务器 20 Sphinx 098参考手册Word下载.docx_第4页
第4页 / 共98页
Coreseek 全文检索服务器 20 Sphinx 098参考手册Word下载.docx_第5页
第5页 / 共98页
点击查看更多>>
下载资源
资源描述

Coreseek 全文检索服务器 20 Sphinx 098参考手册Word下载.docx

《Coreseek 全文检索服务器 20 Sphinx 098参考手册Word下载.docx》由会员分享,可在线阅读,更多相关《Coreseek 全文检索服务器 20 Sphinx 098参考手册Word下载.docx(98页珍藏版)》请在冰豆网上搜索。

Coreseek 全文检索服务器 20 Sphinx 098参考手册Word下载.docx

4.8.searchd日志格式

5.API参考

5.1.通用API方法

5.1.1.GetLastError

5.1.2.GetLastWarning

5.1.3.SetServer5.1.4.SetRetries

5.1.5.SetArrayResult

5.2.通用搜索设置

5.2.1.SetLimits

5.2.2.SetMaxQueryTime

5.3.全文搜索设置

5.3.1.SetMatchMode

5.3.2.SetRankingMode

5.3.3.SetSortMode

5.3.4.SetWeights

5.3.5.SetFieldWeights

5.3.6.SetIndexWeights

5.4.结果集过滤设置

5.4.1.SetIDRange

5.4.2.SetFilter

5.4.3.SetFilterRange

5.4.4.SetFilterFloatRange

5.4.5.SetGeoAnchor

5.5.GROUPBY设置

5.5.1.SetGroupBy

5.5.2.SetGroupDistinct

5.6.搜索

5.6.1.Query

5.6.2.AddQuery

5.6.3.RunQueries

5.6.4.ResetFilters

5.6.5.ResetGroupBy

5.7.额外的方法

5.7.1.BuildExcerpts

5.7.2.UpdateAttributes

6.MySQL存储引擎(SphinxSE)

6.1.SphinxSE概览

6.2.安装SphinxSE

6.2.1.在MySQL5.0.x上编译SphinxSE

6.2.2.在MySQL5.1.x上编译SphinxSE

6.2.3.SphinxSE安装测试

6.3.使用SphinxSE

7.报告bugs

8.sphinx.conf选项参考

8.1.Datasource配置选项

8.1.1.type

8.1.2.sql_host

8.1.3.sql_port

8.1.4.sql_user

8.1.5.sql_pass

8.1.6.sql_db

8.1.7.sql_sock

8.1.8.mysql_connect_flags

8.1.9.sql_query_pre

8.1.10.sql_query8.1.11.sql_query_range

8.1.12.sql_range_step

8.1.13.sql_attr_uint

8.1.14.sql_attr_bool

8.1.15.sql_attr_timestamp

8.1.16.sql_attr_str2ordinal

8.1.17.sql_attr_float

8.1.18.sql_attr_multi

8.1.19.sql_query_post

8.1.20.sql_query_post_index

8.1.21.sql_ranged_throttle

8.1.22.sql_query_info

8.1.23.xmlpipe_command

8.1.24.xmlpipe_field

8.1.25.xmlpipe_attr_uint

8.1.26.xmlpipe_attr_bool

8.1.27.xmlpipe_attr_timestamp

8.1.28.xmlpipe_attr_str2ordinal

8.1.29.xmlpipe_attr_float

8.1.30.xmlpipe_attr_multi

8.2.索引配置选项

8.2.1.type

8.2.2.source

8.2.3.path

8.2.4.docinfo

8.2.5.mlock

8.2.6.morphology

8.2.7.stopwords

8.2.8.wordforms

8.2.9.exceptions

8.2.10.min_word_len

8.2.11.charset_type

8.2.12.charset_table

8.2.13.ignore_chars

8.2.14.min_prefix_len

8.2.15.min_infix_len

8.2.16.prefix_fields

8.2.17.infix_fields

8.2.18.enable_star

8.2.19.ngram_len

8.2.20.ngram_chars

8.2.21.phrase_boundary

8.2.22.phrase_boundary_step

8.2.23.html_strip

8.2.24.html_index_attrs

8.2.25.html_remove_elements

8.2.26.local

8.2.27.agent

8.2.28.agent_connect_timeout

8.2.29.agent_query_timeout

8.2.30.preopen

8.2.31.charset_dictpath8.3.indexer程序配置选项

8.3.1.mem_limit

8.3.2.max_iops

8.3.3.max_iosize

8.4.searchd程序配置选项

8.4.1.address

8.4.2.port

8.4.3.log

8.4.4.query_log

8.4.5.read_timeout

8.4.6.max_children

8.4.7.pid_file

8.4.8.max_matches

8.4.9.seamless_rotate

8.4.10.preopen_indexes

8.4.11.unlink_old

1.简介

1.1.什么是Sphinx

Sphinx是一个在GPLv2下发布的一个全文检索引擎,商业授权(例如,嵌入到其他程序中)

需要联系我们(S)以获得商业授权。

一般而言,Sphinx是一个独立的搜索引擎,意图为其他应用提供高速、低空间占用、高结果

相关度的全文搜索功能。

Sphinx可以非常容易的与SQL数据库和脚本语言集成。

当前系统内置MySQL和PostgreSQL数据库数据源的支持,也支持从标准输入读取特定格式

的XML数据。

通过修改源代码,用户可以自行增加新的数据源(例如:

其他类型的DBMS

的原生支持)。

搜索API支持PHP、Python、Perl、Rudy和Java,并且也可以用作MySQL存储引擎。

搜索

API非常简单,可以在若干个小时之内移植到新的语言上。

Sphinx是SQLPhraseIndex的缩写,但不幸的和CMU的Sphinx项目重名。

Coreseek全文检索服务器2.0是在Sphinx基础上开发的全文检索软件,按照GPLv2协议发行。

Coreseek()为sphinx在中国地区的用户提供支持服务,如果您不希望

纠缠与琐碎的技术细节,请直接联系我。

本文可能存在潜在的翻译错误,如果您发现本文的翻译错误,请联系我:

我的联系方式:

coreseek@李沫南

1.2.Sphinx的特性

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

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

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

处理100M文档);

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

支持分布式搜索;

providesdocumentexceprtsgeneration;

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

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

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

文档支持多个额外的属性信息(例如:

分组信息,时间戳等);

停止词查询;

支持单一字节编码和UTF-8编码;

原生的MySQL支持(同时支持MyISAM和InnoDB);

原生的PostgreSQL支持.

Sphinx可以从官方网站下载,支持中文分词的Sphinx可以从

下载。

目前,Sphinx的发布包包括如下软件:

indexer:

用于创建全文索引;

search:

一个简单的命令行(CLI)的测试程序,用于测试全文索引;

searchd:

一个守护进程,其他软件可以通过这个守护进程进行全文检索;

sphinxapi:

一系列searchd的客户端API库,用于流行的Web脚本开发语言(PHP,

Python,Perl,Ruby)。

1.4.许可协议

Thisprogramisfreesoftware;

youcanredistributeitand/ormodifyitunderthetermsoftheGNU

GeneralPublicLicenseaspublishedbytheFreeSoftwareFoundation;

eitherversion2ofthe

License,or(atyouroption)anylaterversion.SeeCOPYINGfilefordetails.

Thisprogramisdistributedinthehopethatitwillbeuseful,butWITHOUTANYWARRANTY;

withouteventheimpliedwarrantyofMERCHANTABILITYorFITNESSFORAPARTICULAR

PURPOSE.SeetheGNUGeneralPublicLicenseformoredetails.

YoushouldhavereceivedacopyoftheGNUGeneralPublicLicensealongwiththisprogram;

if

not,writetotheFreeSoftwareFoundation,Inc.,59TemplePlace,Suite330,Boston,MA

02111-1307USA

Ifyoudon'

twanttobeboundbyGNUGPLterms(forinstance,ifyouwouldliketoembedSphinx

inyoursoftware,butwouldnotliketodiscloseitssourcecode),pleasecontacttheauthortoobtain

acommerciallicense.

作者

Sphinx的最初作者和目前的主要开发人员:

AndrewAksyonoff,<

shodan(at)shodan.ru>

贡献者

为Sphinx的开发出过力的人员和他们的贡献如下(以下排名不分先后):

Robert"

coredev"

Bengtsson(Sweden),initialversionofPostgreSQLdatasource;

LenKranendonk,PerlAPI

DmytroShteflyuk,RubyAPI

此外,还有许多人提出了宝贵的想法、错误报告以及修正。

在此一并致谢。

1.6.历史

Sphinx的开发工作可以上溯到2001年,当时作者试图为一个数据库驱动的网站寻找一个可

接受的搜索的解决方案,但是当时没有任何方案能够满足要求。

事实上,主要是如下问题:

搜索质量(例如:

有效的相关度算法)

单纯的统计学方法的效果非常糟糕,特别是在大量的短篇文档的集合上,例如:

论坛、博客等等。

搜索速度

特别是当搜索的短语包括“停止词”时,表现的尤其明显,例如:

"

tobeornot

tobe"

建立索引时,可控的磁盘和CPU消耗

在虚拟主机的环境下,这一点的重要性要超过对索引构造速度的要求

年复一年,其他的解决方案有了很多改进,但是,我个人认为仍然没有一种解决方案足够的

好,能让我将搜索平台迁移过去。

去年,Sphinx的用户给了我很多正面的反馈,因此,显而易见的,Sphinx的开发过程将会继

续(也许将持续到世界末日)。

2.安装

2.1.支持的操作系统

在绝大多数现代的Unix类操作系统上,只需要一个C++编译器就可以编译并运行Sphinx,

而不需要对源码进行任何改动。

目前,Sphinx可以在以下系统上运行:

Linux2.4.x,2.6.x(包括各种发行版)

Windows2000,XP

FreeBSD4.x,5.x,6.x

NetBSD1.6,3.0

Solaris9,11

MacOSX

支持的CPU种类包括X86,X86-64,SPARC64。

我希望Sphinx也能够在其他的Unix平台上工作,如果你运行Sphinx使用的操作系统不在上

面的名单中,请告诉我。

目前的阶段,Sphinx的Windows版可用于测试和调试,但不建议用于生产系统。

最突出的

两个问题是:

1)缺少并发查询的支持;

2)缺少索引数据热切换的支持。

虽然目前已经有成

功的生产环境克服了这两个问题,仍然不推荐在Windows下运行Sphinx提供高强度的搜索

服务。

在UNIX平台上,你需要以下的工具用来编译和安装Sphinx:

C++编译器。

GNUgcc就能够干这个活。

make程序。

GNUmake就能够干这个活。

在Windows平台上,你需要MicrosoftVisualC/C++Studio.NET2003or2005。

其他的编译器

/开发环境也许也能搞定这件事,但你可能需要自己手工制作他们所需的Makefile或者工程

文件。

1.将你下载的tar包解压,并进入sphinx子目录:

$tarxzvfsphinx-0.9.7.tar.gz

$cdsphinx

2.运行configuration程序:

$./configure

configure程序有很多运行选项。

完整的列表可以通过使用--help开关得到。

最重

要的如下:

--prefix,定义将Sphinx安装到何处;

--with-mysql,当自动检测失败时,指出在那里能找到MySQL头文件和库

文件;

--with-pgsql,指出在那里能找到PostgreSQL头文件和库文件。

3.制作二进制程序:

$make

4.按照二进制程序到你选好的目录下:

$makeinstall

2.4.已知的问题和解决方法

如果configure程序没有找到MySQL的头文件和库文件,请试图检查mysql-devel这

个包是否安装了。

在有些系统上,默认安装包括这个包。

如果make程序给出如下错误提示,

/bin/sh:

g++:

commandnotfound

make[1]:

***[libsphinx_a-sphinx.o]Error127

请检查gcc-c++这个包是否安装了。

如果你在编译时得到如下错误

sphinx.cpp:

67:

error:

invalidapplicationof`sizeof'

to

incompletetype`Private:

:

SizeError<

false>

'

这意味着某些编译时的类型检查失败了,一个最有可能的原因是在你的系统上类型off_t的

长度小于64bit。

一个快速的修复手段是,你可以修改sphinx.h,将在定义类型SphOffset_t

处,将off_t替换成DWORD,需要注意,这种改动将使你的全文索引文件不能超过2GB。

即便这种修改有用,也请汇报这一问题,在汇报中请包括具体的错误信息以及操作系统编译

器的配置情况。

这样,我可能能够在下一个版本中解决这一问题。

如何你遇到了其他的任何问题,或者前面的建议对你没有帮助,别犹豫,请立刻联系我。

以下所有的例子都假设你将sphinx安装在目录/usr/local/sphinx中了。

为了使用Sphinx,你需要:

1.创建配置文件

缺省的配置文件名为sphinx.conf。

全部的Sphinx提供的程序默认都在当前工作

的目录下寻找该文件。

由configure程序生成的示例配置文件sphinx.conf.dist中包括全部选项的

注释,复制并编辑这个文件使之适用于你的具体情况:

$cd/usr/local/sphinx/etc

$cpsphinx.conf.distsphinx.conf

$visphinx.conf

在示例配置文件中,将试图对MySQL数据库test中的documents表建立索引;

因此在这里还提供了example.sql用于给测试表增加数据用于测试:

$mysql-utest<

/usr/local/sphinx/etc/example.sql

2.运行indexer创建你的全文索引:

$/usr/local/sphinx/bin/indexer

3.检索你新创建的索引!

你可以使用search实用程序可以从命令行对索引进行检索:

$/usr/local/sphinx/bin/searchtest

如果要从PHP脚本检索索引,你需要:

1.运行守护进程searchd,PHP脚本需要连接到searchd上进行检索:

$/usr/local/sphinx/bin/searchd

2.运行PHPAPI附带的test脚本(运行之前请确认searchd守护进程已启动):

$cdsphinx/api

$phptest.phptest

3.将API文件(位于api/sphinxapi.php)包含进你自己的脚本,开始编程。

搜索愉快!

3.建立索引

3.1.数据源

索引的数据可以来自各种各样不同的来源:

SQL数据库、纯文本、HTML文件、邮件等等。

从Sphinx的视角看,索引数据是一个结构化的文档的集合,其中每个文档是字段的集合,

这和SQL数据库的视角有所不同,在那里,每一行代表一个文档,每一列代表一个字段。

由于数据来源的不同,需要不同的代码来获取数据、处理数据以供Sphinx进行索引的建立。

这种代码被称之为数据源驱动程序(简称:

驱动或数据源)。

在本文撰写时,Sphinx中包括MySQL和PostgreSQL数据源的驱动程序,这些驱动使用数据

库系统提供的C/C++原生接口连接到数据库服务器并获取数据。

此外,Sphinx还提供了额外

的被成为xmlpipe的数据源驱动,该驱动运行某个具体的命令,并从该命令的输出中读入数

据。

数据的格式在3.8,“xmlpipe数据源”中有介绍。

如果确有必要,一个索引的数据可以来自多个数据源。

这些数据将严格按照配置文件中定义

的顺序进行处理。

所有从这些数据源获取到的文档将被合并,共同产生一个索引,如同他们

来源于同一个数据源一样。

属性是附加在每个文档上的额外的信息(值),可以在搜索的时候用于过滤和排序。

搜索结果通常不仅仅是进行文档的匹配和相关度的排序,经常还需要根据其他与文档相关联

的值,对结果进行额外的处理。

例如,用户可能需要对新闻检索结果依次按日期和相关度排

序,检索特定价格范围内的产品,检索某些特定用户的blog日志,或者将检索结果按月分

组。

为了高效地完成上述工作,Sphinx允许给文档附加一些额外的值,并把这些值存储在全

文索引中,以便在对全文匹配结果进行过滤、排序或分组时使用。

论坛帖子表是一个很好的例子。

假设只有帖子的标题和内容这两个字段需要全文检索,但是

有时检索结果需要被限制在某个特定的作者的帖子或者属于某个子论坛的帖子中(也就是说,

只检索在SQL表的author_id和forum_id这两个列上有特定值的那些行),或者需要按

post_date列对匹配的结果排序,或者根据post_date列对帖子按月份分组,并对每组中的帖

子计数。

为实现这些功能,可以将上述各列(除了标题和内容列)作为属性做索引,之后

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1