Sphinx全文检索引擎使用指南:索引配置选项

8.2.1. type

索引类型。可选选项,默认值为空(索引为简单本地索引)。可用的值包括空字符串或 “distributed”

Sphinx支持两种不同的索引类型:本地——在本机上存储和处理,和远程——不仅涉及">本地搜索,而且同时通过网络向远程searchd实力做查询。索引类似选项使您可以选择使用何种索引。索引默认是本地型。指定“distributed”索引类型会运行分布式搜索,参看 节 4.7, “分 布式搜索”

示例:

type = distributed

8.2.2. source

向本地索引增加文档源。可以出现多次,必须选项。

为当前索引指定一个从中可以获取文档的文档源。必须至少有一个文档源。可以有多个文档源,任何数据源类型都可接受:即您可以从MySQL服务器中获取一部分数据,从 PostgreSQL中获取另一部分,再在文件系统上使用 xmlpipe2 wrapper获取一部分。

然而,对源数据却有一些限制。首先,文档ID必须在所有源的总体上是唯一的。如果这个条件不满足,那可能导致非预期的搜索结果。其次,源的模式必须相同,以便在同一个索引中存储。

数据来源的ID不会被自动存储。因此,为了获知匹配的文档是从哪个数据源中来的,需要手工存储一些额外的信息。通常有两种方法:

1.修改文档ID,将源ID编码进去:

source src1 { sql_query = SELECT id*10+1, ... FROM table1 ... }

source src2 { sql_query = SELECT id*10+2, ... FROM table2 ... }

2.将数据来源存储为一个属性

source src1 { sql_query = SELECT id, 1 AS source_id FROM table1 sql_attr_uint = source_id ... }

source src2 { sql_query = SELECT id, 2 AS source_id FROM table2 sql_attr_uint = source_id ... }

示例:

source = srcpart1

source = srcpart2

source = srcpart3

8.2.3. path

索引文件的路径和文件名(不包括扩展名)。必须选项。

path既包括文件夹也包括文件名,但不包括扩展名。indexer在产生永久和临时索引文件的最终名字时会附加上不同的扩展名。永久数据文件有几个不同的扩展名,都以“.sp”开头,临时文件的扩展名以“.tmp”开头。如果indexer没有成功地自动删除.tmp*文件,手工删除是安全的。

以下是不同索引文件所存储的数据种类,供参考:

.spa存储文档属性(仅在extern_docinfo存储模式中使用) ?

.spd存储每个词 ID可匹配的文档ID列表 ?

.sph存储索引头信息 ?

.spi存储词列表(词 ID和指向.spd文件的指针)

.spm存储MVA数据

.spp存储每个词 ID的命中(或者说记账,或者词的出现)列表

示例:

path = /var/data/test1

8.2.4. docinfo

文档信息(docinfo)的存储模式。可选选项,默认是“extern”已知的值包括'none', 'extern'和 'inline'.

此选项确切定义了文档信息在磁盘和RAM中的物理存储方式。“none”意思是根本不存储文档信息(没有任何属性)。通常并不需要显式设置为“none”因为当没有配置任何属性时 Sphinx会自动选择“none”。“inline”代表文档信息与文档ID列表一同存储在在.spd文件中。 “extern”代表文档信息与文档ID分开(在外部)存储(在.spa文件中)。

基本上,外部存储的文档信息在查询时必须保持在内存中。这是性能的原因。因此8630.html">有时候 “inline”是唯一的选择。然而这种情况并不多见,文档信息默认是“extern”存储的。深入的探讨和RAM使用的估计请参见 节 3.2, “属性” 。

示例:

docinfo = inline

8.2.5. mlock

已缓冲数据的内存锁定。可选选项,默认为0(不调用mlock())

为提高性能,searchd将.spa和.spi文件预取到内存中,并一直在内存中保存它们的拷贝。但如果一段时间内没有对该索引的搜索,则对这份缓冲的拷贝没有内存访问,而操作系统可能会决定将它交换到磁盘上去。对这些“冷却”了的索引的访问会导致其交换回内存并得到一个较大的延迟。

