2014-09-02 33 views
0

Sphinx xmlpipe2是否支持嵌套XML strcuture進行搜索?例如,像這樣的東西。獅身人面像中的嵌套XML搜索支持?

<sphinx:document id="1234"> 
<attr1>some data</attr1> 
<attr2>some more</attr2> 
<tags> 
    <tag id="23">One</tag> 
    <tag id="24">Two</tag> 
</tags> 
<misc>some more info</misc> 
</sphinx:document> 

如果不是這樣,那麼以有效搜索方式存儲關聯數據的最佳方法是什麼?

回答

0

總之沒有。

應該能夠

<tags>23,24</tags> 

如果你定義的標籤,在該模式中多值屬性。

如果希望能夠對其進行搜索的全文,可以把它們放在一個正常的領域也

<tag_ids>23,24</tag_ids> 
<tags>One,Two</tags> 

還可以標記一個字符串屬性,所以可以得到值了。只要確保通過tag_id推送標籤 - 因爲sphinx在內部將MVA分類爲數字順序。

+0

Thanks @barryhunter。但標籤只是一個簡單的例子,實際情況要複雜得多。更好的比喻是列表,評論和評論,其中列表可以有許多評論,每個評論可以有許多評論。如果搜索字詞與列表中的任何內容匹配,則爲評論和/或評論評論,然後列表應該返回搜索。並且可以在這三個實體的任何一列上過濾搜索。是否有意義? – yetanotherse 2014-09-02 14:19:18

+0

完全一樣。就像標籤示例將它們摺疊爲一個字段的單個字符串一樣,對您的評論和評論也一樣。無論如何,獅身人面像索引是平坦的和非等級的,所以你需要在某個時刻「平坦化」數據。生成XML時可能也是如此。 – barryhunter 2014-09-02 18:07:13

+0

再次感謝,明白了你的觀點。最後一個問題是 - 是否可以爲同一個屬性使用多個標籤,而不是使用MVA,例如 '一個 兩個' 我有一些領域JSON,如果我去MVA途徑,我需要俱樂部這些領域也是如此。考慮這一點 - 我有一個JSON字段,可以存儲3個屬性,例如a,b和c格式爲{「a」:x,「b」:y,「c」:z},如果有3條評論,則a的值爲。 b和c最有可能不同。如果將屬性(a,b和c)過濾,如果我將它們存儲爲MVA(如果我俱樂部json字段,我懷疑即使搜索也會起作用) – yetanotherse 2014-09-03 04:31:45