2012-02-29 8 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 henry» как 1-й результат, потому что он является общим другом. у нас есть требование, как facebook, как пользовательский поиск по друзьям, друзьям (0)

ответ

2

Вы первыми хотите иметь дело с отношениями и поисками.
Не уверен, что Solr сможет получить детали отношений из коробки.

Можете ли вы проверить наличие Neo4j, который представляет собой базу данных графов и поможет вам в общении и поиске.

+0

+1 для Neo4j, который идеально подходит для таких запросов. – aitchnyu

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" /> 

Это позволяет каждому пользователю иметь 0 для многих друзей в индексе Solr. Если у вас есть пользователь с именем «Jack Henry» с user_id из 3, то поиск тех, кто является друзьями Джека Генри, будет таким же простым, как «? Q = friend_id: 3». Если у вас есть другой пользователь с именем «Peter Kate» с user_id из 2, то найти общих друзей Джека Генри и Питера Кейт можно следующим образом: «? Q = friend_id: (2 И 3)». Надеюсь это поможет.

Смежные вопросы