将 mlock选项设置为1会使Sphinx使用mlock(2)系统调用将存储上述缓冲了的数据的系统内存锁定,这将避免内存交换(详情参见 man 2 mlock)。mlock(2)是特权调用,因此可能需要 searchd以root账户运行或通过其他办法赋予足够的权限。如果mlock()失败会发出警告,但索引会继续进行。

示例:

mlock = 1

8.2.6. morphology

词形处理器的列表。可选选项,默认为空(不使用任何词形处理器)。

词形处理器可以将待索引的词从各种形态变成基本的规则的形态。例如,英语词干提取器(English stemmer)可以将“dogs”和“dog”都变成“dog”,这使搜索这两个词的结果都相同。

内置的词形处理器包括英语词干提取器,俄语词干提取器(支持UTF-8和Windows-1251编码),Soundex和Metaphone。后面两个会将词替换成特殊的语音编码,这会使发音相近的词表示形式相同 。Snowball项目的 libstemmer库提供的额外 词干提取器可以通过在编译期对configure脚本使用—with-libstemmer选项来启用。内建的英语和俄语词干提取器要比它们在 libstemmer中的对应物运行更快,但它们的结果可能略有不同,因为内建的版本基于较旧的版本。Metaphone基于 Double Metaphone算法实现。

在morphology选项中可使用的内建值包括“none”,“stem_en”,“stem_ru”,“stem_enru”, “soundex”和“metaphone”。libstemmer提供的额外值格式为“libstemmer_XXX”,XXX指 libstemmer算法的代号。(完整列表参见 libstemmer_c/libstemmer/modules.txt)

可以指定多个词干提取器(以逗号分隔)。这些提取器按列出的顺序应用于输入词串,整个处理会在第一个真正修改了原词的词干提取器之后停止。另外,当 wordforms 特性启用时,词会现在词形字典中查询,如果词典中有对应的条目,那么词干提取器干脆不会被使用。换个说法, wordforms 选项可以用来补充指定词干提取器的例外情况。

示例:

morphology = stem_en, libstemmer_sv

时间: 2024-09-20 09:09:54

Sphinx全文检索引擎使用指南:索引配置选项的相关文章

Sphinx全文检索引擎使用指南:sphinx.conf选项参考

8.1.数据源配置选项 8.1.1. type 数据源类型.必须选项,无默认值.已知的类型包括 mysql,pgsql,xmlpipe和xmlpipe2. 所有其他与数据源相关的选项都依赖于这个选项指定的源类型.与SQL数据源(即 MySQL和PostgreSQL)相关的选项以"sql_"开头,而与xmlpipe和xmlpipe2数据源相关的选项则以 "xmlpipe_"开头. 示例: type = mysql 8.1.2. sql_host 要连接的SQL服务器主

Sphinx全文检索引擎使用指南:建立索引

3.1.数据源 索引的数据可以来自各种各样不同的来源:SQL数据库.纯文本.HTML文件.邮件等等.从Sphinx的视角看,索引数据是一个结构化的文档的集合,其中每个文档是字段的集合,这和SQL数据库的视角有所不同,在那里,每一行代表一个文档,每一列代表一个字段. 由于数据来源的不同,需要不同的代码来获取数据.处理数据以供Sphinx进行索引的建立.这种代码被称之为数据源驱动程序(简称:驱动或数据源). 在本文撰写时,Sphinx中包括 MySQL和PostgreSQL数据源的驱动程序,这些驱动

Sphinx全文检索引擎使用指南:简介

1.1.什么是Sphinx Sphinx 是一个在GPLv2 下发布的一个全文检索引擎,商业授权(例如, 嵌入到其他程序中)需要联系我们(Sphinxsearch.com)以获得商业授权. 一般而言,Sphinx是一个独立的搜索引擎,意图为其他应用提供高速.低空间占用.高结果相关度的全文搜索功能.Sphinx可以非常容易的与SQL数据库和脚本语言集成. 当前系统内置MySQL和PostgreSQL数据库数据源的支持,也支持从标准输入读取特定格式的XML数据.通过修改源代码,用户可以自行增加新的数

