9.1.数据源配置选项
9.1.1.type
数据源类型。必须选项,无默认值。 已知的类型包括mysql
,pgsql
,mssql
,xmlpipe
andxmlpipe2
, 以及odbc
.
在CoreSeek的分发版本中,数据源类型还可以是python
,从而得以启用Python数据源支持。
所有其他与数据源相关的选项都依赖于这个选项指定的源类型。与SQL数据源(即MSSQL、MySQL和PostgreSQL)相关的选项以“sql_”开头,而与xmlpipe和xmlpipe2数据源相关的选项则以“xmlpipe_”开头。 除了xmlpipe
是默认支持外,其他数据源类型的支持是有前提条件的;依赖与您的设置和已安装的数据库客户端库文件,它们可能被支持或者不被支持。例如,mssql
仅在Windows系统提供支持。odbc
在Windows系统上是原生支持,而在Linux系统上通过UnixODBC library支持。
在CoreSeek的分发版本中,python
通过Python提供支持,在安装了Pythin的Windows系统和Linux系统上都可以支持。
示例:
type = mysql
9.1.2.sql_host
要连接的SQL服务器主机地址。必须选项,无默认值。仅对SQL数据源(mysql
,pgsql
,mssql
)有效。
最简单的情形下,Sphinx与MySQL或PostgreSQL服务器安装在同一台主机上,此时您只须设置为localhost即可。注 意,MySQL客户端库根据主机名决定是通过TCP/IP还是UNIX socket连接到服务器。一般来说,“localhost”使之强制使用UNIX socket连接(这是默认的也是推荐的模式),而“127.0.01”会强制使用TCP/IP。细节请参考MySQL manual。
示例:
sql_host = localhost
9.1.3.sql_port
要连接的SQL服务器的IP端口。可选选项,默认值为mysql
端口3306,pgsql
端口5432。仅适用于SQL数据源(mysql
,pgsql
,mssql
)。注意,此选项是否实际被使用依赖于sql_host选项。
示例:
sql_port = 3306
9.1.4.sql_user
连接到sql_host时使用的SQL用户名。必须选项,无默认值。仅适用于SQL数据源(mysql
,pgsql
,mssql
)。
示例:
sql_user = test
9.1.5.sql_pass
连接到sql_host时使用的SQL用户密码。必须选项,无默认值。 仅适用于SQL数据源(mysql
,pgsql
,mssql
)。
示例:
sql_pass = mysecretpassword
9.1.6.sql_db
连接到SQL数据源之后使用的SQL数据库,此后的查询均在此数据库上进行。必须选项,无默认值。 仅适用于SQL数据源(mysql
,pgsql
,mssql
)。
示例:
sql_db = test
9.1.7.sql_sock
连接到本地SQL服务器时使用的UNIX socket名称。可选选项,默认值为空(使用客户端库的默认设置)。 仅适用于SQL数据源(mysql
,pgsql
,mssql
)。
在Linux上,通常是/var/lib/mysql/mysql.sock
。 而在FreeBSD上通常是/tmp/mysql.sock
。注意此选项是否实际被使用依赖与sql_host的设置。
示例:
sql_sock = /tmp/mysql.sock
9.1.8.mysql_connect_flags
MySQL客户端的连接标志(connection flags)。可选选项,默认值为0(不设置任何标志)。仅适用于mysql
数据源。
此选项必须包含各标志相加所得的整型值。此整数将被原样传递给mysql_real_connect()。 可用的标志在mysql_com.h中列举。下面列举的是几个与索引相关的标志和它们的值:
- CLIENT_COMPRESS = 32; 允许使用压缩协议 protocol
- CLIENT_SSL = 2048; 握手后切换到SSL
- CLIENT_SECURE_CONNECTION = 32768; 新的MySQL 4.1版本身份认证
例如,标志2080(2048+32)代表同时使用压缩和SSL,32768代表仅使用新的身份验证。起初这个选项是为了在indexer
和mysql
位 于不同主机的情况下使用压缩协议而引入的。尽管降低了网络带宽消耗,但不管在理论上还是在现实中,在1Gbps的链路上启用压缩很可能恶化索引时间。然而 在100Mbps的连输上启用压缩可能会明显地改善索引时间(有报告说总的索引时间降低了20-30%)。根据您网络的连接情况,您获得的改善程度可能会 有所不同。
示例:
mysql_connect_flags = 32 # enable compression
9.1.9.mysql_ssl_cert, mysql_ssl_key, mysql_ssl_ca
连接MySQL服务器时使用的SSL认证选项。可选参数,默认值是空串(即不使用SSL认证)。 Applies tomysql
source type only.
这些指令用来在indexer
和MySQL之间建立安全的SSL连接。关于怎样建立认证机制和设置MySQL服务器的信息可以参考MySQL文档。仅适用于mysql
数据源。
示例:
mysql_ssl_cert = /etc/ssl/client-cert.pem mysql_ssl_key = /etc/ssl/client-key.pem mysql_ssl_ca = /etc/ssl/cacert.pem
9.1.10.odbc_dsn
要连接的ODBC DSN。必须选项,没有默认值。 仅适用于odbc
数据源。
ODBC DSN(数据源名字,Data Source Name)指定了连接ODBC数据源时使用的认证选项(主机地址,用户名,密码等)。具体的格式与ODBC的具体驱动有关。
示例:
odbc_dsn = Driver={Oracle ODBC Driver};Dbq=myDBName;Uid=myUsername;Pwd=myPassword
9.1.11.sql_query_pre
取前查询(pre-fetch query),或预查询(pre-query)。多值选项,可选选项,默认为一个空的查询列表。 仅适用于SQL数据源(mysql
,pgsql
,mssql
)。
多值意思是您可以指定多个预查询。它们在the main fetch query之前执行,而且会严格按照在配置文件中出现的顺序执行。预查询的结果会被忽略。
预查询在很多时候有用。它们被用来设置字符编码,标记待索引的记录,更新内部计数器,设置SQL服务器连接选项和变量等等。
也许预查询最常用的一个应用就是用来指定服务器返回行时使用的字符编码。这必须与Sphinx期待的编码相同(在charset_type和charset_table选项中设置)。以下是两个与MySQL有关的设置示例:
sql_query_pre = SET CHARACTER_SET_RESULTS=cp1251 sql_query_pre = SET NAMES utf8
对于MySQL数据源,在预查询中禁用查询缓冲(query cache)(仅对indexer连接)是有用的,因为索引查询一般并会频繁地重新运行,缓冲它们的结果是没有意义的。这可以按如下方法实现:
sql_query_pre = SET SESSION query_cache_type=OFF
示例:
sql_query_pre = SET NAMES utf8 sql_query_pre = SET SESSION query_cache_type=OFF
9.1.12.sql_query
获取文档的主查询。必须的选项,无默认选项。 仅适用于SQL数据源(mysql
,pgsql
,mssql
)。
只能有一个主查询。它被用来从SQL服务器获取文档(文档列表)。可以指定多达32个全文数据字段(严格来说是在sphinx.h中定义的SPH_MAX_FIELDS个)和任意多个属性。所有既不是文档ID(第一列)也不是属性的列的数据会被用于建立全文索引。
文档ID必须是第一列,而且必须是唯一的正整数值(不能是0也不能是负数),既可以是32位的也可以是64位的,这要根据Sphinx是如何被构建的,默认情况下文档ID是32位的,但在运行configure
脚本时指定--enable-id64
选项会打开64位文档ID和词ID的支持。
示例:
sql_query = \ SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, \ title, content \ FROM documents
9.1.13.sql_query_range
分区查询设置。可选选项,默认为空。 仅适用于SQL数据源(mysql
,pgsql
,mssql
)。
设置这个选项会启用文档的区段查询(参看Section3.7, “区段查询”)。分区段查询有助于避免在索引大量数据时发生MyISAM表臭名昭著的死锁问题。(同样有助于解决其他不那么声名狼藉的问题,比如大数据集上的性能下降问题,或者InnoDB对多个大型读事务(read transactions)进行序列化时消耗额外资源的问题。)
此选项指定的查询语句必须获取用于分区的最小和最大文档ID。它必须返回正好两个整数字段,先是最小ID然后是最大ID,字段的名字会被忽略。
当启用了分区段查询时,sql_query要求包括$start
和$end
宏(因为重复多次索引整个表显然是个错误)。注意,$start
..$end
所指定的区间不会重叠,因此不会在查询中删除ID正好等于$start
或$end
的文档。Section3.7, “区段查询”中的例子解释了这个问题,注意大于等于或小于等于比较操作是如何被使用的。
示例:
sql_query_range = SELECT MIN(id),MAX(id) FROM documents
9.1.14.sql_range_step
区段查询的步进。可选选项,默认为1024。 仅适用于SQL数据源(mysql
,pgsql
,mssql
)。
仅当启用ranged queries时有效。用sql_query_range取得的文档ID区间会被以这个不小的间隔步数跳跃遍历。例如,如果取得的最小和最大ID分别是12和3456,而间隔步数是1000,那么indexer会用下面这些值重复调用几次sql_query:
- $start=12, $end=1011
- $start=1012, $end=2011
- $start=2012, $end=3011
- $start=3012, $end=3456
示例:
sql_range_step = 1000
9.1.15.sql_query_killlist
用于得到Kill-list的查询。可选选项,默认为空(不设定查询)。 仅适用于SQL数据源(mysql
,pgsql
,mssql
)。 Introduced in version 0.9.9-rc1.
这个查询返回的结果集应该只有一列,每行是一个文档ID。返回的这些文档ID将被存储在一个索引里。根据查询中提到的索引的顺序,一个索引的kill-list会抑制来自其他索引的结果。这个设计的目的是要帮助用户实现在现有索引上的删除或者更新,而不用重建索引(甚至根本不用访问这个索引),尤其是为了结果解决“幽灵结果”问题。
让我们来分析一个实际的例子。假设我们有两个索引,‘main’和‘delta’。假设文档2、3和5在上一次重建索引‘main’的时候就被删除 了,而文档7和文档11则被更新了(即他们的文字内容发生了变化)。假设在建立索引‘main’的时候,关键字‘test’在所有这些提到的文档中都出现 了。而当我们建立索引‘delta’的时候文档7中也出现了关键字‘test’,但是文档11中不再有关键字‘test’了。现在我们重新建立索引 ‘delta’,然后以合适的顺序(较旧的排在较新的之前)对这两个索引进行检索:
$res = $cl->Query ( "test", "main delta" );
首先,我们要正确地处理删除的情况。结果集合不应该包含文档2、3或5。其次,我们也要避免出现幽灵结果。如果我们不做点什么,文档11就会出现在搜索结果中。因为它会被在‘main’中查到(但在‘delta’中查不到它),并出现在最终的结果集合中,除非我们做点什么防止这种情况的发生。
Kill-list,或者缩写成K-list就是我们要做的。附加在‘delta’索引上的Kill-list会屏蔽掉前面所有各索引中检索到的特定行,在这个例子中,也就是‘main’中的行。因此,想要得到预期的结果,我们应该将更新了的和删除了的文档ID都放进Kill-list。
示例:
sql_query_killlist = \ SELECT id FROM documents WHERE updated_ts>=@last_reindex UNION \ SELECT id FROM documents_deleted WHERE deleted_ts>=@last_reindex
9.1.16.sql_attr_uint
声明无符号整数属性(attribute)。可声明同一类型的多个不同名称的属性,可选项。 仅适用于SQL数据源(mysql
,pgsql
,mssql
)。
被声明的列的值必须在32位无符号整型可表示的范围内。超出此范围的值也会被接受,但会溢出。例如-1会变成 2^32-1 或者说4,294,967,295。
您可以在属性名后面附加“:BITCOUNT”(见下面的示例)以便指定整型属性的位数。属性小于默认32位(此时称为位域)会有损性能。但它们在外部存储(extern storage)模式下可以节约内存:这些位域被组合成32位的块存储在.spa
属性数据文件中。如果使用内联存储(inline storage),则位宽度的设置会被忽略。
示例:
sql_attr_uint = group_id sql_attr_uint = forum_id:9 # 9 bits for forum_id
9.1.17.sql_attr_bool
声明布尔属性(attribute)。可声明同一类型的多个不同名称的属性,可选项。仅适用于SQL数据源(mysql和pgsql)。 仅适用于SQL数据源(mysql
,pgsql
,mssql
)。 等价于用sql_attr_uint声明为1位。
示例:
sql_attr_bool = is_deleted # will be packed to 1 bit
9.1.18.sql_attr_bigint
64位整数属性(attribute)声明。多个值(可以同时声明多个属性),可选选项。 仅适用于SQL数据源(mysql
,pgsql
,mssql
)。 注意,与sql_attr_uint不同,这些值是有符号的。于版本0.9.9-rc1引入。
示例:
sql_attr_bigint = my_bigint_id
9.1.19.sql_attr_timestamp
声明UNIX时间戳属性(attribute)。可声明同一类型的多个不同名称的属性,可选项。 仅适用于SQL数据源(mysql
,pgsql
,mssql
)。
这个列的值必须是UNIX格式的时间戳,即32位无符号整数表示的自格林尼治平时1970年1月1日午夜起过去的秒数。时间戳在内部是按整数值存储 和处理的。但除了将时间戳按整数使用,还可以对它们使用多种与日期相关的函数——比如时间段排序模式,或为分组(GROUP BY)抽取天/星期/月/年。注意MySQL中的DATE和DATETIME列类型不能直接作为时间戳使用,必须使用UNIX_TIMESTAMP函数将这些列做显式转换。
示例:
sql_attr_timestamp = UNIX_TIMESTAMP(added_datetime) AS added_ts
9.1.20.sql_attr_str2ordinal
声明字符串序数属性(attribute)。可声明同一类型的多个不同名称的属性,可选项。 仅适用于SQL数据源(mysql
,pgsql
,mssql
)。
这个属性类型(简称为字串序数)的设计是为了允许按字符串值排序,但不存储字符串本身。对字串序数做索引时,字符串值从数据库中取出、暂存、排序然后用它们在该有序数组中的序数代替它们自身,因此字串序数是个整型,对它们的大小比较与在原字串上做字典序比较结果相同。
早期版本上,对字串序数做索引可能消耗大量的RAM。自r1112起,字串序数的积累和排序也可在固定大小的内存中解决了(代价是额外的临时磁盘空间),并受mem_limit设置限制。
理想中字符串可以根据字符编码和本地字符集(locale)排序。例如,如果已知字符串为KOI8R编码下的俄语字串,那么对字节 0xE0,0xE1和0xE2排序结果应为0xE1,0xE2和0xE0,因为0xE0在KOI8R中代表的字符明显应在0xE1和0xE2之后。但很不 幸,Sphinx目前不支持这个功能,而是简单地按字节值大小排序。
请注意,这里的序号是每个索引根据自身数据计算的,因此在同时读取多个索引事实无法同时保留正确的顺序进行合并的。处理后的字符串被替换为处理时其 在索引中的序列号,但是不同的索引具有不同的字符串集。例如,如果'main'索引包含字符串"aaa", "bbb", "ccc", 直到 "zzz",它们将会被分别分配数值为1,2,3,直到26。但是'delta'如果仅包含"zzz",则会被分配数值1。那么在合并后,该顺序将被打 乱。不幸的是,在不存储原始字符串的情况下,这个问题无法解决(一旦存储原始字符串,序号将没有任何用处了)。
示例:
sql_attr_str2ordinal = author_name
9.1.21.sql_attr_float
声明浮点型属性attribute。 可声明同一类型的多个不同名称的属性,可选项。 仅适用于SQL数据源(mysql
,pgsql
,mssql
)。
属性值按单精度32位IEEE754格式存储。可表示的范围大约是1e-38到1e+38。可精确表示的小数大约是7位。浮点属性的一个重要应用是存储经度和纬度值(以角度为单位),经纬度值在查询时的地表距离计算中有用。
示例:
sql_attr_float = lat_radians sql_attr_float = long_radians
9.1.22.sql_attr_multi
声明多值属性(Multi-valued attribute,MVA)). 可声明同一类型的多个不同名称的属性,可选项。 仅适用于SQL数据源(mysql
,pgsql
,mssql
)。
简单属性每篇文档只允许一个值。然而有很多情况(比如tags或者类别)需要将多个值附加给同一个属性,而且要对这个属性值列表做过滤或者分组。
声明格式如下(用反斜线只是为了清晰,您仍可以在一行之内完成声明):
sql_attr_multi = ATTR-TYPE ATTR-NAME 'from' SOURCE-TYPE \ [;QUERY] \ [;RANGE-QUERY]
其中
- ATTR-TYPE 是 'uint' 或者 'timestamp' 之一
- SOURCE-TYPE 是 'field', 'query', 或者 'ranged-query' 之一
- QUERY 是用来取得全部(文档ID,属性值)序对的SQL查询
- RANGE-QUERY 是用来取得文档ID的最小值与最大值的SQL查询,与'sql_query_range'类似
示例:
sql_attr_multi = uint tag from query; SELECT id, tag FROM tags sql_attr_multi = uint tag from ranged-query; \ SELECT id, tag FROM tags WHERE id>=$start AND id<=$end; \ SELECT MIN(id), MAX(id) FROM tags
9.1.23.sql_query_post
后取查询。可选项,默认值为空。 仅适用于SQL数据源(mysql
,pgsql
,mssql
)。
此查询在sql_query成功执行后立即执行。如果取后取查询产生了错误,该错误被当作警告被报告,但索引不会因此终止。取后查询的结果会被忽略。注意当取后查询执行时索引还尚未完成,而后面的索引仍然可能失败。因此在这个查询中不应进行任何永久性的更新。例如,不应在此查询中更新辅助表中存储的最近成功索引的文档ID值,请在后索引查询(post-index query)中操作。
示例:
sql_query_post = DROP TABLE my_tmp_table
9.1.24.sql_query_post_index
后索引查询。可选项,默认值为空。 仅适用于SQL数据源(mysql
,pgsql
,mssql
)。
此查询在索引完全成功结束后执行。如果此查询产生错误,该错误会被当作警告报告,但索引不会因此而终止。该查询的结果集被忽略。此查询中可以使用宏$maxid
,它会被扩展为索引过程中实际得到的最大的文档ID。
示例:
sql_query_post_index = REPLACE INTO counters ( id, val ) \ VALUES (NULL, $maxid )
9.1.25.sql_ranged_throttle
分区查询的间隔时间(throttling),单位是毫秒。可选选项,默认值为0(无间隔时间)。 仅适用于SQL数据源(mysql
,pgsql
,mssql
)。
此选项旨在避免indexer对数据库服务器构成了太大的负担。它会使indexer在每个分区查询的步之后休眠若干毫秒。休眠无条件执行,并在取结果的查询之前执行。
示例:
sql_ranged_throttle = 1000 # sleep for 1 sec before each query step
9.1.26.sql_query_info
文档信息查询。 可选选项,默认为空。 仅对mysql
数据源有效。
仅被命令行搜索所用,用来获取和显示文档信息,目前仅对MySQL有效,且仅用于调试目的。此查询为每个文档ID获取CLI搜索工具要显示的文档信息。 它需要包含$id
宏,以此来对应到查询的文档的ID。
示例:
sql_query_info = SELECT * FROM documents WHERE id=$id
9.1.27.xmlpipe_command
调用xmlpipe流提供者的Shell命令。必须选项。仅对xmlpipe
和xmlpipe2
数据源有效。
指定的命令会被运行,其输出被当作XML文档解析。具体格式描述请参考Section3.8, “xmlpipe 数据源”orSection3.9, “xmlpipe2 数据源”。
示例:
xmlpipe_command = cat /home/sphinx/test.xml
9.1.28.xmlpipe_field
声明xmlpipe数据字段。可声明同一类型的多个不同名称的属性,可选项。仅对xmlpipe2
数据源有效。参考Section3.9, “xmlpipe2 数据源”.
示例:
xmlpipe_field = subject xmlpipe_field = content
9.1.29.xmlpipe_attr_uint
声明xmlpipe整型属性。可声明同一类型的多个不同名称的属性,可选项。仅对xmlpipe2
数据源有效。语法与sql_attr_uint相同。
示例:
xmlpipe_attr_uint = author
9.1.30.xmlpipe_attr_bool
声明xmlpipe布尔型属性。可声明同一类型的多个不同名称的属性,可选项。 仅对xmlpipe2
数据源有效。语法与sql_attr_bool相同。
示例:
xmlpipe_attr_bool = is_deleted # will be packed to 1 bit
9.1.31.xmlpipe_attr_timestamp
声明xmlpipe UNIX时间戳属性。可声明同一类型的多个不同名称的属性,可选项。 仅对xmlpipe2
数据源有效。语法与sql_attr_timestamp相同。
示例:
xmlpipe_attr_timestamp = published
9.1.32.xmlpipe_attr_str2ordinal
声明xmlpipe字符序数属性。可声明同一类型的多个不同名称的属性,可选项。 仅对xmlpipe2
数据源有效。语法与sql_attr_str2ordinal相同。
示例:
xmlpipe_attr_str2ordinal = author_sort
9.1.33.xmlpipe_attr_float
声明xmlpipe浮点型属性。可声明同一类型的多个不同名称的属性,可选项。 仅对xmlpipe2
数据源有效。语法与sql_attr_float相同。
示例:
xmlpipe_attr_float = lat_radians xmlpipe_attr_float = long_radians
9.1.34.xmlpipe_attr_multi
声明xmlpipe MVA属性。可声明同一类型的多个不同名称的属性,可选项。 仅对xmlpipe2
数据源有效。
这个选项为xmlpipe2流声明一个MVA属性标签。该标签的内容会被试图解析成一个整型值的列表(数组),此列表构成一个MVA属性值,这与把MVA属性的数据源设置为“字段”时sql_attr_multi分析SQL列内容的方式类似。
示例:
xmlpipe_attr_multi = taglist
9.1.35.xmlpipe_fixup_utf8
在Sphinx端进行UTF-8验证和过滤,防止XML分析器因为碰上非UTF-8文档而犯疯卡死。可选选项,默认值为0。只适用于xmlpipe2数据源。 仅对xmlpipe2
数据源有效。
在某些特定情况下很难甚至不可能保障输入的xmlpipe2文档体都是完美有效一致的UTF-8编码。例如,输入流中可能溜进一些特定国家的单字节 编码文本。Libexpat这个XML分析器非常脆弱,遇到这种情况就会停止工作。UTF-8修复(UTF-8 fixup)功能能让这种情况得到避免。当启动了修复选项的时候,Sphinx会对输入留进行预处理,其后再传给XML分析器,其间非法的UTF-8序列 全部被替换成空格。
示例:
xmlpipe_fixup_utf8 = 1
9.1.36.mssql_winauth
标志位,代表是否使用MS SQL的windows身份认证。布尔型,可选选项,默认值是0(假)。只适用于mssql
数据源。于版本0.9.9-rc1引入。
这个选项指出在连接到MS SQL Server时时候使用现在正登录的windows账户的凭据作来进行身份验证。注意当searchd
作为服务运行时,账户的用户名可能与安装这个服务的账户不同。
示例:
mssql_winauth = 1
9.1.37.mssql_unicode
MS SQL编码类型标志位。布尔型,可选选项,默认值是0(假)。只适用于mssql
数据源。于版本0.9.9-rc1引入。
这个选项指出在对MS SQL Server进行查询时,是使用Unicode还是单字节数据。这个标志位必须与charset_type指令同步,也就是说,要索引Unicode数据,则既要设置charset_type选项(设为‘utf-8’),又要设置数据源的mssql_unicode
选项(设为1)。多说一句:MS SQL实质上返回UCS-2编码的数据,而不是UTF-8,但Sphinx可以自动处理这个情况。
示例:
mssql_unicode = 1
9.1.38.unpack_zlib
使用zlib(即gnuzip)来解压(unpack,deflate)的列。多个值,可选选项,默认值是列的空列表。仅适用于SQL数据源(mysql
,pgsql
,mssql
)。于版本0.9.9-rc1引入。
indexer
会使用标准zlib算法(称作deflate,gunzip
也实现了这个算法)对这个选项指定的那些列进行解压缩。当建立索引的动作发生在数据库所在机器以外的机器时,这个选项会降低数据库的负载,并节约网络带宽。要想使用这个特性,就必须保证在建立时zlib和zlib-devel都是可用的。
示例:
unpack_zlib = col1 unpack_zlib = col2
9.1.39.unpack_mysqlcompress
使用MySQL UNCOMPRESS()算法解压的列。多个值,可选选项,默认值是列的空列表。仅适用于SQL数据源(mysql
,pgsql
,mssql
)。于版本0.9.9-rc1引入。
indexer
会使用MySQL COMPRESS()和UNCOMPRESS()使用的修改过的zlib算法对这个选项指定的那些列进行解压缩。 当建立索引的动作发生在数据库所在机器以外的机器时,这个选项会降低数据库的负载,并节约网络带宽。要想使用这个特性,就必须保证在建立时zlib和 zlib-devel都是可用的。
示例:
unpack_mysqlcompress = body_compressed unpack_mysqlcompress = description_compressed
9.1.40.unpack_mysqlcompress_maxsize
用于UNCOMPRESS()解压后数据的缓冲区大小。可选选项,默认值是16M。于版本0.9.9-rc1引入。
当使用unpack_mysqlcompress选项时,由于实现方法本质上的限制,不可能减小缓冲区大小方面的需求。因此缓冲区必须预先分配好,解压出的数据也不能超过缓冲区大小。这个选项控制这个缓冲区大小值,既可以用于限制indexer
的内存使用,也可以用于在需要的时候使解压非常大的数据变为可能
示例:
unpack_mysqlcompress_maxsize = 1M