2012-01-11 6 views
0

私は数百万のドキュメントを持つSOLRインスタンスを持っています。スキーマは明確に定義されています(つまり、すべてのフィールドが入力されます)。すべての検索/ファセッティングなどは問題なく動作します。SOLR分析クエリ

しかし、現在のバージョンではサポートされていないと思う新しいことをしようとしています。私はJettyを使用してWindows上でSOLR 3.5を実行しています。 Pウッド、ロンドン、監督:

ID、 名、 市は、 JobTitle

は、私のようなサンプルデータを持っているとしましょう:

質問を簡素化するためには、私の文書のようないくつかのフィールドが含まれています J・スミス、ロンドン、プロジェクトマネージャ Dロック、ブライトン、開発者 K Pracy、ロンドン、開発者

例のために、これはミリアンペアであると仮定人々がお互いを見つけることを可能にするシステムです。また、Idが一意のIDであると仮定します。

私は「サンプリング」クエリを書いて、どの基準でも他のレコードと一致するレコードのセットを見つける必要があります。

したがって、たとえば、私のような基準を定義したい:私differfent役職名と異なる都市の人々を一致する人を探す

を:

上記のスキーマは、RDBMS、SQL表だった場合(人々を言うことができます)、おおよそのクエリはこのようなものになるだろう:

 
SELECT P.Id, 
    (
     SELECT COUNT(1) 
     FROM People PI Where PI.Id != P.Id 
     AND PI.City != P.City 
     AND PI.JobTitle != P.JobTitle 
    ) AS FindCount 
FROM 
People P 

まあ、クエリが実行可能ではないかもしれないが、あなたのアイデアを得ます。とにかく、Findcountはxより大きくyより小さくなければならないという要件もあります。

これがSOLRで可能かどうか、またはこれがSOLRのためではないことを誰かに教えてもらえますか?私はSOLR 4にJoin演算子が付属していることを知っていますが、それは私のように使用を制限するIN節のようです。たとえば、一致するIDがカウントではなく上記のクエリにも必要であると考えてください。

すべてのお役に立ちました。

おかげで、 IMMI

私は1つのクエリでなんとかだとは思わないし、あなたはすべての人のための独立したクエリとして「内側の選択」を実行しているで終わるかもしれない

答えて