2012-02-29 59 views
0

嗨,我有一個像下面的表格結構,我需要做簡單的用戶搜索, 任何一個可以給我建議,我怎麼也得設計Solr模式,這和查詢SOLR架構設計和搜索

userid - name 

    1  - pot tot 
    2  - peter kate 
    3  - jack henry  
    4  - jack cope 

id - userid - friendsid (foreignkey table) 

    1 - 1  - jack henry 
    2 - 1  - peter kate 
    3 - 3  - pot tot 
    4 - 2  - pot tot 

時用戶1 - (pot tot)正在搜索「jack」,因爲他是共同的朋友,所以他必須看到「jack henry」作爲第一個結果。我們有像facebook一樣的用戶搜索順序的朋友,共同朋友(計數)

回答

2

你主要想處理關係和搜索。
不知道Solr是否能夠爲您提供開箱即用的關係部件。

您可以嘗試檢查Neo4j這是圖形數據庫,並可以幫助您遍歷關係和搜索。

+0

+1爲Neo4j,這是這樣的查詢的完美。 – aitchnyu 2012-03-01 06:56:30

0

我對Neo4j一無所知,但我確實認爲上述海報有一點意義。我不確定這是Solr的設計。儘管如此,你可能會嘗試的東西:

<field name="user_id" type="slong" indexed="true" stored="true" required="true" /> 
<field name="user_name" type="text" indexed="true" stored="true" required="true" /> 
<field name="friend_id" type="slong" indexed="true" stored="true" required="false" multiValued="true" /> 

這允許每個用戶在Solr索引中有0到很多朋友。如果你有一個名爲「Jack Henry」的user_id爲3的用戶,那麼找到那些是Jack Henry朋友的用戶就像「?q = friend_id:3」一樣簡單。如果您有另一個用戶名爲「Peter Kate」,其user_id爲2,那麼找到Jack Henry和Peter Kate的共同朋友可以按如下方式完成:「?q = friend_id:(2 AND 3)」。希望這可以幫助。