文档Coreseek全文检索服务器2.0(Sphinx0.9.8)参考手册文档版本:v0.9目录1.简介1.1.什么是Sphinx1.2.Sphinx的特性1.3.如何获得Sphinx1.4.许可协议1.5.作者和贡献者1.6.开发历史2.安装2.1.支持的操作系统2.2.依赖的工具2.3.安装Sphinx2.4.已知的问题和解决方法2.5.Sphinx快速入门教程3.建立索引3.1.数据源3.2.属性3.3.多值属性(MVA:multi-valuedattributes)3.4.索引3.5.数据源的限制3.6.字符集,大小写转换,和转换表3.7.SQL数据源(MySQL,PostgreSQL)3.8.xmlpipe数据源3.9.xmlpipe2数据源3.10.实时索引更新3.11.索引合并4.搜索4.1.匹配模式4.2.布尔查询4.3.扩展查询4.4.权值计算4.5.排序模式4.6.结果分组(聚类)4.7.分布式搜索4.8.searchd日志格式5.API参考5.1.通用API方法5.1.1.GetLastError5.1.2.GetLastWarning5.1.3.SetServer5.1.4.SetRetries5.1.5.SetArrayResult5.2.通用搜索设置5.2.1.SetLimits5.2.2.SetMaxQueryTime5.3.全文搜索设置5.3.1.SetMatchMode5.3.2.SetRankingMode5.3.3.SetSortMode5.3.4.SetWeights5.3.5.SetFieldWeights5.3.6.SetIndexWeights5.4.结果集过滤设置5.4.1.SetIDRange5.4.2.SetFilter5.4.3.SetFilterRange5.4.4.SetFilterFloatRange5.4.5.SetGeoAnchor5.5.GROUPBY设置5.5.1.SetGroupBy5.5.2.SetGroupDistinct5.6.搜索5.6.1.Query5.6.2.AddQuery5.6.3.RunQueries5.6.4.ResetFilters5.6.5.ResetGroupBy5.7.额外的方法5.7.1.BuildExcerpts5.7.2.UpdateAttributes6.MySQL存储引擎(SphinxSE)6.1.SphinxSE概览6.2.安装SphinxSE6.2.1.在MySQL5.0.x上编译SphinxSE6.2.2.在MySQL5.1.x上编译SphinxSE6.2.3.SphinxSE安装测试6.3.使用SphinxSE7.报告bugs8.sphinx.conf选项参考8.1.Datasource配置选项8.1.1.type8.1.2.sql_host8.1.3.sql_port8.1.4.sql_user8.1.5.sql_pass8.1.6.sql_db8.1.7.sql_sock8.1.8.mysql_connect_flags8.1.9.sql_query_pre8.1.10.sql_query8.1.11.sql_query_range8.1.12.sql_range_step8.1.13.sql_attr_uint8.1.14.sql_attr_bool8.1.15.sql_attr_timestamp8.1.16.sql_attr_str2ordinal8.1.17.sql_attr_float8.1.18.sql_attr_multi8.1.19.sql_query_post8.1.20.sql_query_post_index8.1.21.sql_ranged_throttle8.1.22.sql_query_info8.1.23.xmlpipe_command8.1.24.xmlpipe_field8.1.25.xmlpipe_attr_uint8.1.26.xmlpipe_attr_bool8.1.27.xmlpipe_attr_timestamp8.1.28.xmlpipe_attr_str2ordinal8.1.29.xmlpipe_attr_float8.1.30.xmlpipe_attr_multi8.2.索引配置选项8.2.1.type8.2.2.source8.2.3.path8.2.4.docinfo8.2.5.mlock8.2.6.morphology8.2.7.stopwords8.2.8.wordforms8.2.9.exceptions8.2.10.min_word_len8.2.11.charset_type8.2.12.charset_table8.2.13.ignore_chars8.2.14.min_prefix_len8.2.15.min_infix_len8.2.16.prefix_fields8.2.17.infix_fields8.2.18.enable_star8.2.19.ngram_len8.2.20.ngram_chars8.2.21.phrase_boundary8.2.22.phrase_boundary_step8.2.23.html_strip8.2.24.html_index_attrs8.2.25.html_remove_elements8.2.26.local8.2.27.agent8.2.28.agent_connect_timeout8.2.29.agent_query_timeout8.2.30.preopen8.2.31.charset_dictpath8.3.indexer程序配置选项8.3.1.mem_limit8.3.2.max_iops8.3.3.max_iosize8.4.searchd程序配置选项8.4.1.address8.4.2.port8.4.3.log8.4.4.query_log8.4.5.read_timeout8.4.6.max_children8.4.7.pid_file8.4.8.max_matches8.4.9.seamless_rotate8.4.10.preopen_indexes8.4.11.unlink_old1.简介1.1.什么是SphinxSphinx是一个在GPLv2下发布的一个全文检索引擎,商业授权(例如,嵌入到其他程序中)需要联系我们(Sphinxsearch.com)以获得商业授权。一般而言,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@gmail.com李沫南1.2.Sphinx的特性高速的建立索引(在当代CPU上,峰值性能可达到10MB/秒);高性能的搜索(在2–4GB的文本数据上,平均每次检索响应时间小于0.1秒);可处理海量数据(目前已知可以处理超过100GB的文本数据,在单一CPU的系统上可处理100M文档);提供了优秀的相关度算法,基于短语相似度和统计(BM25)的复合Ranking方法;支持分布式搜索;providesdocumentexceprtsgeneration;可作为MySQL的存储引擎提供搜索服务;支持布尔、短语、词语相似度等多种检索模式;文档支持多个全文检索字段(最大不超过32个);文档支持多个额外的属性信息(例如:分组信息,时间戳等);停止词查询;支持单一字节编码和UTF-8编码;原生的MySQL支持(同时支持MyISAM和InnoDB);原生的PostgreSQL支持.1.3.如何获得SphinxSphinx可以从官方网站下载,支持中文分词的Sphinx可以从下载。目前,Sphinx的发布包包括如下软件:indexer:用于创建全文索引;search:一个简单的命令行(CLI)的测试程序,用于测试全文索引;searchd:一个守护进程,其他软件可以通过这个守护进程进行全文检索;sphinxapi:一系列searchd的客户端API库,用于流行的Web脚本开发语言(PHP,Python,Perl,Ruby)。1.4.许可协议Thisprogramisfreesoftware;youcanredistributeitand/ormodifyitunderthetermsoftheGNUGeneralPublicLicenseaspublishedbytheFreeSoftwareFoundation;eitherversion2oftheLicense,or(atyouroption)anylaterversion.SeeCOPYINGfilefordetails.Thisprogramisdistributedinthehopethatitwillbeuseful,butWITHOUTANYWARRANTY;withouteventheimpliedwarrantyofMERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.SeetheGNUGeneralPublicLicenseformoredetails.YoushouldhavereceivedacopyoftheGNUGeneralPublicLicensealongwiththisprogram;ifnot,writetotheFreeSoftwareFoundation,Inc.,59TemplePlace,Suite330,Boston,MA02111-1307USAIfyoudon'twanttobeboundbyGNUGPLterms(forinstance,ifyouwouldliketoembedSphinxinyoursoftware,butwouldnotliketodiscloseitssourcecode),pleasecontacttheauthortoobtainacommerciallicense.1.5.作者和贡献者作者Sphinx的最初作者和目前的主要开发人员:AndrewAksyonoff,shodan(at)shodan.ru贡献者为Sphinx的开发出过力的人员和他们的贡献如下(以下排名不分先后):RobertcoredevBengtsson(Sweden),initialversionofPostgreSQLdatasource;LenKranendonk,PerlAPIDmytroShteflyuk,RubyAPI此外,还有许多人提出了宝贵的想法、错误报告以及修正。在此一并致谢。1.6.历史Sphinx的开发工作可以上溯到2001年,当时作者试图为一个数据库驱动的网站寻找一个可接受的搜索的解决方案,但是当时没有任何方案能够满足要求。事实上,主要是如下问题:搜索质量(例