Search 在solr中搜索特定关键字时在顶部显示特定文档

Search 在solr中搜索特定关键字时在顶部显示特定文档,search,plugins,solr,mapping,relevance,Search,Plugins,Solr,Mapping,Relevance,假设,我的网站上列出了1000个服装卖家(S1….S1000)。由于所有的卖家都向我支付了一定的金额,我给了他们相同的体重年龄,结果是基于相关性显示的 现在,我计划从premium service开始,我想在搜索结果的每个关键字的顶部列出一个供应商。比如说,S1已经为关键字“牛仔裤”提供了高级搜索,因此如果用户搜索“牛仔裤”,我首先希望在顶部显示此供应商,然后根据相关性显示其他供应商。另外,这项高级服务只提供一个月。所以,另一家供应商说S2可以在下个月使用这项服务,以此类推 是否有任何插件,我可

假设,我的网站上列出了1000个服装卖家(S1….S1000)。由于所有的卖家都向我支付了一定的金额,我给了他们相同的体重年龄,结果是基于相关性显示的

现在,我计划从premium service开始,我想在搜索结果的每个关键字的顶部列出一个供应商。比如说,S1已经为关键字“牛仔裤”提供了高级搜索,因此如果用户搜索“牛仔裤”,我首先希望在顶部显示此供应商,然后根据相关性显示其他供应商。另外,这项高级服务只提供一个月。所以,另一家供应商说S2可以在下个月使用这项服务,以此类推

是否有任何插件,我可以存储哪个供应商应该显示哪个关键字。我甚至可以通过两个查询来满足期望的结果


请建议

我认为查询提升组件是您的朋友,您可以为任何给定的查询配置哪些文档(以及哪些供应商)排在第一位,请参阅


如果工作量太大,还可以在文档中添加一个新的布尔字段,指示文档是否要升级,并在查询中首先按此字段排序(因此升级的文档位于顶部),然后按分数排序(因此大多数相关文档紧跟在升级的文档之后).

您也可以使用重排序成分:

使用这样的查询:

q=jean&rq={!rerank reRankQuery=$rqq reRankDocs=1000 reRankWeight=3}&rqq=(brand:S1)
查询结果的前1000名将被重新排序,这要感谢添加到包含值为S1的字段品牌的文档中的提升(共3个)

它可能很有用,但在您的情况下,我认为QueryEvationComponent是最好的


请小心,重新分级仅在版本4.9之后才可用。

QueryEvation组件将架构的唯一键作为id的参数。但在我的情况下并非如此。我是否可以将任何其他字段作为此组件的id。我不这么认为-文档说uniqueKey字段必须是字符串。文档中没有可以用作唯一键的字段?架构中只能有一个唯一字段。架构中的此卖方字段不是唯一字段。实际上,这些卖家的产品ID是唯一的ID。请选择其他解决方案。我建议的另一个解决方案如何:在文档中添加一个新的布尔字段,指示文档是否要升级,并在查询中,首先按此字段排序(因此升级的文档位于顶部),然后按分数排序(因此大多数相关文档紧跟在升级的文档之后).我的意思是在每个文档中添加一个布尔字段;对于促销卖家的产品,布尔值为true,否则为false。无论卖家升职与否,您都会更新索引;这样做相当简单。