メーカー部品のSolrドキュメントがあり、各部品は何百ものサプライヤーから入手できます。これらのサプライヤは、複数フィールドの各製造部品ドキュメント内に保存されます。
顧客は、部品のタイトルと説明に対してキーワードで部品を検索します。各顧客には、表示が許可されていないサプライヤーの固有のリストがあります。例えば:
solr docs:
doc_id = 1, mfg_part = abc, suppliers = s1, s2, s3, s4, s5, s6, s7
doc_id = 2, mfg_part = def, suppliers = s4, s5, s6, s7
doc_id = 3, mfg_part = ghi, suppliers = s4
doc_id = 4, mfg_part = jkl, suppliers = s1, s2, s3, s4
doc_id = 5, mfg_part = mno, suppliers = s1, s2, s3, s5
customer A: exclude suppliers: s4, s5, s6, s7
customer B: exclude suppliers: s1, s2, s3, s4
when customer A searches, documents 2 & 3 should not be returned in any
result set
when customer B searches, documents 3 & 4 should not be returned in any
result set
ある考えの 1 つは、製造部品ごとではなく、サプライヤーの製造部品ごとに 1 つのドキュメントが存在するようにドキュメントを再構築することですが、結果はサイズの 3000 倍のインデックスになります!!! 当社の製造部品の多くには、1000 以上のサプライヤーがいます。現在、除外リストをフィルタ クエリに押し込んでいますが、かなり複雑になってきています。
Solr 4 で Solr の「参加」を見てきましたが、これは週に数百万ドルを生み出す生産サイトであるため、アルファ版またはベータ版のソフトウェアを使用する余裕はありません。
最後に、現在フィルター クエリでサプライヤの INclusion リストを使用していますが、これは機能しますが、包含リストが 1000 年代にあるため、非常に遅くなります。EXclusion リストを使用したいのですが、使用するクエリまたはスキーマがわかりません。
アイデアはありますか?
前もってありがとうクリス