ユーザーに基づくソルの検索

私はsolrへの初心者です。だから私と一緒に耐えてください。

ユースケース

  • ユーザーは自分の写真を友だちや一般公開したり、非公開にすることができます。
  • ユーザーは写真や人物を検索できます(公共の写真のみを表示し、彼と共有する必要があります)。

I have denormalized my relational data to solr schema. I have merged the user object & photo object into solr schema Schema

そう、

  • ユーザージャック(ユーザー3)が「ピクニック」を検索している場合、写真1は表示されず、写真2が表示されます。
  • ユーザーvenuが「ピクニック」を検索している場合、彼はphoto_1とphoto_2を表示するはずです。

どのようにしてsolrにfriends_ids、share_levelフィールドを調べることができますか?私はファセットフィールドで行うことができますか?ダイナミックフィールドはこのケースで機能しますか?私はいくつかのチュートリアルを読んだが、私は明確な画像を得ていない。

あなたは、これについていくつかの光を当ててくれることを願っています。私が前進できるように私はこれが可能であることを望む。

前もって感謝します!

0

1 答え

可能な値は private、public、friends share_level の文字列フィールドが必要です。

また、 friends_ids にはmultiValuedフィールドが必要です 現在のCSV形式ではなく各ユーザーIDを格納する必要があります

注:この列のタイプを改訂する必要があります、決して mysqlでCSVを使用する、適切なエンティティの関係を使用する

ですから、フィールドを準備して、インデックスを完成させたら、
写真を検索するにはちょうどなります:

+name:$search +(share_level:public (+share_level:friends +friends_ids:$uid))

$search = picnic
$uid = 3 (jack)
2
追加された
迅速な返信をありがとう!私はすぐにあなたに戻ってきます!私はmysqlでcsv形式を使用していない、私はユーザーとfrienshipテーブルの間に多くの関係が1つあります
追加された 著者 Venu,
私は同じ検索のためにユーザーを取得しようとしました。 + name:venu(-share_level:[* TO *] OR +(share_level:public(+ share_level:friends + friend_ids:1)))。
追加された 著者 Venu,
確かに。あなたの助けをありがとう!本当に私を助けました!
追加された 著者 Venu,
クエリアナライザを使用すると、この + name:venu +(...)
追加された 著者 ajreal,