我们有制造商零件的 Solr 文档,其中每个零件都可从 100 家供应商处获得。这些供应商存储在每个 Mfg 零件文档中的多字段中。
客户根据零件标题和描述通过关键字搜索我们的零件,其中每个客户都有一个他们不允许查看的供应商的唯一列表。例如:
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
我们的一个想法是重组我们的文档,以便每个供应商制造零件有一个文档,而不是每个制造零件,但结果将是一个 3000 倍大小的索引!!!我们的许多制造零件有 1000 家或更多供应商。目前我们将排除列表推入过滤器查询,但它变得相当
我们已经在 Solr 4 中看到了 Solr“加入”,但由于这是一个每周产生数百万美元的生产站点,我们无法使用 alpha 或 beta 版本的软件。
最后,我们目前在过滤器查询中使用供应商的包含列表,这很有效,但由于包含列表在 1000 中,因此速度非常慢。我们宁愿使用排除列表,但无法确定要使用的查询或模式。
任何想法,任何人?
提前谢谢克里斯