Разработка и поиск схемы SOLR - PullRequest
0 голосов
/ 29 февраля 2012

Привет, у меня как в следующей структуре таблиц, где мне нужно выполнить простой поиск пользователей, может ли кто-нибудь подсказать мне, как мне разработать схему 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 ]

2 голосов
/ 01 марта 2012

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

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

0 голосов
/ 01 марта 2012

Я ничего не знаю о 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.Если у вас есть пользователь по имени «Джек Генри» с идентификатором user_id, равным 3, то найти друзей Джека Генри будет так же просто, как «? Q = friend_id: 3».Если у вас есть другой пользователь с именем «Peter Kate» с user_id, равным 2, то найти общих друзей Джека Генри и Питера Kate можно следующим образом: «? Q = friend_id: (2 AND 3)».Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...