Solr-仅限此结果约束

时间:2018-12-10 18:14:21

标签: solr lucene

假设我有一件code:blue-sweater的特殊毛衣,即color:blue。我想使用description字段查找类似产品,但要限制类似产品不是蓝色(-color:blue)。

来自Solr wiki

  

如果您要过滤MoreLikeThis给出的相似结果,则您   必须使用MoreLikeThisHandler。它将考虑类似   文档结果集为主要结果,因此将应用指定的结果   对其进行过滤(fq)。如果您使用MoreLikeThisComponent并应用   查询过滤条件,它将应用于由   主查询(QueryComponent),而不是主查询返回的查询   MoreLikeThisComponent。

这些是我正在使用的参数; qt参数将请求处理程序设置为MoreLikeThis

    {
      q: "code:"blue-sweater"",
      qt: "mlt",
      mlt: "true",
      fl: "description,brand,gender,price",
      mlt.boost: "true",
      mlt.fl: "description",
      fq: "-color:"blue"",
      rows: "6",
      mlt.mintf: "0",
      mlt.mindf: "0"
    }

问题在于,我只能指定一次FilterQuery参数,从而为初始查询(“代码:” blue-sweater”)和“更多类似结果”都设置fq。 / p>

由于-color:blue的过滤器不包含我的初始查询(蓝色毛衣),因此我没有MoreLikeThis结果。我该如何解决?

如果核心产品中唯一的产品是color:blue,我仍然想退货,但是它们应该位于可能结果的底部。

修改

我做了一些挖掘工作,看来增强MoreLikeThis查询的唯一方法是使用mlt.qf

  

查询字段及其增强内容的格式与   DisMax查询解析器。这些字段也必须在   mlt.fl (source

我尝试使用具有值约束(例如in_stock:[* TO 10])的DisMax解析器进行常规查询,但是对字段值的约束被完全忽略。您只能在字段(color^2)上进行普通增强。

因此,这似乎是MoreLikeThis的限制,它依赖于DisMax解析器而不是EdisMax解析器。

0 个答案:

没有答案