Solr 5.3 自动完成:建议仅限于用户角色、位置、活动等

Solr 5.3 autocompletion: suggestions restricted to user role, location, campaign etc

我们正在努力为电子商务网站实施自动完成功能。 我们目前最喜欢 SuggestComponent 实现,但可能会尝试一些其他选项(FacetComponent,...)。 我们有一个包含单语内容的核心。

我们的问题是:自动完成查询建议需要限制到几个具有各自要求的段,例如用户角色(新客户、A 组的特殊客户等),活动(在特殊活动期间提供的产品,闪购...),地理目标群体

我一直在研究网络,但不幸的是,我还没有找到针对此用例的任何解决方案。它实际上超出了根据用户角色对文档的访问控制:甚至不能有仅导致受限内容的术语建议。

如果有人能给我一些提示、建议和最佳实践,我将非常高兴。提前致谢!

如果在建议之上有很多业务规则,我建议您为自动完成要求创建一个单独的集合。这将允许您将任何标识符附加到任何可以完成的术语,并且您可以过滤掉具有常规 fq 子句的那些。它还允许您像预期的那样应用提升,以便您可以在活动有效时提升活动中的这些产品。

通常,您会有一个 ngram-ed 或 edgengram-ed 字段,其中包含可以自动完成的术语(实际搜索)、关于文档的元数据和参考,以便您可以如果确实被选中,请查找文档。

如果我们以亚马逊为例,您将拥有要自动完成的产品/字符串的名称、其部门(books/music/tv/regular 搜索 string/etc)、产品 ID 和例如对象的相关照片。

该集合将专门用于自动完成。更新或添加产品时,您会将文档提交到主索引,然后将自动完成信息提交到二级索引。然后可以为自动完成附加适当的元数据 (role/campaigns/geotarget),并且您可以完全控制自动完成库中的内容。

另一种选择是将其嵌入到每个产品中并使用单独的 ngram/edgengram 字段进行自动完成 - 这会增加主索引的大小,这可能并不理想,但它的工作原理与单独收集策略,无需将文件提交到两个集合。