Solr - 限制更像这个结果

Avr*_*zky 5 lucene solr

比方说,我有一个特别的毛衣code:blue-sweatercolor:blue.我想找到使用该description领域的类似产品,其约束条件是类似的产品不是blue(-color:blue).

来自Solr维基:

如果你想过滤MoreLikeThis给出的类似结果,你必须使用MoreLikeThisHandler.它会将类似的文档结果集视为主要结果集,因此将对其应用指定的过滤器(fq).如果使用MoreLikeThisComponent并应用查询过滤器,它将应用于主查询(QueryComponent)返回的结果集,而不是应用于MoreLikeThisComponent返回的结果集.

这些是我正在使用的参数; 所述qtPARAM设置请求处理程序为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"
    }
Run Code Online (Sandbox Code Playgroud)

问题是我只能指定FilterQuery一次参数,它fq为初始查询("code:"blue-sweater")和MoreLikeThis结果设置.

由于过滤器-color:blue排除了我的初始查询(蓝色毛衣),我没有更多喜欢这个结果.我该如何解决这个问题?

如果核心中的唯一产品是color:blue,我仍然想要归还它们,但它们应该是可能结果的底部.

编辑

我做了一些挖掘,似乎提升MoreLikeThis查询的唯一方法是mlt.qf:

使用与DisMax Query Parser使用的格式相同的格式查询字段及其提升.这些字段也必须在mlt.fl中指定.(来源)

我试图使用具有值约束(如in_stock:[* TO 10])的DisMax解析器进行常规查询,但是对字段值的约束将被完全忽略.你只能对一个字段(color^2)进行简单的提升.

因此,似乎这是对MoreLike的限制.这依赖于DisMax解析器而不是EdisMax解析器.