Sphinx/xmlpipe2 数据源

来自站长百科
跳转至: 导航、​ 搜索

Sphinx | 安装 | 建立索引|搜索|命令行工具参考|MySQL存储引擎

xmlpipe2使你可以用另一种自定义的XML格式向Sphinx传输任意文本数据和属性数据。数据模式(即数据字段的集合或者属性集)可以由XML流本身指定,也可以在配置文件中数据源的配置部分中指定。

在对xmlpipe2数据源做索引时,索引器运行指定的命令,打开一个连接到前述命令标准输出的管道,并等待接受具有正确格式的XML数据流。以下是一个数据流的样本:

Example 3. xmlpipe2 文档流

<?xml version="1.0" encoding="utf-8"?>

<sphinx:docset>

<sphinx:schema>

<sphinx:field name="subject"/> 

<sphinx:field name="content"/>

<sphinx:attr name="published" type="timestamp"/>

<sphinx:attr name="author_id" type="int" bits="16" default="1"/>

</sphinx:schema>

<sphinx:document id="1234">

<content>this is the main content <![CDATA[[and this <cdata> entry must be handled properly by xml parser lib]]></content>

<published>1012325463</published>

<subject>note how field/attr tags can be in <b class="red">randomized</b> order</subject>

<misc>some undeclared element</misc>

</sphinx:document>

<!-- ... more documents here ... -->

</sphinx:docset>

任意多的数据字段和属性都是允许的。数据字段和属性在同一文档元素中出现的先后顺序没有特别要求。。单一字段数据的最大长度有限制,超过2MB的数据会被截短到2MB(但这个限制可以在配置文件中数据源部分中修改)。

XML数据模式(Schema),即数据字段和属性的完整列表,必须在任何文档被分析之前就确定。这既可以在配置文件中用xmlpipe_field和xmlpipe_attr_XXX选项指定,也可以就在数据流中用<sphinx:schema>元素指定。 <sphinx:schema>元素是可选的,但如果出现,就必须是<sphinx:docset>元素的第一个子元素。如果没有在数据流中内嵌的数据模式定义,配置文件中的相关设置就会生效,否则数据流内嵌的设置被优先采用。

未知类型的标签(既不是数据字段,也不是属性的标签)会被忽略,但会给出警告。在上面的例子中,<misc>标签会被忽略。所有嵌入在其他标签中的标签及其属性都会被无视(例如上述例子中嵌入在<subject>标签中的<b>标签)

支持输入数据流的何种字符编码取决于系统中是否安装了iconv. xmlpipe2是用 libexpat解析器解析的,该解析器内置对 US-ASCII, UTF-8, UTF-8 和一些 UTF-16变体的支持. Sphinx的 configure 脚本也会检查 libiconv 是否存在并使用它来处理其他的字符编码。 libexpat 也隐含的要求在Sphinx端使用UTF-8,因为它返回的分析过的数据总是UTF-8的。

xmlpipe2可以识别的XML元素(标签)(以及前述元素可用的属性)如下:

  • sphinx:docset

顶级元素,用于标明并包括xmlpipe2文档.

  • sphinx:schema

可选元素,它要么是sphinx:docset的第一个子元素,要么干脆不出现。声明文档的模式。包括数据字段和属性的声明。若此元素出现,则它会覆盖配置文件中对数据源的设定.

  • sphinx:field

可选元素,sphinx:schema的子元素。声明一个全文数据字段。唯一可识别的属性是“name”,它指定了字段的名称,后续数据文档中具有此名称的元素的数据都被当作待检索的全文数据对待.

  • sphinx:attr

O可选元素,sphinx:schema的子元素。用于声明具体属性。其已知的属性有:

  1. "name",设定该属性名称,后续文档中具有该名称的元素应被当作一个属性对待。.
  2. "type",设定该属性的类型。可能的类型包括 "int", "timestamp", "str2ordinal", "bool", "float" 和 "multi".
  3. "bits",设定“int”型属性的宽度,有效值为1到32.
  4. "default",设定该属性的默认值,若后续文档中没有指定这个属性,则使用此默认值。
  • sphinx:document

必须出现的元素,必须是sphinx:docset的子元素。包含任意多的其他元素,这些子元素带有待索引的数据字段和属性值,而这些数据字段或属性值既可以是用sphinx:field和sphinx:attr元素声明的,也可以在配置文件中声明。唯一的已知属性是“id”,它必须包含一个唯一的整型的文档ID。

参考来源[ ]

Sphinx使用手册导航

安装

支持的操作系统|需要的工具|在Linux、BSD上安装Sphinx|在Windows上安装Sphinx|已知的安装问题和解决办法|Sphinx快速入门教程

建立索引

数据源|属性|MVA|索引|源数据的限制|字符集、大小写转换和转换表|SQL 数据源|xmlpipe 数据源|xmlpipe2 数据源|Python 数据源|实时索引更新|索引合并

搜索

匹配模式|布尔查询语法|扩展查询语法|权值计算|排序模式|结果分组|分布式搜索|searchd查询日志格式|MySQL 协议支持与SphinxQL

命令行工具参考

indexer命令参考|searchd命令参考|search命令参考|spelldump命令参考|indextool命令参考

MySQL存储引擎

SphinxSE 概览|安装 SphinxSE|使用 SphinxSE|通过 MySQL 生成片段