WIKI使用導(dǎo)航
站長百科導(dǎo)航
站長專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機
- cPanel
- 網(wǎng)址導(dǎo)航專題
- 云計算
- 微博營銷
- 虛擬主機管理系統(tǒng)
- 開放平臺
- WIKI程序與應(yīng)用
- 美國十大主機
Sphinx/xmlpipe2 數(shù)據(jù)源
xmlpipe2使你可以用另一種自定義的XML格式向Sphinx傳輸任意文本數(shù)據(jù)和屬性數(shù)據(jù)。數(shù)據(jù)模式(即數(shù)據(jù)字段的集合或者屬性集)可以由XML流本身指定,也可以在配置文件中數(shù)據(jù)源的配置部分中指定。
在對xmlpipe2數(shù)據(jù)源做索引時,索引器運行指定的命令,打開一個連接到前述命令標準輸出的管道,并等待接受具有正確格式的XML數(shù)據(jù)流。以下是一個數(shù)據(jù)流的樣本:
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 randomized order</subject>
<misc>some undeclared element</misc>
</sphinx:document>
</sphinx:docset>
任意多的數(shù)據(jù)字段和屬性都是允許的。數(shù)據(jù)字段和屬性在同一文檔元素中出現(xiàn)的先后順序沒有特別要求。。單一字段數(shù)據(jù)的最大長度有限制,超過2MB的數(shù)據(jù)會被截短到2MB(但這個限制可以在配置文件中數(shù)據(jù)源部分中修改)。
XML數(shù)據(jù)模式(Schema),即數(shù)據(jù)字段和屬性的完整列表,必須在任何文檔被分析之前就確定。這既可以在配置文件中用xmlpipe_field和xmlpipe_attr_XXX選項指定,也可以就在數(shù)據(jù)流中用<sphinx:schema>元素指定。 <sphinx:schema>元素是可選的,但如果出現(xiàn),就必須是<sphinx:docset>元素的第一個子元素。如果沒有在數(shù)據(jù)流中內(nèi)嵌的數(shù)據(jù)模式定義,配置文件中的相關(guān)設(shè)置就會生效,否則數(shù)據(jù)流內(nèi)嵌的設(shè)置被優(yōu)先采用。
未知類型的標簽(既不是數(shù)據(jù)字段,也不是屬性的標簽)會被忽略,但會給出警告。在上面的例子中,<misc>標簽會被忽略。所有嵌入在其他標簽中的標簽及其屬性都會被無視(例如上述例子中嵌入在<subject>標簽中的標簽)
支持輸入數(shù)據(jù)流的何種字符編碼取決于系統(tǒng)中是否安裝了iconv. xmlpipe2是用 libexpat解析器解析的,該解析器內(nèi)置對 US-ASCII, UTF-8, UTF-8 和一些 UTF-16變體的支持. Sphinx的 configure 腳本也會檢查 libiconv 是否存在并使用它來處理其他的字符編碼。 libexpat 也隱含的要求在Sphinx端使用UTF-8,因為它返回的分析過的數(shù)據(jù)總是UTF-8的。
xmlpipe2可以識別的XML元素(標簽)(以及前述元素可用的屬性)如下:
- sphinx:docset
頂級元素,用于標明并包括xmlpipe2文檔.
- sphinx:schema
可選元素,它要么是sphinx:docset的第一個子元素,要么干脆不出現(xiàn)。聲明文檔的模式。包括數(shù)據(jù)字段和屬性的聲明。若此元素出現(xiàn),則它會覆蓋配置文件中對數(shù)據(jù)源的設(shè)定.
- sphinx:field
可選元素,sphinx:schema的子元素。聲明一個全文數(shù)據(jù)字段。唯一可識別的屬性是“name”,它指定了字段的名稱,后續(xù)數(shù)據(jù)文檔中具有此名稱的元素的數(shù)據(jù)都被當作待檢索的全文數(shù)據(jù)對待.
- sphinx:attr
O可選元素,sphinx:schema的子元素。用于聲明具體屬性。其已知的屬性有:
- "name",設(shè)定該屬性名稱,后續(xù)文檔中具有該名稱的元素應(yīng)被當作一個屬性對待。.
- "type",設(shè)定該屬性的類型??赡艿念愋桶?"int", "timestamp", "str2ordinal", "bool", "float" 和 "multi".
- "bits",設(shè)定“int”型屬性的寬度,有效值為1到32.
- "default",設(shè)定該屬性的默認值,若后續(xù)文檔中沒有指定這個屬性,則使用此默認值。
- sphinx:document
必須出現(xiàn)的元素,必須是sphinx:docset的子元素。包含任意多的其他元素,這些子元素帶有待索引的數(shù)據(jù)字段和屬性值,而這些數(shù)據(jù)字段或?qū)傩灾导瓤梢允怯胹phinx:field和sphinx:attr元素聲明的,也可以在配置文件中聲明。唯一的已知屬性是“id”,它必須包含一個唯一的整型的文檔ID。