Sphinx全文检索引擎使用指南:searchd程序配置选项

8.4.1. address 要绑定的接口 IP地址.可选项,默认为0.0.0.0(即在所有接口上监听). 此设置指定searchd在哪个接口上绑定.监听和接受输入的http://www.aliyun.com/zixun/aggregation/184.5.html">网络连接.默认值为0.0.0.0,意思是在所有接口上监听.目前不能指定多个接口. 示例: address = 192.168.0.1 8.4.2. port searchd的TCP端口号.必选项,默认为3312. 示例: p

Sphinx全文检索引擎使用指南:indexer程序配置选项

8.3.1. mem_limit 索引过程内存使用限制.可选选项,默认 32M. 这是indexer不会超越的强制内存限制.可以以字节.千字节(以K为后缀)或兆字节(以 M为后缀)为单位.参见示例.当过小的值导致 I/O缓冲低于 8KB时该限制会自动提高,此值的最低限度依赖于待索引数据的大小.如果缓冲低于 256KB,会产生警告. 最大可能的限制是2047M.太低的值会影响索引速度,但256M到http://www.aliyun.com/zixun/aggregation/12560.html"

Sphinx全文检索引擎使用指南:安装

2.1.支持的操作系统 在绝大多数现代的Unix类操作系统上,只需要一个C++编译器就可以编译并运行Sphinx,而不需要对源码进行任何改动. 目前,Sphinx可以在以下系统上运行: ? Linux 2.4.x, 2.6.x (包括各种发行版) ? Windows 2000, XP ? FreeBSD 4.x, 5.x, 6.x ? NetBSD 1.6, 3.0 ? Solaris 9, 11 ? Mac OS X 支持的CPU种类包括 X86, X86-64, SPARC64. 我希望Sp

Sphinx全文检索引擎使用指南:MySQL存储引擎

6.1. SphinxSE概览 SphinxSE是一个可以编译进 MySQL 5.x版本的MySQL存储引擎,它利用了该版本MySQL的插件式体系结构.SphinxSE不能用于 MySQL 4.x系列,它需要MySQL 5.0.22或更高版本:或 MySQL 5.1.12或更高版本. 尽管被称作"存储引擎",SphinxSE自身其实并不存储任何数据.它其实是一个允许 MySQL服务器与searchd交互并获取搜索结果的嵌入式客户端.所有的索引和搜索都发生在 MySQL之外. 显然,Sp

Sphinx全文检索引擎使用指南:搜索

4.1.匹配模式 有如下可选的匹配模式: ? SPH_MATCH_ALL, 匹配所有查询词(默认模式) ? SPH_MATCH_ANY, 匹配查询词中的任意一个 ? SPH_MATCH_PHRASE, 将整个查询看作一个词组,要求按顺序完整匹配 ? SPH_MATCH_BOOLEAN, 将查询看作一个布尔表达式 (参见 节 4.2, "布尔查询语法" ? SPH_MATCH_EXTENDED, 将查询看作一个Sphinx内部查询语言的表达式(参见 节 4.3, " 扩展的查询

Sphinx全文检索引擎使用指南:报告bugs

很不幸,Sphinx还没有达到100%无 bug(尽管我们正向这个目标努力),因此您可能偶尔遇到些问题. 对于每个问题的报告越详细越好,这很重要--因为要想修复 bug,我们必须重现 bug并调试它,或者根据您提供的信息来推断出产生bug的原因.因此在此提供一些如何报告bug的指导. 构建时问题 如果Sphinx构建失败,请您: 1. 确认你的DBMS的头文件和库文件都正确安装了(例如,检查mysql-devel包已经安装) 2. 报告Sphinx的版本和配置文件(别忘了删除数据库连接密码),M