2012-02-29 71 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)”。希望这可以帮助。